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