Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/FixingsColumn.java @ 5415:5bac3e75f59c
WaterlevelSelectState: Avoid npe with extreme results.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 26 Mar 2013 09:40:05 +0100 |
parents | fe987587ebc9 |
children |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import de.intevation.flys.artifacts.math.Linear; import java.util.Arrays; import java.io.Serializable; public class FixingsColumn implements Serializable { protected double [] kms; protected double [] ws; protected QRangeTree qs; public FixingsColumn() { } public FixingsColumn( double [] kms, double [] ws, QRangeTree qs ) { this.kms = kms; this.ws = ws; this.qs = qs; } public boolean getW(double km, double [] w) { return getW(km, w, 0); } public boolean getW(double km, double [] w, int index) { if (kms.length == 0 || km < kms[0] || km > kms[kms.length-1]) { w[index] = Double.NaN; return true; } int idx = Arrays.binarySearch(kms, km); if (idx >= 0) { w[index] = ws[idx]; return true; } idx = -idx - 1; w[index] = Linear.linear(km, kms[idx-1], kms[idx], ws[idx-1], ws[idx]); return false; } public double getQ(double km) { return qs.findQ(km); } public QRangeTree getQRanges() { return qs; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :