Tesseract
Motion Planning Environment
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
tesseract_collision::VHACD::ICHull Class Reference

#include <vhacdICHull.h>

Collaboration diagram for tesseract_collision::VHACD::ICHull:
Collaboration graph
[legend]

Public Member Functions

bool IsFlat ()
 
TMMeshGetMesh ()
 Returns the computed mesh. More...
 
bool AddPoint (const Vec3< double > &point)
 Add one point to the convex-hull. More...
 
bool AddPoint (const Vec3< double > &point, int32_t id)
 Add one point to the convex-hull. More...
 
bool AddPoints (const Vec3< double > *points, size_t nPoints)
 Add points to the convex-hull. More...
 
ICHullError Process ()
 
ICHullError Process (const uint32_t nPointsCH, const double minVolume=0.0)
 
bool IsInside (const Vec3< double > &pt0, const double eps=0.0)
 
const ICHulloperator= (ICHull &rhs)
 
 ICHull ()
 Constructor. More...
 
 ~ICHull (void)
 Destructor. More...
 

Static Public Attributes

static const double sc_eps = 1.0e-15
 

Private Member Functions

ICHullError DoubleTriangle ()
 
CircularListElement< TMMTriangle > * MakeFace (CircularListElement< TMMVertex > *v0, CircularListElement< TMMVertex > *v1, CircularListElement< TMMVertex > *v2, CircularListElement< TMMTriangle > *fold)
 MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face. More...
 
CircularListElement< TMMTriangle > * MakeConeFace (CircularListElement< TMMEdge > *e, CircularListElement< TMMVertex > *v)
 
bool ProcessPoint ()
 
bool ComputePointVolume (double &totalVolume, bool markVisibleFaces)
 
bool FindMaxVolumePoint (const double minVolume=0.0)
 
bool CleanEdges ()
 
bool CleanVertices (uint32_t &addedPoints)
 
bool CleanTriangles ()
 
bool CleanUp (uint32_t &addedPoints)
 
bool MakeCCW (CircularListElement< TMMTriangle > *f, CircularListElement< TMMEdge > *e, CircularListElement< TMMVertex > *v)
 
void Clear ()
 
 ICHull (const ICHull &rhs)
 

Private Attributes

TMMesh m_mesh
 
SArray< CircularListElement< TMMEdge > * > m_edgesToDelete
 
SArray< CircularListElement< TMMEdge > * > m_edgesToUpdate
 
SArray< CircularListElement< TMMTriangle > * > m_trianglesToDelete
 
Vec3< double > m_normal
 
bool m_isFlat
 

Static Private Attributes

static const int32_t sc_dummyIndex = std::numeric_limits<int32_t>::max()
 

Constructor & Destructor Documentation

◆ ICHull() [1/2]

tesseract_collision::VHACD::ICHull::ICHull ( )

Constructor.

◆ ~ICHull()

tesseract_collision::VHACD::ICHull::~ICHull ( void  )
inline

Destructor.

◆ ICHull() [2/2]

tesseract_collision::VHACD::ICHull::ICHull ( const ICHull rhs)
private

Member Function Documentation

◆ AddPoint() [1/2]

bool tesseract_collision::VHACD::ICHull::AddPoint ( const Vec3< double > &  point)
inline

Add one point to the convex-hull.

◆ AddPoint() [2/2]

bool tesseract_collision::VHACD::ICHull::AddPoint ( const Vec3< double > &  point,
int32_t  id 
)

Add one point to the convex-hull.

◆ AddPoints()

bool tesseract_collision::VHACD::ICHull::AddPoints ( const Vec3< double > *  points,
size_t  nPoints 
)

Add points to the convex-hull.

◆ CleanEdges()

bool tesseract_collision::VHACD::ICHull::CleanEdges ( )
private

◆ CleanTriangles()

bool tesseract_collision::VHACD::ICHull::CleanTriangles ( )
private

◆ CleanUp()

bool tesseract_collision::VHACD::ICHull::CleanUp ( uint32_t &  addedPoints)
private

