00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef INC_GRE_3DFTTER_H
00024 #define INC_GRE_3DFTTER_H
00025
00026 #ifndef INC_GRE_3DTERRA_H
00027 #include <gre/3dterra.h>
00028 #endif
00029
00030 #ifndef INC_MI32_TRANS2D_MAPGEN_H
00031 #include <mi32/trans2dmapgen.h>
00032 #endif
00033
00034
00035 namespace GRE {
00036
00038 class FLATTRIANGULATION : public TERRAIN {
00039 public:
00040
00041 FLATTRIANGULATION (
00042 );
00043
00044 ~FLATTRIANGULATION (
00045 );
00046
00047 private:
00048 #ifndef GENERATING_DOXYGEN_OUTPUT
00049
00050 DRECT2D ALIGN16(m_ObjExtents);
00051 DRECT3D ALIGN16(m_Extents);
00052 SPATREF::COORDREFSYS m_CoordRefSys;
00053 TRANS2D_MAPGEN m_Transformation;
00054 bool m_IsRaster;
00055 TRIANGULATION m_Triangulation;
00056 BITSET m_TrianglesBits;
00057 SCENE3D *m_Scene;
00058
00059 FLATTRIANGULATION& operator= (
00060 const FLATTRIANGULATION& rhs
00061 );
00062
00063 TERRAIN* v_CreateInstance (
00064 ) { return new FLATTRIANGULATION(); };
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;
00143
00144 ERRVALUE CreateRegularTIN (
00145 const TRANS2D_MAPGEN& transformation
00146 );
00147
00148 void DeleteRegularTIN (
00149 );
00150
00151 ERRVALUE SetSceneForRegularTIN (
00152 const SCENE3D& scene,
00153 const SIMPLE_ARRAY<TEXTURE*> &textures
00154 );
00155
00156 ERRVALUE DrawSceneForRegularTIN (
00157 CONTROLLER &controller,
00158 DRAWINGCONTEXT3D& drawing,
00159 TEXTURE* texture,
00160 TEXTUREFILTER* texturefilter
00161 );
00162
00163 void TransformRegularTIN (
00164 const TRANS2D_MAPGEN& transformation
00165 );
00166
00167 #endif // GENERATING_DOXYGEN_OUTPUT
00168 };
00169
00170 };
00171
00172 #endif