3dftter.h

Go to the documentation of this file.
00001 /*** 
00002  * \file 3dftter.h flat terangulation <gre/3dftter.h>
00003  * \brief 
00004  *
00005  * \if NODOC
00006  * $Id: 3dftter.h_v 1.9 2005/03/31 23:49:12 vdronov Exp $
00007  *
00008  * $Log: 3dftter.h_v $
00009  * Revision 1.9  2005/03/31 23:49:12  vdronov
00010  * *** empty log message ***
00011  *
00012  * Revision 1.8  2005/02/17 17:55:19  vdronov
00013  * *** empty log message ***
00014  *
00015  * Revision 1.7  2004/12/01 16:44:02  vdronov
00016  * ALIGN
00017  *
00018  * Revision 1.6  2004/09/03 16:55:16  vdronov
00019  * *** empty log message ***
00020  *
00021  * Revision 1.5  2004/08/11 23:00:12  vdronov
00022  * *** empty log message ***
00023  *
00024  * Revision 1.4  2004/07/30 19:07:17  vdronov
00025  * *** empty log message ***
00026  *
00027  * Revision 1.3  2004/06/29 13:56:21  vdronov
00028  * *** empty log message ***
00029  *
00030  * Revision 1.2  2004/06/17 17:23:55  vdronov
00031  * added case for non raster flat surface
00032  *
00033  * Revision 1.1  2004/06/15 16:06:18  vdronov
00034  * Initial revision
00035  *
00036  * \endif
00037 **/ 
00038 
00039 #ifndef  INC_GRE_3DFTTER_H
00040 #define  INC_GRE_3DFTTER_H
00041 
00042 #ifndef  INC_GRE_3DTERRA_H
00043 #include <gre/3dterra.h>
00044 #endif
00045 
00046 #ifndef  INC_GRE_3DSCENE_H
00047 #include <gre/3dscene.h>
00048 #endif
00049 
00050 #ifndef  INC_MI32_ASURFACE_H
00051 #include <mi32/asurface.h>
00052 #endif
00053 
00054 #ifndef  INC_MI32_SIMPLEAR_H
00055 #include <mi32/simplear.h>
00056 #endif
00057 
00058 #ifndef  INC_RVC_GEOREFER_H
00059 #include <rvc/georefer.h>
00060 #endif
00061 
00062 namespace GRE {
00063 
00064 //! Flat triangulation terrain model.
00065 class FLATTRIANGULATION : public TERRAIN {
00066    public:
00067 
00068       FLATTRIANGULATION (                                //! Constructor 
00069          );
00070 
00071       ~FLATTRIANGULATION (                               //! Destructor 
00072          );
00073 
00074    private:
00075       #ifndef GENERATING_DOXYGEN_OUTPUT
00076 
00077       ABSTRACT_SURFACE *m_Surface;
00078       DRECT2D ALIGN16(m_ObjExtents);
00079       DRECT3D ALIGN16(m_Extents);
00080       SPATREF::COORDREFSYS m_CoordRefSys;
00081       TRANS2D_MAPGEN m_Transformation;
00082       bool m_IsRaster;
00083 
00084       TRIANGULATION m_Triangulation;
00085       BITSET m_TrianglesBits; 
00086       SCENE3D *m_Scene;
00087 
00088       FLATTRIANGULATION& operator= (                        //! Assignment operator (not implemented)
00089          const FLATTRIANGULATION& rhs
00090          );
00091 
00092       TERRAIN* v_CreateInstance (
00093          ) { return new FLATTRIANGULATION(); };
00094 
00095       ERRVALUE v_Build (
00096          const GRE_LAYER *layer
00097          );
00098 
00099       bool v_IsObjectTypeSupported (
00100          const RVC::OBJTYPE objtype
00101          ) const { return (objtype == RVC::OBJTYPE_Raster); };
00102 
00103       void v_Free (
00104          );
00105 
00106       ERRVALUE Create (              
00107          const GRE_LAYER *layer
00108          );
00109 
00110       void Delete (               
00111          );
00112 
00113       ERRVALUE v_GetDefaultScene ( 
00114          SCENE3D& scene
00115          ) const;
00116 
00117       ERRVALUE v_SetScene (
00118          const SCENE3D& scene,
00119          const SIMPLE_ARRAY<TEXTURE*> &textures   
00120          );
00121 
00122       ERRVALUE v_DrawScene (
00123          CONTROLLER &controller,        
00124          DRAWINGCONTEXT3D& drawing,
00125          TEXTURE* texture,
00126          TEXTUREFILTER* texturefilter
00127          );
00128 
00129       ERRVALUE v_SetScene (
00130          const SCENE3D& scene,
00131          const SIMPLE_ARRAY<GEOMETRIC3D*> &geometrics,
00132          const bool wireframe
00133          );
00134 
00135       float v_GetElevation (
00136          const float x,
00137          const float y
00138          ) const;
00139 
00140       ERRVALUE v_ComputeProfile (
00141          const POLYLINE& polyline,
00142          POLYLINE& profile,
00143          SIMPLE_ARRAY<INT32>& index
00144          );
00145 
00146       float v_GetAngleToNorth (
00147          const float x,
00148          const float y
00149          ) const;
00150 
00151       const ABSTRACT_SURFACE* v_GetAbstractSurface (
00152          ) { return m_Surface; }
00153 
00154       void v_SetCoordRefSys (
00155          const SPATREF::COORDREFSYS& CoordRefSys
00156          );
00157 
00158       const SPATREF::COORDREFSYS v_GetCoordRefSys (
00159          ) const { return m_CoordRefSys; };
00160 
00161       const DRECT3D& v_GetExtents (
00162          ) { return m_Extents; };
00163 
00164       void v_CreateBoundary (
00165          REGION2D& boundary
00166          );
00167 
00168       bool v_HasNull (
00169          ) const { return false; };
00170 
00171       bool v_IsNull (
00172          const float x,
00173          const float y
00174          ) const;
00175 
00176       ERRVALUE CreateRegularTIN (
00177          const TRANS2D_MAPGEN& transformation
00178          );
00179 
00180       void DeleteRegularTIN (
00181          );
00182 
00183       ERRVALUE SetSceneForRegularTIN (
00184          const SCENE3D& scene,
00185          const SIMPLE_ARRAY<TEXTURE*> &textures   
00186          );
00187 
00188       ERRVALUE DrawSceneForRegularTIN (
00189          CONTROLLER &controller,        
00190          DRAWINGCONTEXT3D& drawing,
00191          TEXTURE* texture,
00192          TEXTUREFILTER* texturefilter
00193          );
00194 
00195       void TransformRegularTIN (
00196          const TRANS2D_MAPGEN& transformation
00197          );
00198 
00199    #endif //!< GENERATING_DOXYGEN_OUTPUT
00200    };
00201 
00202 };    //! End of namespace
00203 
00204 #endif
00205 
00206 

Generated on Wed May 31 15:26:37 2006 for TNTsdk by  doxygen 1.3.8-20040913