annotate flys-artifacts/src/main/java/de/intevation/flys/jfree/JFreeUtil.java @ 4798:39885bdfc6fc

Added calculation of the "Umhuellende" to calculation of "W fuer ungleichwertige Abfluesse". This is done by figuring out the WST columns that imfold the data and then do simple "gleichwertige" calculations from the start of the interval. This is too much because only the Qs are needed for the "Umhuellende".
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 13 Jan 2013 16:18:28 +0100
parents 080411ac948f
children
rev   line source
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
1 package de.intevation.flys.jfree;
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
2
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
3 import java.awt.Shape;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
4 import java.awt.geom.Rectangle2D;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
5 import java.util.Iterator;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
6 import java.util.Random;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
7
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
8 import org.apache.log4j.Logger;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
9 import org.jfree.chart.entity.ChartEntity;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
10 import org.jfree.chart.entity.EntityCollection;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
11 import org.w3c.dom.Document;
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
12
3109
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
13 import de.intevation.flys.artifacts.math.Function;
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
14
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
15 public class JFreeUtil {
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
16
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
17 private static final Logger logger = Logger.getLogger(JFreeUtil.class);
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3023
diff changeset
18
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
19 /** Do not instantiate. */
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
20 private JFreeUtil() {
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
21 }
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
22
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
23
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
24 /**
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
25 * True if \param hotspot collides with a Entity in \param entities.
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
26 * @param hotspot Shape to compare against other shapes (bounds only).
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
27 * @param entities entities against which to compare shape.
3023
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
28 * @param exclusiveEntityClass If not null, consider only entities of
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
29 * given class.
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
30 * @return true if a collision (non-zero intersection) exists between
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
31 * shapes.
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
32 */
3023
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
33 public static boolean collides(Shape hotspot, EntityCollection entities,
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
34 Class exclusiveEntityClass) {
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
35 if (entities == null) return false;
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
36
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
37 Rectangle2D hotspotBox = hotspot.getBounds2D();
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3023
diff changeset
38
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
39 for (Iterator i = entities.iterator(); i.hasNext(); ) {
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
40 Object next = i.next();
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
41 ChartEntity entity = (ChartEntity) next;
3023
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
42 if (exclusiveEntityClass == null
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
43 || exclusiveEntityClass.isInstance(entity))
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
44 {
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
45 if (entity.getArea().intersects(hotspotBox)) {
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
46 // Found collision, early stop.
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
47 return true;
e19ff9086035 Avoid collisions between line labels.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3018
diff changeset
48 }
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
49 }
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
50 }
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
51
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
52 return false;
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
53 }
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
54
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
55
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
56 /**
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
57 * This function samples a randomized line that contains of x and y values
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
58 * between <i>startX</i>, <i>endX</i>, <i>startY</i> and <i>endY</i>. The
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
59 * number of points in the line is specified by <i>num</i>.
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
60 *
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
61 * @param num The number of points in the line.
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
62 * @param startX The min value of the x values.
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
63 * @param endX The max value of the x values.
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
64 * @param startY The min value of the y values.
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
65 * @param endY The max value of the y values.
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
66 * @return an array with [allX-values, allY-values].
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
67 * @throws IllegalArgumentException
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
68 */
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
69 public static double[][] randomizeLine(
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
70 int num,
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
71 double startX,
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
72 double endX,
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
73 double startY,
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
74 double endY
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
75 ) throws IllegalArgumentException
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
76 {
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
77 if (num <= 0) {
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
78 throw new IllegalArgumentException("Parameter 'num' has to be > 0");
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
79 }
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
80
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
81 Random random = new Random();
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
82
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
83 double[] x = new double[num];
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
84 double[] y = new double[num];
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
85
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
86 for (int i = 0; i < num; i++) {
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
87 double xFac = random.nextDouble();
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
88 double yFac = random.nextDouble();
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
89
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
90 x[i] = startX + xFac * (endX - startX);
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
91 y[i] = startY + yFac * (endY - startY);
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
92
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
93 logger.debug("Created new point: " + x[i] + "|" + y[i]);
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
94 }
3772
5a8f8fd5310c The usual wipe after for ill configured Eclipses.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3765
diff changeset
95
3765
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
96 return new double[][] { x, y };
d8f2ab5b61c3 Added JFreeUtil.randomizeLine() to generate randomized lines.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3109
diff changeset
97 }
3105
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
98
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
99
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
100 public static StyledXYSeries sampleFunction2D(
3109
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
101 Function func,
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
102 Document theme,
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
103 String seriesKey,
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
104 int samples,
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
105 double start,
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
106 double end
3105
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
107 ) {
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
108 StyledXYSeries series = new StyledXYSeries(seriesKey, theme);
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
109
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
110 double step = (end - start) / (samples - 1);
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
111
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
112 for (int i = 0; i < samples; i++) {
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
113 double x = start + (step * i);
3109
63ef889eea2b SQ: Directly sample our Function objects instead of Function2D from JFreeChart.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3105
diff changeset
114 series.add(x, func.value(x));
3105
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
115 }
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
116
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
117 return series;
9592b7d76633 Generate fake data for SQ curves; Implemented the Facet and Generator stuff.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3083
diff changeset
118 }
4564
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
119
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
120 public static StyledXYSeries sampleFunction2DPositive(
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
121 Function func,
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
122 Document theme,
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
123 String seriesKey,
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
124 int samples,
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
125 double start,
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
126 double end
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
127 ) {
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
128 StyledXYSeries series = new StyledXYSeries(seriesKey, theme);
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
129
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
130 double step = (end - start) / (samples - 1);
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
131
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
132 for (int i = 0; i < samples; i++) {
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
133 double x = start + (step * i);
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
134 double v = func.value(x);
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
135 if (x > 0d && v > 0d) {
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
136 series.add(x, v);
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
137 }
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
138 }
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
139
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
140 return series;
080411ac948f More solid S/Q function sampling
Sascha L. Teichmann <teichmann@intevation.de>
parents: 3772
diff changeset
141 }
3018
fb07f936b5ad New helper.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
diff changeset
142 }
3083
4bd3d8bbb60c Added missing vim lines.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3076
diff changeset
143 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org