00001 00018 #ifndef INC_VDIAGRAM_H 00019 #define INC_VDIAGRAM_H 00020 00021 #ifndef INC_POLYLINE_H 00022 #include <mi32/polyline.h> 00023 #endif 00024 00025 #ifndef INC_MI32_QTREE_H 00026 #include <mi32/qtree.h> 00027 #endif 00028 00029 #ifndef INC_MI32_BITSET_H 00030 #include <mi32/bitset.h> 00031 #endif 00032 00033 00034 struct VORONOI_NODE { 00035 DPOINT2D m_Point; 00036 SIMPLE_ARRAY<INT32> m_Edges; 00037 VORONOI_NODE () {} 00038 }; 00039 00040 struct VORONOI_EDGE { 00041 INT32 m_BeginNode; 00042 INT32 m_EndNode; 00043 INT32 m_LeftPolygon; 00044 INT32 m_RightPolygon; 00045 VORONOI_EDGE () : m_BeginNode(-1), m_EndNode(-1), m_LeftPolygon(-1), m_RightPolygon(-1) {} 00046 }; 00047 00048 struct VORONOI_POLYGON { 00049 SIMPLE_ARRAY<INT32> m_Nodes; 00050 VORONOI_POLYGON () {} 00051 }; 00052 00053 class VORONOI_DIAGRAM { 00054 public: 00055 00056 VORONOI_DIAGRAM (); 00057 00058 ~VORONOI_DIAGRAM (); 00059 00060 ERRVALUE Compute ( 00061 const POLYLINE& polyline, 00062 const DRECT2D& extents 00063 ); 00064 00065 ERRVALUE Compute ( 00066 const POLYLINE& polyline, 00067 const double factor 00068 ); 00069 00070 ERRVALUE ComputePolylineListFromSelectedPolygons ( 00071 const BITSET& bitset, 00072 POLYLINELIST& polylinelist 00073 ); 00074 00075 INT32 GetNumNodes ( 00076 ) const { return m_Nodes.GetNumItems(); } 00077 00078 INT32 GetNumEdges ( 00079 ) const { return m_Edges.GetNumItems(); } 00080 00081 INT32 GetNumPolygons ( 00082 ) const { return m_Polygons.GetNumItems(); } 00083 00084 const VORONOI_NODE& GetNode ( 00085 const INT32 index 00086 ) const { return (*(m_Nodes[index])); } 00087 00088 const VORONOI_EDGE& GetEdge ( 00089 const INT32 index 00090 ) const { return (m_Edges[index]); } 00091 00092 const VORONOI_POLYGON& GetPolygon ( 00093 const INT32 index 00094 ) const { return (*(m_Polygons[index])); } 00095 00096 bool IsComputed ( 00097 ) const { return m_IsComputed; } 00098 00099 private: 00100 #ifndef GENERATING_DOXYGEN_OUTPUT 00101 SIMPLE_ARRAY<VORONOI_NODE*> m_Nodes; 00102 SIMPLE_ARRAY<VORONOI_EDGE> m_Edges; 00103 SIMPLE_ARRAY<VORONOI_POLYGON*> m_Polygons; 00104 bool m_IsComputed; 00105 00106 void Clear (); 00107 00108 #endif // GENERATING_DOXYGEN_OUTPUT 00109 }; 00110 00111 #endif // INC_VDIAGRAM_H
1.6.1