Parasol Planning Library (PPL)
Public Member Functions
AbstractBoundingBox Class Reference

#include <AbstractBoundingBox.h>

Inheritance diagram for AbstractBoundingBox:
Inheritance graph
[legend]
Collaboration diagram for AbstractBoundingBox:
Collaboration graph
[legend]

Public Member Functions

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...
 
Construction
 AbstractBoundingBox (const size_t _n)
 
 AbstractBoundingBox (const std::vector< double > &_center)
 
 AbstractBoundingBox (XMLNode &_node)
 
virtual ~AbstractBoundingBox () noexcept
 
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 std::vector< double > &_p) const override
 
virtual bool InBoundary (const Vector3d &_p) const
 
virtual bool InBoundary (const std::vector< double > &_v) const=0
 
virtual bool InBoundary (const Cfg &_c) const=0
 
Clearance Testing
virtual double GetClearance (const Vector3d &_p) const override
 
virtual Vector3d GetClearancePoint (const Vector3d &_p) const override
 
int GetSideID (const std::vector< double > &_p) const
 
Modifiers
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
 
I/O
virtual void Read (std::istream &_is, CountingStreamBuffer &_cbs) override
 
virtual void Write (std::ostream &_os) const override
 
- Public Member Functions inherited from Boundary
virtual Space Type () const noexcept=0
 Get the space type. More...
 
virtual std::string Name () const noexcept=0
 Get the name of the boundary type. More...
 
virtual void ScalePoint (std::vector< double > &_point) const noexcept
 
virtual void UnscalePoint (std::vector< double > &_point) const noexcept
 
virtual bool InBoundary (const Vector3d &_p) const
 
virtual bool InBoundary (const Cfg &_c) const =0
 
virtual CGALPolyhedron CGAL () const
 Create a CGAL polyhedron representation of this. More...
 
virtual GMSPolyhedron MakePolyhedron () const
 
virtual ~Boundary () noexcept
 
virtual std::unique_ptr< BoundaryClone () const =0
 
- Public Member Functions inherited from NBox
 NBox (const size_t _n)
 
 NBox (const std::vector< double > &_center)
 
virtual ~NBox () noexcept
 
size_t GetDimension () const noexcept
 Get the dimension of this box. More...
 
void SetCenter (const std::vector< double > &_c) noexcept
 Set the center point. More...
 
const std::vector< double > & GetCenter () const noexcept
 Get the center point. More...
 
const Range< double > & GetRange (const size_t _i) const noexcept
 
const std::vector< Range< double > > & GetRanges () const noexcept
 Get all of the ranges. More...
 
void SetRange (const size_t _i, const Range< double > &_r) noexcept
 
void SetRange (const size_t _i, Range< double > &&_r) noexcept
 
void SetRange (const size_t _i, const double _min, const double _max) noexcept
 
void Translate (const std::vector< double > &_v) noexcept
 
double GetVolume () const noexcept
 Compute the (hyper)volume or Lebesgue measure. More...
 
bool Contains (const std::vector< double > &_p) const noexcept
 
double Clearance (const std::vector< double > &_p) const noexcept
 
std::vector< double > ClearancePoint (std::vector< double > _p) const noexcept
 
std::vector< double > Sample () const
 Sample a random point in the box with uniform probability. More...
 

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< CGALKernelCGALPolyhedron
 
- Static Public Member Functions inherited from Boundary
static std::unique_ptr< BoundaryFactory (XMLNode &_node)
 
- Protected Member Functions inherited from Boundary
bool InWorkspace (const Cfg &_c) const
 
bool InCSpace (const Cfg &_c) const
 

Detailed Description

An abstract axis-aligned N-dimensional bounding box.

Constructor & Destructor Documentation

◆ AbstractBoundingBox() [1/3]

AbstractBoundingBox::AbstractBoundingBox ( const size_t  _n)
explicit

Construct an infinite bounding box in n dimensions.

Parameters
[in]_nThe number of dimensions.

◆ AbstractBoundingBox() [2/3]

AbstractBoundingBox::AbstractBoundingBox ( const std::vector< double > &  _center)
explicit

Construct an infinite bounding box in n dimensions.

Parameters
[in]_nThe number of dimensions.

◆ AbstractBoundingBox() [3/3]

AbstractBoundingBox::AbstractBoundingBox ( XMLNode _node)

Construct a bounding box from an XML node.

Parameters
_nodeThe XML node to parse.

◆ ~AbstractBoundingBox()

AbstractBoundingBox::~AbstractBoundingBox ( )
virtualdefaultnoexcept

Member Function Documentation

◆ GetCenter()

const std::vector< double > & AbstractBoundingBox::GetCenter ( ) const
overridevirtualnoexcept

Get the boundary's center point.

Implements Boundary.

◆ GetClearance()

