VR-Forces 4.0.4 Class Documentation
include/vrfmodel/pathPlanner.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2005 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 
00009 
00012 
00013 #pragma once
00014 
00015 #include "geometry/tdbextent.h"
00016 #include <vlutil/vlHashlist.h>
00017 #include <matrix/LibMatrix.h>
00018 #include <list>
00019 #include "gdb/rangeNetSegMet.h"
00020 #include "gdb/intersectNetSegMet.h"
00021 
00022 
00023 class DtPhysicalWorld;
00024 class DtVector;
00025 class DtList;
00026 class DtPoint;
00027 class DtNetworkSegment;
00028 class DtVectorNetwork;
00029 class DtPathMetric;
00030 class DtRwVectorObstructionTypeList;
00031 class DtRangeNetworkSegmentMetric;
00032 class DtIntersectNetworkSegmentMetric;
00033 
00103 #include "vrfmodel/vrfmodelDefines.h"
00104 class DT_DLL_vrfmodel DtPathPlanner
00105 {
00106 private:
00108    DtPathPlanner(const DtPathPlanner& orig);
00110    DtPathPlanner& operator=(const DtPathPlanner& orig);
00111 
00112 public:
00113    DtPathPlanner();
00114 
00115    virtual ~DtPathPlanner();
00116 
00118 
00121    virtual void setPathMetric(DtPathMetric* metric);
00122 
00124    virtual void setNodeSpacing(double space);
00125 
00127    virtual void setSegmentNodeSpacing(double space);
00128 
00130    virtual void setSearchAreaWidth(double width);
00131 
00134    virtual void setSearchAreaExtraLength(double length);
00135 
00138    virtual void initPreferredSegmentMetrics(const DtRwVectorObstructionTypeList& segmentTypes);
00139 
00142    virtual void initImpassableSegmentMetrics(const DtRwVectorObstructionTypeList& segmentTypes);
00143 
00148    virtual void setCrossCountryPenalty(double penalty);
00149 
00152    virtual void setPhysicalWorld(const DtPhysicalWorld* physWorld);
00153 
00159    virtual bool makePath(const DtVector& start, const DtVector& goal);
00160 
00163    virtual DtList* path();
00164 
00166    virtual void interrupt();
00167 
00169 
00171    virtual bool nodeVisited(const DtPoint& point);
00172 
00174    virtual void markNodeVisited(const DtPoint& point);
00175 
00177    virtual bool nodeVisited(const DtNetworkSegment* segment, int position);
00178 
00180    virtual void markNodeVisited(const DtNetworkSegment* segment, int position);
00181 
00183    virtual bool nodeSearchable(const DtPoint& point);
00184 
00186    virtual double nodeSpacing();
00187 
00189    virtual const DtPathMetric* pathMetric() const;
00190 
00192    virtual const std::list<DtRangeNetworkSegmentMetric>& preferredSegmentMetrics() const;
00193 
00195    virtual const std::list<DtIntersectNetworkSegmentMetric>& impassableSegmentMetrics() const;
00196 
00198    virtual double crossCountryPenalty();
00199 
00200    virtual const DtVectorNetwork* vectorNetwork();
00201 
00205    virtual int findNumberOfNodesOnSegment(const DtNetworkSegment* segment);
00206 
00210    virtual int findSegmentPositionAndPoint(const DtNetworkSegment* segment, DtPoint& point);
00211 
00213    virtual DtPoint findPointForSegmentPosition(const DtNetworkSegment* segment, int segPos);
00214 
00218    virtual DtPoint findAdjacentGridPoint(const DtPoint& point, int xOffset, int yOffset);
00219    
00222    virtual DtPoint findNearbyGridPoint(const DtPoint& point, int corner);
00223 
00226    virtual bool checkNoGoVectorIntersection(const DtPoint& start, const DtPoint& end);
00227 
00233    virtual double calculateCost(const DtPoint& startPoint, const DtPoint& endPoint,
00234          bool checkVectorNetwork = true);
00235 
00238    virtual double estimateCostToGoal(const DtPoint& point);
00239 
00241    virtual bool isGoal(const DtPoint& point);
00242 
00246    virtual bool nearGoal(const DtPoint& point);
00247 
00249    virtual const DtPoint& goalPoint(); 
00250 
00252    virtual void addSolutionPoint(const DtPoint& point);
00253 
00255    virtual void clearStats();
00256 
00258    virtual void printStats();
00259 
00264    virtual void nodeCreated();
00265 
00266    virtual void nodeDeleted();
00267 
00268    virtual void nodeExpanded();
00270 
00273    virtual void checkInterrupt();
00274 
00278    static int round(double val);
00279 
00280 protected:
00282    void clearPath();
00283 
00285    virtual void initNodeTable();
00286 
00289    virtual void initTransforms(const DtVector& startPoint, const DtVector& endPoint);
00290 
00292    virtual void initGridExtent(const DtVector& startPoint, const DtVector& endPoint,
00293          double extraX, double extraY);
00294 
00296    void clearVisitedSegmentList();
00297 
00300    virtual void optimizePath();
00301 
00308    virtual void setPathToTerrainHeight();
00309 
00314    virtual void correctPathForTurningRadius(double turningRadius);
00315 
00317    virtual void printVisitedSegments();
00318 
00321    virtual DtPoint terrainPointToGrid(const DtPoint& terrainPoint);
00322 
00325    virtual DtPoint gridPointToTerrain(const DtPoint& gridPoint);
00326 
00331    virtual DtVector setToZeroAltitudeTopo(const DtVector &localPos);
00332 
00334    const DtPhysicalWorld* myPhysicalWorld;
00336    DtList* myPath;
00337 
00339    bool* myNodeTable;
00340    int myNodeTableXSize;
00341    int myNodeTableYSize;
00342    double myNodeSpacing;
00343    double mySegmentNodeSpacing;
00344    double mySearchAreaWidth;
00345    double mySearchAreaExtraLength;
00346    double myCrossCountryPenalty; 
00347    DtExtent mySearchableExtent;
00348    DtPoint myGoalPoint;
00349    DtPathMetric* myPathMetric;
00350    std::list<DtRangeNetworkSegmentMetric> myPreferredSegmentMetrics;
00351    std::list<DtIntersectNetworkSegmentMetric> myImpassableSegmentMetrics;
00352    bool myInterruptFlag;
00353 
00354    DtHashList myVisitedSegmentList;
00355 
00356    DtCoordTransform myTopoToGridTransform;
00357    DtCoordTransform myGridToTopoTransform;
00358    DtCoordTransform myLocalToTopoTransform;
00359    DtCoordTransform myTopoToLocalTransform;
00360 
00362    unsigned int myNumberOfCostsCalculated;
00363    unsigned int myTotalNodesExpanded;
00364    unsigned int myTotalNodesCreated;
00365    unsigned int myTotalNodesPruned;
00366    unsigned int myMaxConcurrentNodes;
00367    unsigned int myTotalNodesInMemory;
00368 
00369 };
00370 
00371 

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)