Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java @ 649:44175d4720f8
Fix crashes in back jump correction.
flys-artifacts/trunk@2038 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 01 Jun 2011 09:57:22 +0000 |
parents | 433f67a076aa |
children | 913b52064449 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java Wed Jun 01 09:18:00 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java Wed Jun 01 09:57:22 2011 +0000 @@ -345,13 +345,25 @@ QPosition qPosition, LinearRemap remap ) { + interpolate(kms, ws, qs, qPosition, remap, 0, kms.length); + } + + public void interpolate( + double [] kms, + double [] ws, + double [] qs, + QPosition qPosition, + LinearRemap remap, + int startIndex, + int length + ) { int R1 = rows.size()-1; Row kmKey = new Row(); QPosition nPosition = new QPosition(); - for (int i = 0; i < kms.length; ++i) { + for (int i = startIndex, end = startIndex+length; i < end; ++i) { kmKey.km = kms[i]; qs[i] = remap.eval(kms[i], getQ(qPosition, kms[i])); @@ -389,6 +401,18 @@ double [] ws, double [] qs ) { + return interpolate(q, referenceKm, kms, ws, qs, 0, kms.length); + } + + public QPosition interpolate( + double q, + double referenceKm, + double [] kms, + double [] ws, + double [] qs, + int startIndex, + int length + ) { QPosition qPosition = getQPosition(referenceKm, q); if (qPosition == null) { @@ -400,7 +424,7 @@ int R1 = rows.size()-1; - for (int i = 0; i < kms.length; ++i) { + for (int i = startIndex, end = startIndex+length; i < end; ++i) { kmKey.km = kms[i]; int rowIndex = Collections.binarySearch(rows, kmKey);