![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: terrainDatabaseTool.h,v $ $Revision: 1.5 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef terrainDbTool_H_ 00009 #define terrainDbTool_H_ 00010 00011 // 00012 // \file terrainDbTool.h 00013 // \brief Contains the DtTerrainDatabaseTool class declaration. 00014 // 00015 00016 #include "gdb/gdbDefines.h" 00017 00018 class DtTerrainDatabase; 00019 class DtTerrainDatabaseToolConfiguration; 00020 class Coordinate_System; 00021 class DtPoint; 00022 00023 // 00024 // The DtTerrainDatabaseTool is a tool for manipulating a specified terrain 00025 // database. It provides capabilities such as clipping/planarizing the vector 00026 // data, eliminating duplicate vertices, and other common terrain modifications. 00027 class DT_DLL_gdb DtTerrainDatabaseTool 00028 { 00029 public: 00030 00031 DtTerrainDatabaseTool(); 00032 00033 // Copy constructor and Assignment operator are left 00034 // to default, compiler generated versions. 00035 // @note The DtTerrainDatabaseTool @b is copyable and assignable. 00036 // 00037 // DtTerrainDatabaseTool(const DtTerrainDatabaseTool& original); 00038 // DtTerrainDatabaseTool& operator=(const DtTerrainDatabaseTool& original); 00039 00040 virtual ~DtTerrainDatabaseTool(); 00041 00042 // Eliminate duplicate vertices with tolerance 00043 void eliminateDuplicateVertices(double tolerance, DtTerrainDatabase& terrainDb) const; 00044 00045 // Eliminate duplicate surfaces 00046 void eliminateDuplicateSurfaces(DtTerrainDatabase& terrainDb) const; 00047 00048 // Turn 3-sided polygons into triangles, if any. 00049 void convert3SidedPolygonsToTriangles(DtTerrainDatabase& terrainDb) const; 00050 00051 // Apply all transformation nodes 00052 void collapseNodeTree(DtTerrainDatabase& terrainDb) const; 00053 00054 // Transform the existing coordinate system to another coordinate system. 00055 void transformCoordinateSystem(Coordinate_System& toCs, 00056 bool allowReflect, DtTerrainDatabase& terrainDb) const; 00057 00058 void setOrigin(double radiansLatitude, double radiansLongitude, 00059 unsigned int zone, DtTerrainDatabase& terrainDb) const; 00060 00061 // Clip vector data 00062 void clipVectorData(DtTerrainDatabase& terrainDb) const; 00063 00064 void clipVectorData(const DtPoint& swPoint, const DtPoint& nePoint, 00065 DtTerrainDatabase& terrainDb) const; 00066 00067 // Planarize vector data 00068 void planarizeVectorData(double tolerance, unsigned int excessiveEdgeCount, 00069 DtTerrainDatabase& terrainDb) const; 00070 00071 // Eliminate duplicate specifications 00072 void eliminateDuplicateSpecifications(DtTerrainDatabase& terrainDb) const; 00073 00074 // Re-balance the node tree - is this exposed or not? 00075 void rebalanceTerrain(unsigned int branching, unsigned int leafing, 00076 DtTerrainDatabase& terrainDb) const; 00077 00078 bool processDatabase(DtTerrainDatabase& terrainDatabase, 00079 const DtTerrainDatabaseToolConfiguration& config); 00080 00081 00082 private: 00083 00084 00085 00086 }; 00087 00088 #endif 00089 00090 00091