Mercurial > dive4elements > river
comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/WstValueTable.java @ 3736:da1969b05292
WST tables: Added interpolation of tabulated values only.
flys-artifacts/trunk@5411 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sun, 09 Sep 2012 15:29:06 +0000 |
parents | 4c4ec9e9650a |
children | 51f76225823b |
comparison
equal
deleted
inserted
replaced
3735:f48396deca91 | 3736:da1969b05292 |
---|---|
1215 } | 1215 } |
1216 double q1 = columns[index-1].getQRangeTree().findQ(km); | 1216 double q1 = columns[index-1].getQRangeTree().findQ(km); |
1217 double q2 = columns[index ].getQRangeTree().findQ(km); | 1217 double q2 = columns[index ].getQRangeTree().findQ(km); |
1218 return Linear.weight(weight, q1, q2); | 1218 return Linear.weight(weight, q1, q2); |
1219 } | 1219 } |
1220 | |
1221 public double [][] interpolateTabulated(double km) { | |
1222 return interpolateTabulated(km, new double[2][columns.length]); | |
1223 } | |
1224 | |
1225 public double [][] interpolateTabulated(double km, double [][] result) { | |
1226 | |
1227 int rowIndex = Collections.binarySearch(rows, new Row(km)); | |
1228 | |
1229 if (rowIndex >= 0) { | |
1230 // Direct hit -> copy ws. | |
1231 Row row = rows.get(rowIndex); | |
1232 System.arraycopy( | |
1233 row.ws, 0, result[0], 0, | |
1234 Math.min(row.ws.length, result[0].length)); | |
1235 } | |
1236 else { | |
1237 rowIndex = -rowIndex -1; | |
1238 if (rowIndex < 1 || rowIndex >= rows.size()) { | |
1239 // Out of bounds. | |
1240 return null; | |
1241 } | |
1242 // Interpolate ws. | |
1243 Row r1 = rows.get(rowIndex-1); | |
1244 Row r2 = rows.get(rowIndex); | |
1245 double factor = Linear.factor(km, r1.km, r2.km); | |
1246 Linear.weight(factor, r1.ws, r2.ws, result[0]); | |
1247 } | |
1248 | |
1249 double [] qs = result[1]; | |
1250 for (int i = Math.min(qs.length, columns.length)-1; i >= 0; --i) { | |
1251 qs[i] = columns[i].getQRangeTree().findQ(km); | |
1252 } | |
1253 return result; | |
1254 } | |
1220 } | 1255 } |
1221 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : | 1256 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 : |