Mercurial > dive4elements > river
comparison 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 |
comparison
equal
deleted
inserted
replaced
648:d4c4fefb095b | 649:44175d4720f8 |
---|---|
343 double [] ws, | 343 double [] ws, |
344 double [] qs, | 344 double [] qs, |
345 QPosition qPosition, | 345 QPosition qPosition, |
346 LinearRemap remap | 346 LinearRemap remap |
347 ) { | 347 ) { |
348 interpolate(kms, ws, qs, qPosition, remap, 0, kms.length); | |
349 } | |
350 | |
351 public void interpolate( | |
352 double [] kms, | |
353 double [] ws, | |
354 double [] qs, | |
355 QPosition qPosition, | |
356 LinearRemap remap, | |
357 int startIndex, | |
358 int length | |
359 ) { | |
348 int R1 = rows.size()-1; | 360 int R1 = rows.size()-1; |
349 | 361 |
350 Row kmKey = new Row(); | 362 Row kmKey = new Row(); |
351 | 363 |
352 QPosition nPosition = new QPosition(); | 364 QPosition nPosition = new QPosition(); |
353 | 365 |
354 for (int i = 0; i < kms.length; ++i) { | 366 for (int i = startIndex, end = startIndex+length; i < end; ++i) { |
355 kmKey.km = kms[i]; | 367 kmKey.km = kms[i]; |
356 | 368 |
357 qs[i] = remap.eval(kms[i], getQ(qPosition, kms[i])); | 369 qs[i] = remap.eval(kms[i], getQ(qPosition, kms[i])); |
358 | 370 |
359 if (getQPosition(kms[i], qs[i], nPosition) == null) { | 371 if (getQPosition(kms[i], qs[i], nPosition) == null) { |
387 double referenceKm, | 399 double referenceKm, |
388 double [] kms, | 400 double [] kms, |
389 double [] ws, | 401 double [] ws, |
390 double [] qs | 402 double [] qs |
391 ) { | 403 ) { |
404 return interpolate(q, referenceKm, kms, ws, qs, 0, kms.length); | |
405 } | |
406 | |
407 public QPosition interpolate( | |
408 double q, | |
409 double referenceKm, | |
410 double [] kms, | |
411 double [] ws, | |
412 double [] qs, | |
413 int startIndex, | |
414 int length | |
415 ) { | |
392 QPosition qPosition = getQPosition(referenceKm, q); | 416 QPosition qPosition = getQPosition(referenceKm, q); |
393 | 417 |
394 if (qPosition == null) { | 418 if (qPosition == null) { |
395 // we cannot locate q at km | 419 // we cannot locate q at km |
396 return null; | 420 return null; |
398 | 422 |
399 Row kmKey = new Row(); | 423 Row kmKey = new Row(); |
400 | 424 |
401 int R1 = rows.size()-1; | 425 int R1 = rows.size()-1; |
402 | 426 |
403 for (int i = 0; i < kms.length; ++i) { | 427 for (int i = startIndex, end = startIndex+length; i < end; ++i) { |
404 kmKey.km = kms[i]; | 428 kmKey.km = kms[i]; |
405 | 429 |
406 int rowIndex = Collections.binarySearch(rows, kmKey); | 430 int rowIndex = Collections.binarySearch(rows, kmKey); |
407 | 431 |
408 qs[i] = getQ(qPosition, kms[i]); | 432 qs[i] = getQ(qPosition, kms[i]); |