comparison gnv-artifacts/src/main/java/de/intevation/gnv/raster/PolygonDatasetProducer.java @ 437:b624879d2902

Added vectorizer rings callback to generate iso lines. gnv-artifacts/trunk@485 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 27 Dec 2009 05:25:40 +0000
parents 6642ab6c583c
children f7038820df2e
comparison
equal deleted inserted replaced
436:6642ab6c583c 437:b624879d2902
10 10
11 import de.intevation.gnv.jfreechart.PolygonSeries; 11 import de.intevation.gnv.jfreechart.PolygonSeries;
12 import de.intevation.gnv.jfreechart.PolygonDataset; 12 import de.intevation.gnv.jfreechart.PolygonDataset;
13 import de.intevation.gnv.jfreechart.CompactXYItems; 13 import de.intevation.gnv.jfreechart.CompactXYItems;
14 14
15 /**
16 * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
17 */
15 public class PolygonDatasetProducer 18 public class PolygonDatasetProducer
16 implements RingsHandler 19 implements RingsHandler
17 { 20 {
18 protected double minX; 21 protected double minX;
19 protected double minY; 22 protected double minY;
20
21 protected double maxX; 23 protected double maxX;
22 protected double maxY; 24 protected double maxY;
23 25
24 protected HashMap<Integer, PolygonSeries> polygonSeries; 26 protected HashMap<Integer, PolygonSeries> polygonSeries;
25 27
63 /* minX = 0*m1 + b1 <=> b1 = minX 65 /* minX = 0*m1 + b1 <=> b1 = minX
64 * maxX = (width-1)*m1 + b1 66 * maxX = (width-1)*m1 + b1
65 * m1 = (maxX - minX)/(width-1) 67 * m1 = (maxX - minX)/(width-1)
66 */ 68 */
67 69
68 double b1 = minX; 70 double b1 = minX;
69 double m1 = width != 1 71 double m1 = width != 1
70 ? (maxX - minX)/(width-1) 72 ? (maxX - minX)/(width-1)
71 : 0d; 73 : 0d;
72 74
73 double b2 = minY; 75 double b2 = minY;
74 double m2 = height != 1 76 double m2 = height != 1
75 ? (maxY - minY)/(height-1) 77 ? (maxY - minY)/(height-1)
76 : 0d; 78 : 0d;
77 79
78 for (Edge head: rings) { 80 for (Edge head: rings) {
79 Edge current = head; 81 Edge current = head;
80 do { 82 do {
81 double x = m1*(current.a % width) + b1; 83 vertices.add(m1*(current.a % width) + b1);
82 double y = m2*(current.a / width) + b2; 84 vertices.add(m2*(current.a / width) + b2);
83 vertices.add(x);
84 vertices.add(y);
85 current = current.next;
86 } 85 }
87 while (current != head); 86 while ((current = current.next) != head);
88 ps.addRing(new CompactXYItems(vertices.toNativeArray())); 87 ps.addRing(new CompactXYItems(vertices.toNativeArray()));
89 vertices.clear(); 88 vertices.clear();
90 } 89 }
91 } 90 }
92 91

http://dive4elements.wald.intevation.org