sascha@2610: package de.intevation.flys.artifacts.model; sascha@2610: sascha@2610: import de.intevation.flys.artifacts.math.Linear; sascha@2610: sascha@2610: import java.util.Arrays; sascha@2610: sascha@2610: import java.io.Serializable; sascha@2610: sascha@2610: public class FixingsColumn sascha@2610: implements Serializable sascha@2610: { sascha@2610: protected int columnId; sascha@2610: sascha@2610: protected double [] kms; sascha@2610: protected double [] ws; sascha@2610: sascha@2610: protected QRangeTree qs; sascha@2610: sascha@2610: public FixingsColumn() { sascha@2610: } sascha@2610: sascha@2610: public FixingsColumn( sascha@2610: int columnId, sascha@2610: double [] kms, sascha@2610: double [] ws sascha@2610: ) { sascha@2610: this.columnId = columnId; sascha@2610: this.kms = kms; sascha@2610: this.ws = ws; sascha@2610: } sascha@2610: sascha@2610: public int getColumnId() { sascha@2610: return columnId; sascha@2610: } sascha@2610: sascha@2610: public double getW(double km) { sascha@2610: sascha@2610: if (km < kms[0] || km > kms[kms.length-1]) { sascha@2610: return Double.NaN; sascha@2610: } sascha@2610: sascha@2610: int idx = Arrays.binarySearch(kms, km); sascha@2610: sascha@2610: if (idx >= 0) return ws[idx]; sascha@2610: sascha@2610: idx = -idx - 1; sascha@2610: sascha@2610: return Linear.linear(km, kms[idx], kms[idx+1], ws[idx], ws[idx+1]); sascha@2610: } sascha@2610: sascha@2610: public double getQ(double km) { sascha@2610: return qs.findQ(km); sascha@2610: } sascha@2610: } sascha@2610: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :