00001 /*** 00002 * \file 3dtinter.h <gre/3dtinter.h> 00003 * \brief Base class for terrain decimation algorithms 00004 * 00005 * \if NODOC 00006 * $Id: 3dtinter.h_v 1.11 2004/09/03 16:56:55 vdronov Exp $ 00007 * 00008 * $Log: 3dtinter.h_v $ 00009 * Revision 1.11 2004/09/03 16:56:55 vdronov 00010 * *** empty log message *** 00011 * 00012 * Revision 1.10 2004/08/11 23:04:16 vdronov 00013 * *** empty log message *** 00014 * 00015 * Revision 1.9 2004/07/30 19:08:37 vdronov 00016 * *** empty log message *** 00017 * 00018 * Revision 1.8 2004/06/28 20:54:30 vdronov 00019 * *** empty log message *** 00020 * 00021 * Revision 1.7 2003/09/15 13:48:59 fileserver!dwilliss 00022 * Doxygen 00023 * 00024 * Revision 1.6 2003/08/15 16:06:53 vdronov 00025 * nc 00026 * 00027 * Revision 1.5 2003/07/30 14:36:00 mju 00028 * Check inclusion guards. 00029 * Ignore private section. 00030 * 00031 * Revision 1.4 2003/05/05 20:02:19 vdronov 00032 * lc 00033 * 00034 * Revision 1.3 2003/04/09 19:10:19 vdronov 00035 * terrain null value 00036 * 00037 * Revision 1.2 2003/03/25 23:37:03 vdronov 00038 * multiple updates 00039 * 00040 * Revision 1.1 2003/03/10 15:08:24 vdronov 00041 * Initial revision 00042 * \endif 00043 */ 00044 00045 #ifndef INC_GRE_3DTINTER_H 00046 #define INC_GRE_3DTINTER_H 00047 00048 #ifndef INC_GRE_3DTERRA_H 00049 #include <gre/3dterra.h> 00050 #endif 00051 00052 #ifndef INC_MI32_ASURFACE_H 00053 #include <mi32/asurface.h> 00054 #endif 00055 00056 #ifndef INC_MI32_SIMPLEAR_H 00057 #include <mi32/simplear.h> 00058 #endif 00059 00060 #ifndef INC_RVC_GEOREFER_H 00061 #include <rvc/georefer.h> 00062 #endif 00063 00064 #ifndef INC_RVC_TIN_H 00065 #include <rvc/tin.h> 00066 #endif 00067 00068 namespace GRE { 00069 00070 //! TIN terrain model. 00071 class TINTERRAIN : public TERRAIN { 00072 public: 00073 00074 TINTERRAIN ( //! Constructor 00075 ); 00076 00077 ~TINTERRAIN ( //! Destructor 00078 ); 00079 00080 private: 00081 #ifndef GENERATING_DOXYGEN_OUTPUT 00082 00083 ABSTRACT_SURFACE *m_Surface; 00084 DRECT3D m_Extents; 00085 SPATREF::COORDREFSYS m_CoordRefSys; 00086 00087 RVC::TIN m_TIN; 00088 00089 TRIANGULATION m_Triangulation; 00090 BITSET m_TrianglesBits; 00091 00092 TINTERRAIN& operator= ( //! Assignment operator (not implemented) 00093 const TINTERRAIN& rhs 00094 ); 00095 00096 TERRAIN* v_CreateInstance ( 00097 ) { return new TINTERRAIN(); }; 00098 00099 ERRVALUE v_Build ( 00100 const GRE_LAYER *layer 00101 ); 00102 00103 bool v_IsObjectTypeSupported ( 00104 const RVC::OBJTYPE objtype 00105 ) const { return (objtype == RVC::OBJTYPE_TIN); }; 00106 00107 void v_Free ( 00108 ); 00109 00110 ERRVALUE Create ( 00111 const GRE_LAYER *layer 00112 ); 00113 00114 void Delete ( 00115 ); 00116 00117 ERRVALUE v_GetDefaultScene ( 00118 SCENE3D& scene 00119 ) const; 00120 00121 ERRVALUE v_SetScene ( 00122 const SCENE3D& scene, 00123 const SIMPLE_ARRAY<TEXTURE*> &textures 00124 ); 00125 00126 ERRVALUE v_DrawScene ( 00127 CONTROLLER &controller, 00128 DRAWINGCONTEXT3D& drawing, 00129 TEXTURE* texture, 00130 TEXTUREFILTER* texturefilter 00131 ); 00132 00133 float v_GetElevation ( 00134 const float x, 00135 const float y 00136 ) const; 00137 00138 ERRVALUE v_ComputeProfile ( 00139 const POLYLINE& polyline, 00140 POLYLINE& profile, 00141 SIMPLE_ARRAY<INT32>& index 00142 ); 00143 00144 float v_GetAngleToNorth ( 00145 const float x, 00146 const float y 00147 ) const; 00148 00149 const ABSTRACT_SURFACE* v_GetAbstractSurface ( 00150 ) { return m_Surface; } 00151 00152 bool v_HasNull ( 00153 ) const { return false; }; 00154 00155 bool v_IsNull ( 00156 const float x, 00157 const float y 00158 ) const { return false; }; 00159 00160 void v_SetCoordRefSys ( 00161 const SPATREF::COORDREFSYS& CoordRefSys 00162 ); 00163 00164 const SPATREF::COORDREFSYS v_GetCoordRefSys ( 00165 ) const { return m_CoordRefSys; }; 00166 00167 const DRECT3D& v_GetExtents ( 00168 ) { return m_Extents; }; 00169 00170 void v_CreateBoundary ( 00171 REGION2D& boundary 00172 ); 00173 00174 #endif //!< GENERATING_DOXYGEN_OUTPUT 00175 }; 00176 00177 }; //! End of namespace 00178 00179 #endif 00180
1.3.8-20040913