|  | 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 | 
|  Public Member Functions inherited from Boundary | |
| 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... | |
|  Protected Member Functions inherited from Boundary | |
| 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 | |
|  Public Types inherited from Boundary | |
| 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 Public Member Functions inherited from Boundary | |
| 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.