![]() |
Parasol Planning Library (PPL)
|
2D Medial Axis construction using Segment Delaunay Graph More...
#include <MedialAxis2D.h>
Data Structures | |
struct | edgeHash |
struct | MedialEdge |
Medial axis edge structure. More... | |
struct | PolygonSegment |
Public Types | |
Local types | |
{ | |
typedef CGAL::Simple_cartesian< double > | CK |
typedef CGAL::Segment_Delaunay_graph_filtered_traits_2< CK, CGAL::Field_with_sqrt_tag > | Gt |
typedef CGAL::Segment_Delaunay_graph_2< Gt > | SDG2 |
typedef SDG2::Site_2 | Site2 |
typedef SDG2::Point_2 | Point2 |
typedef SDG2::Edge | Edge2 |
typedef SDG2::Data_structure | DS |
typedef Gt::Segment_2 | Segment2 |
typedef CGAL::Parabola_segment_2< Gt > | Parabola2 |
typedef pair< double, Point3d > | ClearanceType |
typedef WorkspaceSkeleton | SkeletonGraphType |
typedef unordered_map< WorkspaceSkeleton::VD, ClearanceType > | VertexClearanceMapType |
typedef stapl::sequential::graph< stapl::UNDIRECTED, stapl::MULTIEDGES, Point2, MedialEdge > | MedialAxisGraph |
Underlying medial axis graph type. More... | |
typedef vector< PolygonSegment > | PolygonSegments |
typedef unordered_map< WorkspaceSkeleton::ED, vector< ClearanceType >, edgeHash > | EdgeClearanceMapType |
Public Member Functions | |
Construction | |
MedialAxis2D () | |
MedialAxis2D (vector< GMSPolyhedron > &_polys, const Boundary *_b, vector< Boundary * > _bndrys=vector< Boundary * >()) | |
Modifiers | |
void | AddSegments (vector< pair< Point3d, Point3d >> &_s) |
void | AddSegments (vector< Point3d > &_p, vector< pair< size_t, size_t >> &_s) |
void | AddPoints (vector< Point3d > &_p) |
void | BuildMedialAxis () |
Filter out medial axis edges. More... | |
Accessors | |
tuple< WorkspaceSkeleton, VertexClearanceMapType, EdgeClearanceMapType > | GetSkeleton (size_t _t=0) |
vector< ClearanceType > | AnnotateSegment (MedialEdge &_e) |
Calculete the clearance annotation of the interpolated points. More... | |
double | GetVertexClearance (size_t _i) |
Point3d | GetVertexClearanceWitness (size_t _i) |
2D Medial Axis construction using Segment Delaunay Graph
typedef CGAL::Simple_cartesian<double> MedialAxis2D::CK |
typedef pair<double,Point3d> MedialAxis2D::ClearanceType |
typedef SDG2::Data_structure MedialAxis2D::DS |
typedef SDG2::Edge MedialAxis2D::Edge2 |
typedef unordered_map<WorkspaceSkeleton::ED,vector<ClearanceType>, edgeHash> MedialAxis2D::EdgeClearanceMapType |
typedef CGAL::Segment_Delaunay_graph_filtered_traits_2<CK, CGAL::Field_with_sqrt_tag> MedialAxis2D::Gt |
typedef stapl::sequential::graph<stapl::UNDIRECTED,stapl::MULTIEDGES, Point2, MedialEdge> MedialAxis2D::MedialAxisGraph |
Underlying medial axis graph type.
typedef CGAL::Parabola_segment_2<Gt> MedialAxis2D::Parabola2 |
typedef SDG2::Point_2 MedialAxis2D::Point2 |
typedef vector<PolygonSegment> MedialAxis2D::PolygonSegments |
typedef CGAL::Segment_Delaunay_graph_2<Gt> MedialAxis2D::SDG2 |
typedef Gt::Segment_2 MedialAxis2D::Segment2 |
typedef SDG2::Site_2 MedialAxis2D::Site2 |
typedef unordered_map<WorkspaceSkeleton::VD, ClearanceType> MedialAxis2D::VertexClearanceMapType |
|
inline |
MedialAxis2D::MedialAxis2D | ( | vector< GMSPolyhedron > & | _polys, |
const Boundary * | _b, | ||
vector< Boundary * > | _bndrys = vector<Boundary*>() |
||
) |
void MedialAxis2D::AddPoints | ( | vector< Point3d > & | _p | ) |
Add a set of points
_p | Points. |
void MedialAxis2D::AddSegments | ( | vector< pair< Point3d, Point3d >> & | _s | ) |
Add a set of insert segments
_s | Segments. |
void MedialAxis2D::AddSegments | ( | vector< Point3d > & | _p, |
vector< pair< size_t, size_t >> & | _s | ||
) |
Add a set of insert segments
_p | Points. |
_s | Segments. |
vector< MedialAxis2D::ClearanceType > MedialAxis2D::AnnotateSegment | ( | MedialEdge & | _e | ) |
Calculete the clearance annotation of the interpolated points.
void MedialAxis2D::BuildMedialAxis | ( | ) |
Filter out medial axis edges.
tuple< WorkspaceSkeleton, MedialAxis2D::VertexClearanceMapType, MedialAxis2D::EdgeClearanceMapType > MedialAxis2D::GetSkeleton | ( | size_t | _t = 0 | ) |
Get the workspace skeleton from the medial axis
_t | Pass 0 for entire graph, 1 for free space and 2 for obstacle space |
double MedialAxis2D::GetVertexClearance | ( | size_t | _i | ) |
Point3d MedialAxis2D::GetVertexClearanceWitness | ( | size_t | _i | ) |