◆ CleanVertices()

bool tesseract_collision::VHACD::ICHull::CleanVertices ( uint32_t &  addedPoints)
private

◆ Clear()

void tesseract_collision::VHACD::ICHull::Clear ( )
private

◆ ComputePointVolume()

bool tesseract_collision::VHACD::ICHull::ComputePointVolume ( double &  totalVolume,
bool  markVisibleFaces 
)
private

◆ DoubleTriangle()

ICHullError tesseract_collision::VHACD::ICHull::DoubleTriangle ( )
private

DoubleTriangle builds the initial double triangle. It first finds 3 noncollinear points and makes two faces out of them, in opposite order. It then finds a fourth point that is not coplanar with that face. The vertices are stored in the face structure in counterclockwise order so that the volume between the face and the point is negative. Lastly, the 3 newfaces to the fourth point are constructed and the data structures are cleaned up.

◆ FindMaxVolumePoint()

bool tesseract_collision::VHACD::ICHull::FindMaxVolumePoint ( const double  minVolume = 0.0)
private

◆ GetMesh()

TMMesh & tesseract_collision::VHACD::ICHull::GetMesh ( )
inline

Returns the computed mesh.

◆ IsFlat()

bool tesseract_collision::VHACD::ICHull::IsFlat ( )
inline

◆ IsInside()

bool tesseract_collision::VHACD::ICHull::IsInside ( const Vec3< double > &  pt0,
const double  eps = 0.0 
)

◆ MakeCCW()

bool tesseract_collision::VHACD::ICHull::MakeCCW ( CircularListElement< TMMTriangle > *  f,
CircularListElement< TMMEdge > *  e,
CircularListElement< TMMVertex > *  v 
)
private

◆ MakeConeFace()

CircularListElement< TMMTriangle > * tesseract_collision::VHACD::ICHull::MakeConeFace ( CircularListElement< TMMEdge > *  e,
CircularListElement< TMMVertex > *  v 
)
private

◆ MakeFace()

CircularListElement< TMMTriangle > * tesseract_collision::VHACD::ICHull::MakeFace ( CircularListElement< TMMVertex > *  v0,
CircularListElement< TMMVertex > *  v1,
CircularListElement< TMMVertex > *  v2,
CircularListElement< TMMTriangle > *  fold 
)
private

MakeFace creates a new face structure from three vertices (in ccw order). It returns a pointer to the face.

◆ operator=()

const ICHull & tesseract_collision::VHACD::ICHull::operator= ( ICHull rhs)

◆ Process() [1/2]

ICHullError tesseract_collision::VHACD::ICHull::Process ( )

◆ Process() [2/2]

ICHullError tesseract_collision::VHACD::ICHull::Process ( const uint32_t  nPointsCH,
const double  minVolume = 0.0 
)

◆ ProcessPoint()

bool tesseract_collision::VHACD::ICHull::ProcessPoint ( )
private

Member Data Documentation

◆ m_edgesToDelete

SArray<CircularListElement<TMMEdge>*> tesseract_collision::VHACD::ICHull::m_edgesToDelete
private

◆ m_edgesToUpdate

SArray<CircularListElement<TMMEdge>*> tesseract_collision::VHACD::ICHull::m_edgesToUpdate
private

◆ m_isFlat

bool tesseract_collision::VHACD::ICHull::m_isFlat
private

◆ m_mesh

TMMesh tesseract_collision::VHACD::ICHull::m_mesh
private

◆ m_normal

Vec3<double> tesseract_collision::VHACD::ICHull::m_normal
private

◆ m_trianglesToDelete

SArray<CircularListElement<TMMTriangle>*> tesseract_collision::VHACD::ICHull::m_trianglesToDelete
private

◆ sc_dummyIndex

const int32_t tesseract_collision::VHACD::ICHull::sc_dummyIndex = std::numeric_limits<int32_t>::max()
staticprivate

◆ sc_eps

const double tesseract_collision::VHACD::ICHull::sc_eps = 1.0e-15
static

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