double AbstractBoundingBox::GetClearance ( const Vector3d &  _p) const
overridevirtual

Get the distance from a test point to the nearest point on the boundary.

Parameters
_pThe test point.
Returns
The distance from _p to the clearance point of _p.

Implements Boundary.

◆ GetClearancePoint()

Vector3d AbstractBoundingBox::GetClearancePoint ( const Vector3d &  _p) const
overridevirtual

Get the nearest point on the boundary to a test point.

Parameters
_pThe test point.
Returns
The point on this boundary nearest to _p.

Implements Boundary.

◆ GetDimension()

size_t AbstractBoundingBox::GetDimension ( ) const
overridevirtualnoexcept

Get the dimension of this boundary.

Implements Boundary.

◆ GetMaxDist()

double AbstractBoundingBox::GetMaxDist ( const double  _r1 = 2.,
const double  _r2 = .5 
) const
overridevirtual

Get the longest distance contained within the boundary. Supports any Minkowski distance.

Parameters
_r1The term-wise power in the Minkowski difference.
_r2The whole expression power in the Minkowski difference.

Implements Boundary.

◆ GetRandomPoint()

std::vector< double > AbstractBoundingBox::GetRandomPoint ( ) const
overridevirtual

Get a random point inside the boundary.

Implements Boundary.

◆ GetRange()

const Range< double > & AbstractBoundingBox::GetRange ( const size_t  _i) const
overridevirtual

Get the boundary range for a specific dimension.

Parameters
_iThe dimension index.
Returns
The range of values spanned by this boundary in dimension _i.

Implements Boundary.

◆ GetSideID()

int AbstractBoundingBox::GetSideID ( const std::vector< double > &  _p) const

Get an integer describing which three-dimensional side a given point _p is nearest.

Parameters
_pThe point of interest.
Returns
An integer indicating the nearest side.

◆ GetVolume()

double AbstractBoundingBox::GetVolume ( ) const
overridevirtualnoexcept

Get the boundary's volume (Lebesgue Measure).

Implements Boundary.

◆ InBoundary() [1/4]

virtual bool Boundary::InBoundary

Test if a configuration lies within the boundary.

Parameters
_cfgThe configuration to test.
Returns
True if the configuration is considered to lie inside the boundary.

◆ InBoundary() [2/4]

bool AbstractBoundingBox::InBoundary ( const std::vector< double > &  _v) const
overridevirtual

Test if a specific n-dimensional point lies within the boundary.

Parameters
_vThe point to test.
Returns
True if _v lies inside this boundary.

Implements Boundary.

◆ InBoundary() [3/4]

virtual bool Boundary::InBoundary

Test if a specific n-dimensional point lies within the boundary.

Parameters
_vThe point to test.
Returns
True if _v lies inside this boundary.

◆ InBoundary() [4/4]

bool Boundary::InBoundary

Test if a specific point lies within the boundary.

Parameters
_pThe point to test.
Returns
True if _p lies inside this boundary.

◆ PushInside()

void AbstractBoundingBox::PushInside ( std::vector< double > &  _point) const
overridevirtualnoexcept

Minimally push a point so that it lies within the boundary.

Parameters
_pointThe point to push.

Implements Boundary.

◆ Read()

void AbstractBoundingBox::Read ( std::istream &  _is,
CountingStreamBuffer _cbs 
)
overridevirtual

Read in a boundary.

Parameters
_isThe input stream to read from.
_cbsThe counting stream buffer for keeping track of where we are in the input stream.

Implements Boundary.

◆ ResetBoundary()

void AbstractBoundingBox::ResetBoundary ( const std::vector< std::pair< double, double >> &  _bbx,
const double  _margin 
)
overridevirtual

Resize the boundary to fit inside a bounding box plus some margin.

Parameters
_bbxThe new base bounding box.
_marginThe additional margin for _bbx. Negative margins cause shrinkage.

Implements Boundary.

◆ SetCenter()

void AbstractBoundingBox::SetCenter ( const std::vector< double > &  _c)
overridevirtualnoexcept

Move the boundary to a new center point.

Parameters
_cThe new center point for the boundary.

Implements Boundary.

◆ Translate() [1/2]

void AbstractBoundingBox::Translate ( const std::vector< double > &  _t)
overridevirtual

Translate the boundary.

Parameters
_tThe offset to apply.

Implements Boundary.

◆ Translate() [2/2]

void AbstractBoundingBox::Translate ( const Vector3d &  _v)
overridevirtual

Translate the boundary.

Parameters
_vThe offset to apply.

Implements Boundary.

◆ Write()

void AbstractBoundingBox::Write ( std::ostream &  _os) const
overridevirtual

Write out a boundary.

Parameters
_osThe output stream to write to.

Implements Boundary.


The documentation for this class was generated from the following files: