00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef INC_GRE_3DPWTER_H
00018 #define INC_GRE_3DPWTER_H
00019
00020 #ifndef INC_GRE_3DTERRA_H
00021 #include <gre/3dterra.h>
00022 #endif
00023
00024 #ifndef INC_RVC_RASTER_H
00025 #include <rvc/raster.h>
00026 #endif
00027
00028
00029 namespace GRE {
00030
00032 class PIECEWISETIN : public TERRAIN {
00033 public:
00034
00035 PIECEWISETIN (
00036 );
00037
00038 ~PIECEWISETIN (
00039 );
00040
00041 private:
00042 #ifndef GENERATING_DOXYGEN_OUTPUT
00043
00044 DRECT3D ALIGN16(m_Extents);
00045 SPATREF::COORDREFSYS m_CoordRefSys;
00046 TRANS2D_MAPGEN m_Transformation;
00047
00048 RVC::RASTER m_Raster;
00049 GRE::LAYER* m_Layer;
00050
00051 TRIANGULATION m_Triangulation;
00052 DOUBLE_ARRAY<DPOINT3D> m_Nodes;
00053 SIMPLE_ARRAY<EDGEINDEX> m_Edges;
00054 BITSET m_EdgesBits;
00055 SIMPLE_ARRAY<TRIANGLEINDEX> m_Triangles;
00056 BITSET m_TrianglesBits;
00057 SCENE3D *m_Scene;
00058
00059 PIECEWISETIN& operator= (
00060 const PIECEWISETIN& rhs
00061 );
00062
00063 TERRAIN* v_CreateInstance (
00064 ) { return new PIECEWISETIN(); };
00065
00066 ERRVALUE v_Build (
00067 const GRE::LAYER *layer
00068 );
00069
00070 bool v_IsObjectTypeSupported (
00071 const RVC::OBJTYPE objtype
00072 ) const { return (objtype == RVC::OBJTYPE_Raster); };
00073
00074 void v_Free (
00075 );
00076
00077 ERRVALUE Create (
00078 const GRE::LAYER *layer
00079 );
00080
00081 void Delete (
00082 );
00083
00084 ERRVALUE v_GetDefaultScene (
00085 SCENE3D& scene
00086 ) const;
00087
00088 ERRVALUE v_SetScene (
00089 const SCENE3D& scene,
00090 const SIMPLE_ARRAY<TEXTURE*> &textures
00091 );
00092
00093 ERRVALUE v_DrawScene (
00094 CONTROLLER &controller,
00095 DRAWINGCONTEXT3D& drawing,
00096 TEXTURE* texture,
00097 TEXTUREFILTER* texturefilter
00098 );
00099
00100 ERRVALUE v_SetScene (
00101 const SCENE3D& scene,
00102 const SIMPLE_ARRAY<GEOMETRIC3D*> &geometrics,
00103 const bool wireframe
00104 );
00105
00106 float v_GetElevation (
00107 const float x,
00108 const float y
00109 ) const;
00110
00111 ERRVALUE v_ComputeProfile (
00112 const POLYLINE& polyline,
00113 POLYLINE& profile,
00114 SIMPLE_ARRAY<INT32>& index
00115 );
00116
00117 float v_GetAngleToNorth (
00118 const float x,
00119 const float y
00120 ) const;
00121
00122 void v_SetCoordRefSys (
00123 const SPATREF::COORDREFSYS& CoordRefSys
00124 );
00125
00126 const SPATREF::COORDREFSYS v_GetCoordRefSys (
00127 ) const { return m_CoordRefSys; };
00128
00129 const DRECT3D& v_GetExtents (
00130 ) { return m_Extents; };
00131
00132 void v_CreateBoundary (
00133 REGION2D& boundary
00134 );
00135
00136 bool v_HasNull (
00137 ) const { return false; };
00138
00139 bool v_IsNull (
00140 const float x,
00141 const float y
00142 ) const { return false; };
00143
00144 ERRVALUE CreateRegularTIN (
00145 );
00146
00147 void DeleteRegularTIN (
00148 );
00149 ERRVALUE SetSceneForRegularTIN (
00150 const SCENE3D& scene,
00151 const SIMPLE_ARRAY<TEXTURE*> &textures
00152 );
00153
00154 ERRVALUE DrawSceneForRegularTIN (
00155 CONTROLLER &controller,
00156 DRAWINGCONTEXT3D& drawing,
00157 TEXTURE* texture,
00158 TEXTUREFILTER* texturefilter
00159 );
00160
00161 void TransformRegularTIN (
00162 const TRANS2D_MAPGEN& transformation
00163 );
00164
00165 #endif
00166 };
00167
00168 };
00169
00170 #endif
00171