![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 00002 #pragma once 00003 00004 #include "terrainInterface/terrainInterfaceDefines.h" 00005 #include "geometry/surface.h" 00006 #include "geometry/point.h" 00007 #include "matrix/coordTransform.h" 00008 #include <deque> 00009 00010 enum DtPointAxis 00011 { 00012 X_AXIS, 00013 Y_AXIS, 00014 Z_AXIS 00015 }; 00016 00017 struct DT_DLL_terrainInterface DtTerrainTriangleStruct 00018 { 00019 DtPoint points[3]; 00020 DtSurface surface; 00021 int shapeId; 00022 }; 00023 00024 class DT_DLL_terrainInterface DtTerrainProcessPolygonsBox 00025 { 00026 public: 00027 DtTerrainProcessPolygonsBox(); 00028 DtTerrainProcessPolygonsBox(const DtPoint& nw, const DtPoint& ne, const DtPoint& sw, const DtPoint& se); 00029 DtTerrainProcessPolygonsBox(const DtTerrainProcessPolygonsBox& orig); 00030 DtTerrainProcessPolygonsBox& operator=(const DtTerrainProcessPolygonsBox& orig); 00031 virtual ~DtTerrainProcessPolygonsBox(); 00032 00033 virtual double minX(bool inLocal = true) const; 00034 virtual double maxX(bool inLocal = true) const; 00035 virtual double minY(bool inLocal = true) const; 00036 virtual double maxY(bool inLocal = true) const; 00037 virtual double minZ(bool inLocal = true) const; 00038 virtual double maxZ(bool inLocal = true) const; 00039 virtual DtPoint northeast(bool inLocal = true) const; 00040 virtual DtPoint northwest(bool inLocal = true) const; 00041 virtual DtPoint southeast(bool inLocal = true) const; 00042 virtual DtPoint southwest(bool inLocal = true) const; 00043 virtual void setNewNW(const DtPoint& nw); 00044 virtual void setNewNE(const DtPoint& ne); 00045 virtual void setNewSW(const DtPoint& sw); 00046 virtual void setNewSE(const DtPoint& se); 00047 virtual bool isPointWithinAxisAlignedBoundingBox(const DtPoint& point) const; 00048 virtual bool isTriangleWithinBox(const DtTerrainTriangleStruct& polygon) const; 00049 virtual bool isPointInsideBoundingBox(const DtPoint &point) const; 00050 virtual bool isUseAllTerrain() const; 00051 virtual void setIsUseAllTerrain(bool useAllTerrain); 00052 virtual bool useZ() const; 00053 virtual void setUseZ(bool useZ); 00054 virtual DtPoint centerOfBox() const; 00055 virtual void setIsGeocentric(bool isGeo); 00056 virtual bool isGeocentric() const; 00057 virtual bool isTriangleAABBWithinAABB(const DtTerrainTriangleStruct& triangle) const; 00058 virtual bool doesTriangleIntersect(const DtTerrainTriangleStruct& triangle) const; 00059 virtual bool isBoxInsideTriangle(const DtTerrainTriangleStruct& triangle) const; 00060 00061 protected: 00062 virtual double determineSideOfLine(double x1, double x2, double y1, double y2, double xp, double yp ) const; 00063 virtual DtCoordTransform transform() const; 00065 virtual double maxMin(const std::deque<DtPoint>& points, DtPointAxis axis, bool mode) const; 00066 00067 DtPoint myNorthwest; 00068 DtPoint myNortheast; 00069 DtPoint mySouthwest; 00070 DtPoint mySoutheast; 00071 bool myIsUseAllTerrain; 00072 bool myUseZ; 00073 bool myIsGeocentric; 00074 DtCoordTransform myTransform; 00075 }; 00076 00077 typedef void (*DtTriangleCallbackFinalizeFcn)(int status, void* usr); 00078 typedef void (*DtTriangleCallbackFcn)(DtTerrainTriangleStruct& triangle, void* usr);