Statistics
| Revision:

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
}