![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: terrainSelectionTool.h,v $ $Revision: 1.9 $ $State: Exp $ 00007 ******************************************************************************/ 00008 #ifndef terrainSelectionTool_H_ 00009 #define terrainSelectionTool_H_ 00010 00011 // 00012 // \file terrainSelectionTool.h 00013 // \brief This file contains classes related to selecting arbitrary sections of 00014 // terrain, composed of terrain elements (usually polygons), from a terrain database. 00015 // 00016 00017 #include "gdb/gdbDefines.h" 00018 #include "gdb/terrainSelection.h" 00019 00020 class DtTerrainDatabase; 00021 class DtNetworkElement; 00022 class DtNetworkEdge; 00023 class DtNetworkNode; 00024 class DtNetworkSegment; 00025 class DtSpecification; 00026 class DtExtent; 00027 class DtVector; 00028 class DtPolygon2D; 00029 class DtGdbNode; 00030 class DtCircle; 00031 00032 // 00033 // \brief The DtTerrainSelectionTool provides an interface for selecting terrain 00034 // elements from a specified terrain database or terrain selection, usually using 00035 // a geometric primitive such as a chord or extent as the selection mechanism. 00036 class DT_DLL_gdb DtTerrainSelectionTool 00037 { 00038 public: 00039 DtTerrainSelectionTool(); 00040 00041 virtual ~DtTerrainSelectionTool(); 00042 00043 private: 00044 // Copy constructor and Assignment operator not implemented 00045 DtTerrainSelectionTool(const DtTerrainSelectionTool& original); 00046 const DtTerrainSelectionTool& operator=(const DtTerrainSelectionTool& original); 00047 00048 public: 00049 00050 // \defgroup TerrainSelection 00051 // 00052 // Given the specified terrain database or terrain selection, selection 00053 // primitive, and terrain selection, use the primitive to select the 00054 // appropriate terrain elements, if any. 00055 // 00056 // \return A boolean indication whether or not any terrain was selected. 00058 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00059 const DtVector& localLocation, DtTerrainSelection& terrainSelection) const; 00060 00061 virtual bool selectTerrain(DtTerrainSelection& roughTerrainSelection, 00062 const DtVector& localLocation, DtTerrainSelection& refinedTerrainSelection) const; 00063 00064 00065 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00066 double lat, double lon, DtTerrainSelection& terrainSelection) const; 00067 00068 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00069 const DtExtent& extent, DtTerrainSelection& terrainSelection, 00070 bool selectInclusive = true) const; 00071 00072 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00073 const DtNetworkElement& networkElement, DtTerrainSelection& terrainSelection, 00074 bool selectInclusive = true) const; 00075 00076 00077 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00078 const DtPolygon2D& selectionPrimitive, DtTerrainSelection& terrainSelection, 00079 bool selectInclusive = true) const; 00080 virtual bool selectTerrain(DtTerrainSelection& roughTerrainSelection, 00081 const DtPolygon2D& selectionPrimitive, DtTerrainSelection& refinedTerrainSelection, 00082 bool selectInclusive = true) const; 00083 00084 00085 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00086 const DtCircle& circle, DtTerrainSelection& terrainSelection, 00087 bool selectInclusive = true) const; 00088 virtual bool selectTerrain(DtTerrainSelection& roughTerrainSelection, 00089 const DtCircle& circle, DtTerrainSelection& refinedTerrainSelection, 00090 bool selectInclusive = true) const; 00091 00092 00094 virtual bool selectTerrain(DtTerrainDatabase& terrainDatabase, 00095 DtGdbNode::DtGdbNodeType nodeType, 00096 DtTerrainSelection& terrainSelection); 00098 00099 00100 virtual bool selectTerrainUsingSegment(DtTerrainSelection& roughTerrainSelection, 00101 const DtNetworkSegment& segment, const DtSpecification& segmentSpec, 00102 DtTerrainSelection& refinedTerrainSelection, bool selectInclusive = true) const; 00103 00104 virtual bool selectTerrainUsingLinearFeature(DtTerrainDatabase& terrainDatabase, 00105 const DtNetworkEdge& linearFeature, DtTerrainSelection& terrainSelection, 00106 bool selectInclusive = true) const; 00107 00108 virtual bool selectTerrainUsingArealFeature(DtTerrainDatabase& terrainDatabase, 00109 const DtNetworkEdge& arealFeature, DtTerrainSelection& terrainSelection, 00110 bool selectInclusive = true) const; 00111 00112 virtual bool selectTerrainUsingPointFeature(DtTerrainDatabase& terrainDatabase, 00113 const DtNetworkNode& node, DtTerrainSelection& terrainSelection, 00114 bool selectInclusive = true) const; 00115 00116 virtual bool getTerrainElements(DtGdbNode& node, 00117 DtTerrainSelection& terrainSelection) const; 00118 00119 virtual bool getRoughSelection(DtTerrainDatabase& terrainDatabase, 00120 const DtExtent& boundingExtent, DtTerrainSelection& terrinSelection) const; 00121 00122 // \return A boolean indicating whether or not the edge intersects the 00123 // specified terrain element when projected in XY. 00124 virtual bool intersectsTerrainElementInXy(const DtVector& location, 00125 const DtTerrainElement& terrainElement) const; 00126 00127 virtual bool intersectsTerrainElementInXy(const DtChord& edge, 00128 const DtTerrainElement& terrainElement) const; 00129 00130 virtual bool intersectsTerrainElementInXy(const DtPolygon2D& polygon2d, 00131 const DtTerrainElement& terrainElement) const; 00132 00133 virtual bool intersectsTerrainElementInXy(const DtCircle& circle, 00134 const DtTerrainElement& terrainElement) const; 00135 00136 virtual bool boundsTerrainElementInXy(const DtPolygon2D& polygon2d, 00137 const DtTerrainElement& terrainElement) const; 00138 00139 virtual bool boundsTerrainElementInXy(const DtCircle& circle, 00140 const DtTerrainElement& terrainElement) const; 00141 00142 protected: 00143 private: 00144 00145 }; 00146 00147 #endif 00148 00149