comparison flys-artifacts/src/main/java/de/intevation/flys/utils/DoubleUtil.java @ 5379:61bf64b102bc mapgenfix

Merge with default branch
author Christian Lins <christian.lins@intevation.de>
date Fri, 22 Mar 2013 11:25:54 +0100
parents 240ff7aeb6de
children
comparison
equal deleted inserted replaced
5175:cfc5540a4eec 5379:61bf64b102bc
14 /** Private logger. */ 14 /** Private logger. */
15 private static Logger log = Logger.getLogger(DoubleUtil.class); 15 private static Logger log = Logger.getLogger(DoubleUtil.class);
16 16
17 public static final double DEFAULT_STEP_PRECISION = 1e6; 17 public static final double DEFAULT_STEP_PRECISION = 1e6;
18 18
19 /** EPSILON for comparison of double precision values. */
20 public static final double EPSILON = 1e-4;
21
19 private DoubleUtil() { 22 private DoubleUtil() {
20 } 23 }
21 24
22 public static final double [] explode(double from, double to, double step) { 25 public static final double [] explode(double from, double to, double step) {
23 return explode(from, to, step, DEFAULT_STEP_PRECISION); 26 return explode(from, to, step, DEFAULT_STEP_PRECISION);
29 32
30 public static final double round(double x) { 33 public static final double round(double x) {
31 return Math.round(x * DEFAULT_STEP_PRECISION)/DEFAULT_STEP_PRECISION; 34 return Math.round(x * DEFAULT_STEP_PRECISION)/DEFAULT_STEP_PRECISION;
32 } 35 }
33 36
37 /**
38 * Returns array with values from parameter from to to with given step width.
39 * from and to are included.
40 */
34 public static final double [] explode( 41 public static final double [] explode(
35 double from, 42 double from,
36 double to, 43 double to,
37 double step, 44 double step,
38 double precision 45 double precision
54 } 61 }
55 62
56 double max = Math.max(from, to); 63 double max = Math.max(from, to);
57 64
58 for (int idx = 0; idx < num; idx++) { 65 for (int idx = 0; idx < num; idx++) {
59 if (lower > max) { 66 if (lower - max > EPSILON) {
60 return Arrays.copyOfRange(values, 0, idx); 67 return Arrays.copyOfRange(values, 0, idx);
61 } 68 }
62 69
63 values[idx] = round(lower, precision); 70 values[idx] = round(lower, precision);
64 lower += step; 71 lower += step;
175 double from = Double.parseDouble(parts[0].trim()); 182 double from = Double.parseDouble(parts[0].trim());
176 double to = Double.parseDouble(parts[1].trim()); 183 double to = Double.parseDouble(parts[1].trim());
177 184
178 vs.resetQuick(); 185 vs.resetQuick();
179 186
180 for (String valueStr: parts[2].split(",")) { 187 for (String valueStr: parts[3].split(",")) {
181 vs.add(round(Double.parseDouble(valueStr.trim()))); 188 vs.add(round(Double.parseDouble(valueStr.trim())));
182 } 189 }
183 190
184 callback.newSegment(from, to, vs.toNativeArray()); 191 callback.newSegment(from, to, vs.toNativeArray());
185 } 192 }

http://dive4elements.wald.intevation.org