Mercurial > dive4elements > river
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; |