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]);

http://dive4elements.wald.intevation.org