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