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_3DTINTER_H
00024 #define INC_GRE_3DTINTER_H
00025
00026 #ifndef INC_GRE_3DTERRA_H
00027 #include <gre/3dterra.h>
00028 #endif
00029
00030 #ifndef INC_RVC_TIN_H
00031 #include <rvc/tin.h>
00032 #endif
00033
00034 namespace GRE {
00035
00037 class TINTERRAIN : public TERRAIN {
00038 public:
00039
00040 TINTERRAIN (
00041 );
00042
00043 ~TINTERRAIN (
00044 );
00045
00046 private:
00047 #ifndef GENERATING_DOXYGEN_OUTPUT
00048
00049 DRECT3D ALIGN16(m_Extents);
00050 SPATREF::COORDREFSYS m_CoordRefSys;
00051 RVC::TIN m_TIN;
00052 TRIANGULATION m_Triangulation;
00053 BITSET m_TrianglesBits;
00054
00055 TINTERRAIN& operator= (const TINTERRAIN&);
00056
00057 TERRAIN* v_CreateInstance (
00058 ) { return new TINTERRAIN(); };
00059
00060 ERRVALUE v_Build (
00061 const GRE::LAYER *layer
00062 );
00063
00064 bool v_IsObjectTypeSupported (
00065 const RVC::OBJTYPE objtype
00066 ) const { return (objtype == RVC::OBJTYPE_TIN); };
00067
00068 void v_Free (
00069 );
00070
00071 ERRVALUE Create (
00072 const GRE::LAYER *layer
00073 );
00074
00075 void Delete (
00076 );
00077
00078 ERRVALUE v_GetDefaultScene (
00079 SCENE3D& scene
00080 ) const;
00081
00082 ERRVALUE v_SetScene (
00083 const SCENE3D& scene,
00084 const SIMPLE_ARRAY<TEXTURE*> &textures
00085 );
00086
00087 ERRVALUE v_DrawScene (
00088 CONTROLLER &controller,
00089 DRAWINGCONTEXT3D& drawing,
00090 TEXTURE* texture,
00091 TEXTUREFILTER* texturefilter
00092 );
00093
00094 ERRVALUE v_SetScene (
00095 const SCENE3D& scene,
00096 const SIMPLE_ARRAY<GEOMETRIC3D*> &geometrics,
00097 const bool wireframe
00098 );
00099
00100 float v_GetElevation (
00101 const float x,
00102 const float y
00103 ) const;
00104
00105 ERRVALUE v_ComputeProfile (
00106 const POLYLINE& polyline,
00107 POLYLINE& profile,
00108 SIMPLE_ARRAY<INT32>& index
00109 );
00110
00111 float v_GetAngleToNorth (
00112 const float x,
00113 const float y
00114 ) const;
00115
00116 bool v_HasNull (
00117 ) const { return false; };
00118
00119 bool v_IsNull (
00120 const float x,
00121 const float y
00122 ) const { return false; };
00123
00124 void v_SetCoordRefSys (
00125 const SPATREF::COORDREFSYS& CoordRefSys
00126 );
00127
00128 const SPATREF::COORDREFSYS v_GetCoordRefSys (
00129 ) const { return m_CoordRefSys; };
00130
00131 const DRECT3D& v_GetExtents (
00132 ) { return m_Extents; };
00133
00134 void v_CreateBoundary (
00135 REGION2D& boundary
00136 );
00137
00138 #endif
00139 };
00140
00141 };
00142
00143 #endif
00144