VR-Forces 4.0.4 Class Documentation
include/terrainInterface/terrainProcessPolygonsBox.h
Go to the documentation of this file.
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);

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)