Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java @ 9347:08f46ccd37ba
salix.regional refactoring
author | gernotbelger |
---|---|
date | Tue, 31 Jul 2018 16:04:01 +0200 |
parents | 3ac9cb0029b2 |
children | 3f0803009a8f |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Tue Jul 31 15:48:35 2018 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Tue Jul 31 16:04:01 2018 +0200 @@ -63,17 +63,26 @@ } double [] xPoints = points[0]; double [] yPoints = points[1]; + + Integer lastNonNaNIndex = null; + for (int i = 0; i < xPoints.length; i++) { if (skipNANs && (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) { continue; } + // Create gap if distance between points > distance. - if (i > 0 && Math.abs(xPoints[i-1] - xPoints[i]) > distance && - !Double.isNaN(yPoints[i-1]) && !Double.isNaN(yPoints[i])) { - series.add((xPoints[i-1] + xPoints[i])/2, Double.NaN, false); + if (i > 0 && lastNonNaNIndex != null) + { + double distanceToLastNonNan = Math.abs(xPoints[lastNonNaNIndex] - xPoints[i] ); + if (distanceToLastNonNan > distance && !Double.isNaN(yPoints[lastNonNaNIndex]) && !Double.isNaN(yPoints[i])) + series.add((xPoints[i-1] + xPoints[i])/2, Double.NaN, false); } series.add(xPoints[i], yPoints[i], false); + + if (skipNANs && !Double.isNaN(xPoints[i]) && !Double.isNaN(yPoints[i])) + lastNonNaNIndex = i; } }