Public Member Functions | List of all members
hpp::fcl::KDOP< N > Class Template Reference

KDOP class describes the KDOP collision structures. More...

#include <hpp/fcl/BV/kDOP.h>

Public Member Functions

 KDOP ()
 Creating kDOP containing nothing. More...
 
 KDOP (const Vec3f &v)
 Creating kDOP containing only one point. More...
 
 KDOP (const Vec3f &a, const Vec3f &b)
 Creating kDOP containing two points. More...
 
bool overlap (const KDOP< N > &other) const
 Check whether two KDOPs are overlapped. More...
 
bool overlap (const KDOP< N > &other, const CollisionRequest &, FCL_REAL &sqrDistLowerBound) const
 Not implemented. More...
 
bool inside (const Vec3f &p) const
 
KDOP< N > & operator+= (const Vec3f &p)
 Merge the point and the KDOP. More...
 
KDOP< N > & operator+= (const KDOP< N > &other)
 Merge two KDOPs. More...
 
KDOP< N > operator+ (const KDOP< N > &other) const
 Create a KDOP by mergin two KDOPs. More...
 
FCL_REAL width () const
 The (AABB) width. More...
 
FCL_REAL height () const
 The (AABB) height. More...
 
FCL_REAL depth () const
 The (AABB) depth. More...
 
FCL_REAL volume () const
 The (AABB) volume. More...
 
FCL_REAL size () const
 Size of the kDOP (used in BV_Splitter to order two kDOPs) More...
 
Vec3f center () const
 The (AABB) center. More...
 
FCL_REAL distance (const KDOP< N > &other, Vec3f *P=NULL, Vec3f *Q=NULL) const
 The distance between two KDOP<N>. Not implemented. More...
 
FCL_REAL dist (std::size_t i) const
 
FCL_REALdist (std::size_t i)
 

Detailed Description

template<size_t N>
class hpp::fcl::KDOP< N >

KDOP class describes the KDOP collision structures.

K is set as the template parameter, which should be 16, 18, or 24 The KDOP structure is defined by some pairs of parallel planes defined by some axes. For K = 16, the planes are 6 AABB planes and 10 diagonal planes that cut off some space of the edges: (-1,0,0) and (1,0,0) -> indices 0 and 8 (0,-1,0) and (0,1,0) -> indices 1 and 9 (0,0,-1) and (0,0,1) -> indices 2 and 10 (-1,-1,0) and (1,1,0) -> indices 3 and 11 (-1,0,-1) and (1,0,1) -> indices 4 and 12 (0,-1,-1) and (0,1,1) -> indices 5 and 13 (-1,1,0) and (1,-1,0) -> indices 6 and 14 (-1,0,1) and (1,0,-1) -> indices 7 and 15 For K = 18, the planes are 6 AABB planes and 12 diagonal planes that cut off some space of the edges: (-1,0,0) and (1,0,0) -> indices 0 and 9 (0,-1,0) and (0,1,0) -> indices 1 and 10 (0,0,-1) and (0,0,1) -> indices 2 and 11 (-1,-1,0) and (1,1,0) -> indices 3 and 12 (-1,0,-1) and (1,0,1) -> indices 4 and 13 (0,-1,-1) and (0,1,1) -> indices 5 and 14 (-1,1,0) and (1,-1,0) -> indices 6 and 15 (-1,0,1) and (1,0,-1) -> indices 7 and 16 (0,-1,1) and (0,1,-1) -> indices 8 and 17 For K = 18, the planes are 6 AABB planes and 18 diagonal planes that cut off some space of the edges: (-1,0,0) and (1,0,0) -> indices 0 and 12 (0,-1,0) and (0,1,0) -> indices 1 and 13 (0,0,-1) and (0,0,1) -> indices 2 and 14 (-1,-1,0) and (1,1,0) -> indices 3 and 15 (-1,0,-1) and (1,0,1) -> indices 4 and 16 (0,-1,-1) and (0,1,1) -> indices 5 and 17 (-1,1,0) and (1,-1,0) -> indices 6 and 18 (-1,0,1) and (1,0,-1) -> indices 7 and 19 (0,-1,1) and (0,1,-1) -> indices 8 and 20 (-1, -1, 1) and (1, 1, -1) –> indices 9 and 21 (-1, 1, -1) and (1, -1, 1) –> indices 10 and 22 (1, -1, -1) and (-1, 1, 1) –> indices 11 and 23

Constructor & Destructor Documentation

template<size_t N>
hpp::fcl::KDOP< N >::KDOP ( )

Creating kDOP containing nothing.

template<size_t N>
hpp::fcl::KDOP< N >::KDOP ( const Vec3f v)

Creating kDOP containing only one point.

template<size_t N>
hpp::fcl::KDOP< N >::KDOP ( const Vec3f a,
const Vec3f b 
)

Creating kDOP containing two points.

Member Function Documentation

template<size_t N>
Vec3f hpp::fcl::KDOP< N >::center ( ) const
inline

The (AABB) center.

References hpp::fcl::KDOP< N >::distance().

template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::depth ( ) const
inline
template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::dist ( std::size_t  i) const
inline
template<size_t N>
FCL_REAL& hpp::fcl::KDOP< N >::dist ( std::size_t  i)
inline
template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::distance ( const KDOP< N > &  other,
Vec3f P = NULL,
Vec3f Q = NULL 
) const

The distance between two KDOP<N>. Not implemented.

Referenced by hpp::fcl::KDOP< N >::center().

template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::height ( ) const
inline
template<size_t N>
bool hpp::fcl::KDOP< N >::inside ( const Vec3f p) const
template<size_t N>
KDOP<N> hpp::fcl::KDOP< N >::operator+ ( const KDOP< N > &  other) const

Create a KDOP by mergin two KDOPs.

Referenced by hpp::fcl::KDOP< N >::overlap().

template<size_t N>
KDOP<N>& hpp::fcl::KDOP< N >::operator+= ( const Vec3f p)

Merge the point and the KDOP.

Referenced by hpp::fcl::KDOP< N >::overlap().

template<size_t N>
KDOP<N>& hpp::fcl::KDOP< N >::operator+= ( const KDOP< N > &  other)

Merge two KDOPs.

template<size_t N>
bool hpp::fcl::KDOP< N >::overlap ( const KDOP< N > &  other) const

Check whether two KDOPs are overlapped.

Referenced by hpp::fcl::KDOP< N >::overlap().

template<size_t N>
bool hpp::fcl::KDOP< N >::overlap ( const KDOP< N > &  other,
const CollisionRequest ,
FCL_REAL sqrDistLowerBound 
) const
inline
template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::size ( ) const
inline

Size of the kDOP (used in BV_Splitter to order two kDOPs)

References hpp::fcl::KDOP< N >::depth(), hpp::fcl::KDOP< N >::height(), and hpp::fcl::KDOP< N >::width().

template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::volume ( ) const
inline
template<size_t N>
FCL_REAL hpp::fcl::KDOP< N >::width ( ) const
inline