3dpwter.h

Go to the documentation of this file.
00001 /*** 
00002  * \file 3dpwter.h <gre/3dpwter.h>
00003  * \brief 
00004  *
00005  * \if NODOC
00006  * $Id: 3dpwter.h_v 1.7 2004/09/03 16:55:28 vdronov Exp $
00007  *
00008  * $Log: 3dpwter.h_v $
00009  * Revision 1.7  2004/09/03 16:55:28  vdronov
00010  * *** empty log message ***
00011  *
00012  * Revision 1.6  2004/08/11 23:00:42  vdronov
00013  * *** empty log message ***
00014  *
00015  * Revision 1.5  2004/07/30 19:07:34  vdronov
00016  * *** empty log message ***
00017  *
00018  * Revision 1.4  2004/06/29 13:51:29  vdronov
00019  * *** empty log message ***
00020  *
00021  * Revision 1.3  2004/01/14 01:22:34  vdronov
00022  * made some changes
00023  *
00024  * Revision 1.2  2004/01/02 20:55:30  vdronov
00025  * *** empty log message ***
00026  *
00027  * Revision 1.1  2003/12/22 17:39:09  vdronov
00028  * Initial revision
00029  *
00030  * \endif
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 //! Sparce triangulation terrain model.
00059 class PIECEWISETIN : public TERRAIN {
00060    public:
00061 
00062       PIECEWISETIN (                                  //! Constructor 
00063          );
00064 
00065       ~PIECEWISETIN (                                 //! Destructor 
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= (                       //! Assignment operator (not implemented)
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 //!< GENERATING_DOXYGEN_OUTPUT
00191    };
00192 
00193 };    //! End of namespace
00194 
00195 #endif
00196 

Generated on Tue Dec 14 13:18:11 2004 for TNTsdk by  doxygen 1.3.8-20040913