root / trunk / libraries / lib3DMap / src / com / iver / ai2 / gvsig3d / simbology3D / geometry3D / Point3DGeometry.java @ 20892
History | View | Annotate | Download (2.98 KB)
1 |
package com.iver.ai2.gvsig3d.simbology3D.geometry3D; |
---|---|
2 |
|
3 |
import java.awt.geom.PathIterator; |
4 |
import java.util.ArrayList; |
5 |
import java.util.List; |
6 |
import java.util.Map; |
7 |
|
8 |
import org.apache.log4j.Logger; |
9 |
import org.gvsig.osgvp.Group; |
10 |
import org.gvsig.osgvp.Node; |
11 |
import org.gvsig.osgvp.Vec3; |
12 |
import org.gvsig.osgvp.exceptions.node.NodeException; |
13 |
import org.gvsig.osgvp.features.PixelPoint; |
14 |
|
15 |
import com.iver.ai2.gvsig3d.simbology3D.symbol3D.I3DSymbol; |
16 |
import com.iver.cit.gvsig.fmap.core.IGeometry; |
17 |
|
18 |
public class Point3DGeometry extends Abstract3DGeometry { |
19 |
|
20 |
protected Map<Double, PixelPoint> pointsMap; |
21 |
|
22 |
private static Logger logger = Logger.getLogger(Point3DGeometry.class.getName()); |
23 |
|
24 |
public Point3DGeometry(IGeometry geometry) {
|
25 |
super(geometry);
|
26 |
|
27 |
} |
28 |
|
29 |
private Node getPointNode(double key) { |
30 |
PixelPoint pixelPoint= null;
|
31 |
|
32 |
if (pointsMap.containsKey(new Double(key))) { |
33 |
// System.out.println("ya contiene esa key");
|
34 |
pixelPoint = pointsMap.get(new Double(key)); |
35 |
} else {
|
36 |
pixelPoint = new PixelPoint();
|
37 |
pointsMap.put(new Double(key), pixelPoint); |
38 |
} |
39 |
|
40 |
return pixelPoint;
|
41 |
} |
42 |
|
43 |
|
44 |
public Group generateGeometry(I3DSymbol symbol3D) { |
45 |
Group groupAux = new Group(); |
46 |
Node node = null;
|
47 |
|
48 |
if (getGeometry() == null || symbol3D == null) |
49 |
return null; |
50 |
|
51 |
this.setGeomType(getGeometry().getGeometryType());
|
52 |
// TRANSFORMANDO A GEOMETRIA CON VALOR Z
|
53 |
|
54 |
// Getting the Iterator
|
55 |
PathIterator theIteratorL = getGeometry().getPathIterator(null); |
56 |
|
57 |
double[] dataLine = new double[6]; |
58 |
List<Vec3> posi = new ArrayList<Vec3>(); |
59 |
int contH = 0; |
60 |
// System.out.println("ENTRO");
|
61 |
while (!theIteratorL.isDone()) {
|
62 |
// System.out.println("ITERO");
|
63 |
int type = theIteratorL.currentSegment(dataLine);
|
64 |
Vec3 position = getGeometryPosition(getGeometry(), dataLine, |
65 |
getHeigth(), contH); |
66 |
|
67 |
// Adding points
|
68 |
switch (type) {
|
69 |
case PathIterator.SEG_MOVETO: |
70 |
// System.out.println("SEG_MOVETO");
|
71 |
// FeatureFactory.addPointToNode(node, pos, rgba, pointSize);
|
72 |
// posi.add(pos);
|
73 |
// INSERT HERE THE CODE TO MAKE TETURED QUAD POINT
|
74 |
List<Vec3> posit = new ArrayList<Vec3>(); |
75 |
posit.add(position); |
76 |
node = symbol3D.generateSymbol(posit); |
77 |
try {
|
78 |
groupAux.addChild(node); |
79 |
} catch (NodeException e) {
|
80 |
logger.equals("command: " + "Error adding new child" + e); |
81 |
} |
82 |
// group.addChild(generateFeature(posit,new
|
83 |
// Vec4(1.0,0.0,0.0,1.0),sym));
|
84 |
// group.addChild();
|
85 |
// pointListAux.add(new Punto3D(pos, rgba, pointSize));
|
86 |
break;
|
87 |
|
88 |
case PathIterator.SEG_LINETO: |
89 |
// System.out.println("SEG_LINETO");
|
90 |
posi.add(position); |
91 |
break;
|
92 |
|
93 |
case PathIterator.SEG_QUADTO: |
94 |
// System.out.println("SEG_QUADTO");
|
95 |
break;
|
96 |
|
97 |
case PathIterator.SEG_CUBICTO: |
98 |
// System.out.println("SEG_CUBICTO");
|
99 |
break;
|
100 |
|
101 |
case PathIterator.SEG_CLOSE: |
102 |
// System.out.println("SEG_CLOSE");
|
103 |
break;
|
104 |
} |
105 |
contH++; |
106 |
theIteratorL.next(); |
107 |
} |
108 |
return groupAux;
|
109 |
|
110 |
} |
111 |
|
112 |
} |