comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/StaticWKmsArtifact.java @ 3903:0623cdf32b38

Document issue880 flys-artifacts/trunk@5568 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Sat, 22 Sep 2012 09:55:01 +0000
parents afc7bfb4800b
children fe70edde0897
comparison
equal deleted inserted replaced
3902:da48e33f4241 3903:0623cdf32b38
301 * @param prev the previous available input km (-1 if unavailable). 301 * @param prev the previous available input km (-1 if unavailable).
302 * 302 *
303 * @return W in wkms that is closer to km than to next and prev, or Double.NaN. 303 * @return W in wkms that is closer to km than to next and prev, or Double.NaN.
304 */ 304 */
305 public double getWAtCloseKm(WKms wkms, double km, double next, double prev) { 305 public double getWAtCloseKm(WKms wkms, double km, double next, double prev) {
306 // TODO symbolic "-1" pr next/prev is a bad idea (tm), as we compare
307 // distances to these values later.
308 // TODO issue888
309
306 int size = wkms.size(); 310 int size = wkms.size();
307 for (int i = 0; i < size; i++) { 311 for (int i = 0; i < size; i++) {
308 double wkmsKm = wkms.getKm(i); 312 double wkmsKm = wkms.getKm(i);
309 double dist = Distance.distance(wkmsKm, km); 313 double dist = Distance.distance(wkmsKm, km);
310 if ((prev == -1d || dist <= Distance.distance(wkmsKm, prev)) 314 if (dist == 0d) {
311 && (next == -1d || dist <= Distance.distance(wkmsKm, next))) { 315 return wkms.getW(i);
316 }
317
318 // Problematic Cases:
319 // X == km , | and | == prev and next, (?) == wkmsKm
320 //
321 // Standard case:
322 // ----------|----X-----|-------
323 // (1) (2) (3) (4)
324 //
325 // With prev==-1
326 // -1 ------X-------|------
327 // (5) (6) (7)
328 //
329 // With next==-1
330 //
331 // ---|-----X----- -1
332 // (8) (9) (10)
333
334 if (dist <= Distance.distance(wkmsKm, prev)
335 && dist <= Distance.distance(wkmsKm, next)) {
312 return wkms.getW(i); 336 return wkms.getW(i);
313 } 337 }
314 } 338 }
315 339
316 return Double.NaN; 340 return Double.NaN;

http://dive4elements.wald.intevation.org