![]() |
Parasol Planning Library (PPL)
|
A tetrahedral bounding region in workspace. More...
#include <TetrahedralBoundary.h>
Public Member Functions | |
virtual void | SetCenter (const std::vector< double > &_c) noexcept override |
virtual void | Translate (const Vector3d &_v) override |
virtual void | Translate (const std::vector< double > &_t) override |
virtual void | ResetBoundary (const std::vector< std::pair< double, double >> &_bbx, const double _margin) override |
Construction | |
TetrahedralBoundary (const std::array< Point3d, 4 > &_pts, const bool _check=true) | |
TetrahedralBoundary (const std::vector< Point3d > &_pts, const bool _check=true) | |
TetrahedralBoundary (XMLNode &_node) | |
virtual std::unique_ptr< Boundary > | Clone () const override |
virtual | ~TetrahedralBoundary () noexcept |
Property Accessors | |
virtual Boundary::Space | Type () const noexcept override |
Get the space type. More... | |
virtual std::string | Name () const noexcept override |
Get the name of the boundary type. More... | |
virtual size_t | GetDimension () const noexcept override |
Get the dimension of this boundary. More... | |
virtual double | GetMaxDist (const double _r1=2., const double _r2=.5) const override |
virtual const Range< double > & | GetRange (const size_t _i) const override |
virtual const std::vector< double > & | GetCenter () const noexcept override |
Get the boundary's center point. More... | |
virtual double | GetVolume () const noexcept override |
Get the boundary's volume (Lebesgue Measure). More... | |
Sampling | |
virtual std::vector< double > | GetRandomPoint () const override |
Get a random point inside the boundary. More... | |
virtual void | PushInside (std::vector< double > &_sample) const noexcept override |
Containment Testing | |
virtual bool | InBoundary (const Vector3d &_p) const override |
virtual bool | InBoundary (const std::vector< double > &_v) const override |
virtual bool | InBoundary (const Cfg &_c) const override |
Clearance Testing | |
virtual double | GetClearance (const Vector3d &_p) const override |
virtual Vector3d | GetClearancePoint (const Vector3d &_p) const override |
I/O | |
virtual void | Read (std::istream &_is, CountingStreamBuffer &_cbs) override |
virtual void | Write (std::ostream &_os) const override |
CGAL Representation | |
virtual CGALPolyhedron | CGAL () const override |
Create a CGAL polyhedron representation of this. More... | |
virtual GMSPolyhedron | MakePolyhedron () const override |
![]() | |
virtual void | ScalePoint (std::vector< double > &_point) const noexcept |
virtual void | UnscalePoint (std::vector< double > &_point) const noexcept |
virtual | ~Boundary () noexcept |
Protected Member Functions | |
Helpers | |
void | OrderPoints () noexcept |
Check that the points are in the correct order and fix if necessary. More... | |
std::array< Vector3d, 6 > | ComputeEdges () const |
std::array< Vector3d, 4 > | ComputeNormals () const |
Compute the normals. The first three are for faces touched by point 0. More... | |
NBox | ComputeBBX () const |
Compute the bounding box. More... | |
double | ComputeVolume () const |
Compute the volume. More... | |
![]() | |
bool | InWorkspace (const Cfg &_c) const |
bool | InCSpace (const Cfg &_c) const |
Protected Attributes | |
Internal State | |
std::array< Point3d, 4 > | m_points |
The vertices of the tetrahedron. More... | |
std::array< Vector3d, 4 > | m_normals |
The normals of the tetrahedron. More... | |
NBox | m_bbx {3} |
The bounding box of the tetrahedron. More... | |
double | m_volume {0} |
The volume of the tetrahedron. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &_os, const TetrahedralBoundary &_b) |
Additional Inherited Members | |
![]() | |
enum | Space { Workspace , CSpace } |
The types of space that can be modeled with boundaries. More... | |
typedef CGAL::Exact_predicates_exact_constructions_kernel | CGALKernel |
typedef CGAL::Polyhedron_3< CGALKernel > | CGALPolyhedron |
![]() | |
static std::unique_ptr< Boundary > | Factory (XMLNode &_node) |
A tetrahedral bounding region in workspace.
|
explicit |
Construct a TetrahedralBoundary from four points.
_pts | The points to use. |
_check | Check that the points are correct? |
If no check is used, the first three points must form an outward-facing facet using the right-hand rule as shown.
1
/|\ / | \ 2–|–3 \ | / |/ 0
|
explicit |
TetrahedralBoundary::TetrahedralBoundary | ( | XMLNode & | _node | ) |
|
virtualdefaultnoexcept |
|
overridevirtual |
Create a CGAL polyhedron representation of this.
The first three points must form an outward-facing facet.
Reimplemented from Boundary.
|
overridevirtual |
Duplicate this boundary and return a dynamically-allocated copy with the same type. This is provided in the base class so that we can copy a boundary object without knowing its type.
Implements Boundary.
|
protected |
Compute the bounding box.
|
protected |
Compute the edges. The resulting vectors point from lower-index points higher-index points.
|
protected |
Compute the normals. The first three are for faces touched by point 0.
|
protected |
Compute the volume.
|
overridevirtualnoexcept |
Get the boundary's center point.
Implements Boundary.
|
overridevirtual |
Get the distance from a test point to the nearest point on the boundary.
_p | The test point. |
Implements Boundary.
|
overridevirtual |
Get the nearest point on the boundary to a test point.
_p | The test point. |
Implements Boundary.
|
overridevirtualnoexcept |
Get the dimension of this boundary.
Implements Boundary.
|
overridevirtual |
Get the longest distance contained within the boundary. Supports any Minkowski distance.
_r1 | The term-wise power in the Minkowski difference. |
_r2 | The whole expression power in the Minkowski difference. |
Implements Boundary.
|
overridevirtual |
Get a random point inside the boundary.
Implements Boundary.
|
overridevirtual |
Get the boundary range for a specific dimension.
_i | The dimension index. |
Implements Boundary.
|
overridevirtualnoexcept |
Get the boundary's volume (Lebesgue Measure).
Implements Boundary.
|
overridevirtual |
Test if a configuration lies within the boundary.
_cfg | The configuration to test. |
Implements Boundary.
|
overridevirtual |
Test if a specific n-dimensional point lies within the boundary.
_v | The point to test. |
Implements Boundary.
|
overridevirtual |
Test if a specific point lies within the boundary.
_p | The point to test. |
Reimplemented from Boundary.
|
overridevirtual |
Create a GMSPolyhedron representation of this. The polyhedron will be inside-out (normals facing inward) to properly represent the contact normals.
Reimplemented from Boundary.
|
overridevirtualnoexcept |
Get the name of the boundary type.
Implements Boundary.
|
protectednoexcept |
Check that the points are in the correct order and fix if necessary.
|
overridevirtualnoexcept |
Minimally push a point so that it lies within the boundary.
_point | The point to push. |
Implements Boundary.
|
overridevirtual |
Read in a boundary.
_is | The input stream to read from. |
_cbs | The counting stream buffer for keeping track of where we are in the input stream. |
Implements Boundary.
|
overridevirtual |
Resize the boundary to fit inside a bounding box plus some margin.
_bbx | The new base bounding box. |
_margin | The additional margin for _bbx. Negative margins cause shrinkage. |
Implements Boundary.
|
overridevirtualnoexcept |
Move the boundary to a new center point.
_c | The new center point for the boundary. |
Implements Boundary.
|
overridevirtual |
|
overridevirtual |
|
overridevirtualnoexcept |
Get the space type.
Implements Boundary.
|
overridevirtual |
|
friend |
|
protected |
The bounding box of the tetrahedron.
|
protected |
The normals of the tetrahedron.
|
protected |
The vertices of the tetrahedron.
|
protected |
The volume of the tetrahedron.