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

Generated on Thu Apr 26 04:44:37 2007 for TNTsdk by  doxygen 1.5.2