Parasol Planning Library (PPL)
MedialAxisUtilities.h
Go to the documentation of this file.
1 #ifndef PMPL_MEDIAL_AXIS_UTILITY_H_
2 #define PMPL_MEDIAL_AXIS_UTILITY_H_
3 
4 #include "Geometry/Bodies/Body.h"
6 //#include "MPLibrary/LocalPlanners/StraightLine.h"
9 #include "Utilities/MPUtils.h"
11 
17 
18  public:
19 
22 
23 
24 
28 
42  string _vcLabel = "", string _dmLabel = "",
43  bool _exactClearance = false, bool _exactPenetration = false,
44  size_t _clearanceRays = 10, size_t _penetrationRays = 10,
45  bool _useBBX = true, bool _positionalDofsOnly = true, bool _debug = false,
46  double _epsilon = 0.1, size_t _historyLength = 5);
47 
50  MedialAxisUtility(XMLNode& _node);
51 
52  virtual ~MedialAxisUtility() = default;
53 
57 
60  virtual void Print(ostream& _os) const override;
61 
64  void SetDebug(const bool _debug) { this->m_debug = _debug; }
65 
69 
71  double GetEpsilon() const {return m_epsilon;}
72 
76 
81  bool PushToMedialAxis(Cfg& _cfg, const Boundary* const _b);
82 
89  bool PushFromInsideObstacle(Cfg& _cfg, const Boundary* const _b);
90 
91 
98  bool PushCfgToMedialAxisMidpointRule(Cfg& _cfg, const Boundary* const _b);
100 
101  private:
102 
105 
106  // m_epsilon is used only externally right now (not used in pushing to MA)
107  double m_epsilon{.1};
108  size_t m_historyLength{5};
109 
111 
119  bool FuzzyVectorEquality(mathtool::Vector3d _v1, mathtool::Vector3d _v2,
120  const double _tolerance = 10.*std::numeric_limits<double>::epsilon());
121 
128  bool WitnessObstacleEquality(Cfg _cfg, CDInfo _firstWitnessInfo, CDInfo _secondWitnessInfo);
129 };
130 
131 #endif
Definition: Boundary.h:30
Definition: Cfg.h:38
Definition: ClearanceUtilities.h:48
bool m_debug
Print debug info?
Definition: MPBaseObject.h:183
Definition: MedialAxisUtilities.h:16
virtual ~MedialAxisUtility()=default
bool PushCfgToMedialAxisMidpointRule(Cfg &_cfg, const Boundary *const _b)
Definition: MedialAxisUtilities.cpp:160
double GetEpsilon() const
Get the value of epsilon.
Definition: MedialAxisUtilities.h:71
bool PushToMedialAxis(Cfg &_cfg, const Boundary *const _b)
Definition: MedialAxisUtilities.cpp:50
bool PushFromInsideObstacle(Cfg &_cfg, const Boundary *const _b)
Definition: MedialAxisUtilities.cpp:93
void SetDebug(const bool _debug)
Definition: MedialAxisUtilities.h:64
MedialAxisUtility(string _vcLabel="", string _dmLabel="", bool _exactClearance=false, bool _exactPenetration=false, size_t _clearanceRays=10, size_t _penetrationRays=10, bool _useBBX=true, bool _positionalDofsOnly=true, bool _debug=false, double _epsilon=0.1, size_t _historyLength=5)
Definition: MedialAxisUtilities.cpp:11
virtual void Print(ostream &_os) const override
Definition: MedialAxisUtilities.cpp:41
Definition: XMLNode.h:27
Definition: CDInfo.h:139