![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2004 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: pathMetric.h,v $ $Revision: 1.4 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00012 00014 00015 #ifndef pathMetric_H_ 00016 #define pathMetric_H_ 00017 00018 #include "geometry/point.h" 00019 #include "vrfobjcore/pathMetricFact.h" 00020 00021 class DtVrfObject; 00022 class DtChordIntersectionRecord; 00023 00046 #include "vrfobjcore/vrfobjcoreDefines.h" 00047 class DT_DLL_vrfobjcore DtPathMetric 00048 { 00049 private: 00051 DtPathMetric(); 00053 DtPathMetric(const DtPathMetric& orig); 00055 DtPathMetric& operator=(const DtPathMetric& orig); 00056 00057 public: 00059 DtPathMetric(DtVrfObject* entity); 00060 00062 virtual ~DtPathMetric(); 00063 00065 virtual bool init(); 00066 00068 virtual double transitionCost(const DtPoint& startPoint, 00069 const DtPoint& endPoint) const = 0; 00070 00074 virtual double turningCost(double cosAngle) const = 0; 00075 00086 virtual double heuristic(const DtPoint& point, const DtPoint& goalPoint) const; 00087 00088 virtual DtVrfObject* entity(); 00089 virtual const DtVrfObject* entity() const; 00090 00092 static void addPathMetricCreatorFcn(const DtString& type, 00093 DtPathMetricCreatorFcn fcn); 00094 00095 static DtPathMetricFactory* factory(); 00096 static void setFactory(DtPathMetricFactory* factory); 00097 00102 static DtPathMetric* createPathMetric(const DtString& type, DtVrfObject* entity); 00104 00105 protected: 00106 DtVrfObject* myEntity; 00107 static DtPathMetricFactory* theFactory; 00108 }; 00109 00110 #endif