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