Bounding volumes

Classes of different types of bounding volume. More...

Classes

class  hpp::fcl::AABB
 A class describing the AABB collision structure, which is a box in 3D space determined by two diagonal points. More...
 
class  hpp::fcl::KDOP< N >
 KDOP class describes the KDOP collision structures. More...
 
class  hpp::fcl::kIOS
 A class describing the kIOS collision structure, which is a set of spheres. More...
 
class  hpp::fcl::OBB
 Oriented bounding box class. More...
 
class  hpp::fcl::OBBRSS
 Class merging the OBB and RSS, can handle collision and distance simultaneously. More...
 
class  hpp::fcl::RSS
 A class for rectangle sphere-swept bounding volume. More...
 

Functions

 hpp::fcl::AABB::AABB ()
 Creating an AABB with zero size (low bound +inf, upper bound -inf) More...
 
 hpp::fcl::AABB::AABB (const Vec3f &v)
 Creating an AABB at position v with zero size. More...
 
 hpp::fcl::AABB::AABB (const Vec3f &a, const Vec3f &b)
 Creating an AABB with two endpoints a and b. More...
 
 hpp::fcl::AABB::AABB (const AABB &core, const Vec3f &delta)
 Creating an AABB centered as core and is of half-dimension delta. More...
 
 hpp::fcl::AABB::AABB (const Vec3f &a, const Vec3f &b, const Vec3f &c)
 Creating an AABB contains three points. More...
 
bool hpp::fcl::AABB::contain (const AABB &other) const
 Check whether the AABB contains another AABB. More...
 
bool hpp::fcl::AABB::overlap (const AABB &other, AABB &overlap_part) const
 Check whether two AABB are overlap and return the overlap part. More...
 
AABBhpp::fcl::AABB::expand (const Vec3f &delta)
 expand the half size of the AABB by delta, and keep the center unchanged. More...
 
AABBhpp::fcl::AABB::expand (const AABB &core, FCL_REAL ratio)
 expand the aabb by increase the thickness of the plate by a ratio More...
 
static AABB hpp::fcl::translate (const AABB &aabb, const Vec3f &t)
 translate the center of AABB by t More...
 
static AABB hpp::fcl::rotate (const AABB &aabb, const Matrix3f &R)
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const AABB &b1, const AABB &b2)
 Check collision between two aabbs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const AABB &b1, const AABB &b2, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound)
 Check collision between two aabbs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
 hpp::fcl::KDOP< N >::KDOP ()
 Creating kDOP containing nothing. More...
 
 hpp::fcl::KDOP< N >::KDOP (const Vec3f &v)
 Creating kDOP containing only one point. More...
 
 hpp::fcl::KDOP< N >::KDOP (const Vec3f &a, const Vec3f &b)
 Creating kDOP containing two points. More...
 
bool hpp::fcl::KDOP< N >::overlap (const KDOP< N > &other) const
 Check whether two KDOPs overlap. More...
 
bool hpp::fcl::KDOP< N >::overlap (const KDOP< N > &other, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound) const
 Check whether two KDOPs overlap. More...
 
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. More...
 
KDOP< N > & hpp::fcl::KDOP< N >::operator+= (const Vec3f &p)
 Merge the point and the KDOP. More...
 
KDOP< N > & hpp::fcl::KDOP< N >::operator+= (const KDOP< N > &other)
 Merge two KDOPs. More...
 
KDOP< N > hpp::fcl::KDOP< N >::operator+ (const KDOP< N > &other) const
 Create a KDOP by mergin two KDOPs. More...
 
FCL_REAL hpp::fcl::KDOP< N >::size () const
 Size of the kDOP (used in BV_Splitter to order two kDOPs) More...
 
Vec3f hpp::fcl::KDOP< N >::center () const
 The (AABB) center. More...
 
FCL_REAL hpp::fcl::KDOP< N >::width () const
 The (AABB) width. More...
 
FCL_REAL hpp::fcl::KDOP< N >::height () const
 The (AABB) height. More...
 
FCL_REAL hpp::fcl::KDOP< N >::depth () const
 The (AABB) depth. More...
 
FCL_REAL hpp::fcl::KDOP< N >::volume () const
 The (AABB) volume. More...
 
FCL_REAL hpp::fcl::KDOP< N >::dist (short i) const
 
FCL_REALhpp::fcl::KDOP< N >::dist (short i)
 
bool hpp::fcl::KDOP< N >::inside (const Vec3f &p) const
 
template<short N>
bool hpp::fcl::overlap (const Matrix3f &, const Vec3f &, const KDOP< N > &, const KDOP< N > &)
 
template<short N>
bool hpp::fcl::overlap (const Matrix3f &, const Vec3f &, const KDOP< N > &, const KDOP< N > &, const CollisionRequest &, FCL_REAL &)
 
template<short N>
KDOP< N > hpp::fcl::translate (const KDOP< N > &bv, const Vec3f &t)
 translate the KDOP BV More...
 
bool hpp::fcl::kIOS::contain (const Vec3f &p) const
 Check whether the kIOS contains a point. More...
 
bool hpp::fcl::kIOS::overlap (const kIOS &other) const
 Check collision between two kIOS. More...
 
bool hpp::fcl::kIOS::overlap (const kIOS &other, const CollisionRequest &, FCL_REAL &sqrDistLowerBound) const
 Check collision between two kIOS. More...
 
FCL_REAL hpp::fcl::kIOS::distance (const kIOS &other, Vec3f *P=NULL, Vec3f *Q=NULL) const
 The distance between two kIOS. More...
 
kIOShpp::fcl::kIOS::operator+= (const Vec3f &p)
 A simple way to merge the kIOS and a point. More...
 
kIOShpp::fcl::kIOS::operator+= (const kIOS &other)
 Merge the kIOS and another kIOS. More...
 
kIOS hpp::fcl::kIOS::operator+ (const kIOS &other) const
 Return the merged kIOS of current kIOS and the other one. More...
 
FCL_REAL hpp::fcl::kIOS::size () const
 size of the kIOS (used in BV_Splitter to order two kIOSs) More...
 
const Vec3fhpp::fcl::kIOS::center () const
 Center of the kIOS. More...
 
FCL_REAL hpp::fcl::kIOS::width () const
 Width of the kIOS. More...
 
FCL_REAL hpp::fcl::kIOS::height () const
 Height of the kIOS. More...
 
FCL_REAL hpp::fcl::kIOS::depth () const
 Depth of the kIOS. More...
 
FCL_REAL hpp::fcl::kIOS::volume () const
 Volume of the kIOS. More...
 
kIOS hpp::fcl::translate (const kIOS &bv, const Vec3f &t)
 Translate the kIOS BV. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const kIOS &b1, const kIOS &b2)
 Check collision between two kIOSs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const kIOS &b1, const kIOS &b2, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound)
 Check collision between two kIOSs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
FCL_REAL hpp::fcl::distance (const Matrix3f &R0, const Vec3f &T0, const kIOS &b1, const kIOS &b2, Vec3f *P=NULL, Vec3f *Q=NULL)
 Approximate distance between two kIOS bounding volumes. More...
 
bool hpp::fcl::OBB::contain (const Vec3f &p) const
 Check whether the OBB contains a point. More...
 
bool hpp::fcl::OBB::overlap (const OBB &other) const
 Check collision between two OBB. More...
 
bool hpp::fcl::OBB::overlap (const OBB &other, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound) const
 Check collision between two OBB. More...
 
FCL_REAL hpp::fcl::OBB::distance (const OBB &other, Vec3f *P=NULL, Vec3f *Q=NULL) const
 Distance between two OBBs, not implemented. More...
 
OBBhpp::fcl::OBB::operator+= (const Vec3f &p)
 A simple way to merge the OBB and a point (the result is not compact). More...
 
OBBhpp::fcl::OBB::operator+= (const OBB &other)
 Merge the OBB and another OBB (the result is not compact). More...
 
OBB hpp::fcl::OBB::operator+ (const OBB &other) const
 Return the merged OBB of current OBB and the other one (the result is not compact). More...
 
FCL_REAL hpp::fcl::OBB::size () const
 Size of the OBB (used in BV_Splitter to order two OBBs) More...
 
const Vec3fhpp::fcl::OBB::center () const
 Center of the OBB. More...
 
FCL_REAL hpp::fcl::OBB::width () const
 Width of the OBB. More...
 
FCL_REAL hpp::fcl::OBB::height () const
 Height of the OBB. More...
 
FCL_REAL hpp::fcl::OBB::depth () const
 Depth of the OBB. More...
 
FCL_REAL hpp::fcl::OBB::volume () const
 Volume of the OBB. More...
 
OBB hpp::fcl::translate (const OBB &bv, const Vec3f &t)
 Translate the OBB bv. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const OBB &b1, const OBB &b2)
 Check collision between two obbs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const OBB &b1, const OBB &b2, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound)
 Check collision between two obbs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
bool hpp::fcl::obbDisjoint (const Matrix3f &B, const Vec3f &T, const Vec3f &a, const Vec3f &b)
 Check collision between two boxes. More...
 
bool hpp::fcl::OBBRSS::contain (const Vec3f &p) const
 Check whether the OBBRSS contains a point. More...
 
bool hpp::fcl::OBBRSS::overlap (const OBBRSS &other) const
 Check collision between two OBBRSS. More...
 
bool hpp::fcl::OBBRSS::overlap (const OBBRSS &other, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound) const
 Check collision between two OBBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::distance (const OBBRSS &other, Vec3f *P=NULL, Vec3f *Q=NULL) const
 Distance between two OBBRSS; P and Q , is not NULL, returns the nearest points. More...
 
OBBRSShpp::fcl::OBBRSS::operator+= (const Vec3f &p)
 Merge the OBBRSS and a point. More...
 
OBBRSShpp::fcl::OBBRSS::operator+= (const OBBRSS &other)
 Merge two OBBRSS. More...
 
OBBRSS hpp::fcl::OBBRSS::operator+ (const OBBRSS &other) const
 Merge two OBBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::size () const
 Size of the OBBRSS (used in BV_Splitter to order two OBBRSS) More...
 
const Vec3fhpp::fcl::OBBRSS::center () const
 Center of the OBBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::width () const
 Width of the OBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::height () const
 Height of the OBBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::depth () const
 Depth of the OBBRSS. More...
 
FCL_REAL hpp::fcl::OBBRSS::volume () const
 Volume of the OBBRSS. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const OBBRSS &b1, const OBBRSS &b2)
 Check collision between two OBBRSS, b1 is in configuration (R0, T0) and b2 is in indentity. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const OBBRSS &b1, const OBBRSS &b2, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound)
 Check collision between two OBBRSS. More...
 
FCL_REAL hpp::fcl::distance (const Matrix3f &R0, const Vec3f &T0, const OBBRSS &b1, const OBBRSS &b2, Vec3f *P=NULL, Vec3f *Q=NULL)
 Computate distance between two OBBRSS, b1 is in configuation (R0, T0) and b2 is in indentity; P and Q, is not NULL, returns the nearest points. More...
 
bool hpp::fcl::RSS::contain (const Vec3f &p) const
 Check whether the RSS contains a point. More...
 
bool hpp::fcl::RSS::overlap (const RSS &other) const
 Check collision between two RSS. More...
 
bool hpp::fcl::RSS::overlap (const RSS &other, const CollisionRequest &, FCL_REAL &sqrDistLowerBound) const
 Not implemented. More...
 
FCL_REAL hpp::fcl::RSS::distance (const RSS &other, Vec3f *P=NULL, Vec3f *Q=NULL) const
 the distance between two RSS; P and Q, if not NULL, return the nearest points More...
 
RSShpp::fcl::RSS::operator+= (const Vec3f &p)
 A simple way to merge the RSS and a point, not compact. More...
 
RSShpp::fcl::RSS::operator+= (const RSS &other)
 Merge the RSS and another RSS. More...
 
RSS hpp::fcl::RSS::operator+ (const RSS &other) const
 Return the merged RSS of current RSS and the other one. More...
 
FCL_REAL hpp::fcl::RSS::size () const
 Size of the RSS (used in BV_Splitter to order two RSSs) More...
 
const Vec3fhpp::fcl::RSS::center () const
 The RSS center. More...
 
FCL_REAL hpp::fcl::RSS::width () const
 Width of the RSS. More...
 
FCL_REAL hpp::fcl::RSS::height () const
 Height of the RSS. More...
 
FCL_REAL hpp::fcl::RSS::depth () const
 Depth of the RSS. More...
 
FCL_REAL hpp::fcl::RSS::volume () const
 Volume of the RSS. More...
 
bool hpp::fcl::RSS::overlap (const RSS &other, RSS &) const
 Check collision between two RSS and return the overlap part. More...
 
FCL_REAL hpp::fcl::distance (const Matrix3f &R0, const Vec3f &T0, const RSS &b1, const RSS &b2, Vec3f *P=NULL, Vec3f *Q=NULL)
 distance between two RSS bounding volumes P and Q (optional return values) are the closest points in the rectangles, not the RSS. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const RSS &b1, const RSS &b2)
 Check collision between two RSSs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 
bool hpp::fcl::overlap (const Matrix3f &R0, const Vec3f &T0, const RSS &b1, const RSS &b2, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound)
 Check collision between two RSSs, b1 is in configuration (R0, T0) and b2 is in identity. More...
 

Variables

Vec3f hpp::fcl::AABB::min_
 The min point in the AABB. More...
 
Vec3f hpp::fcl::AABB::max_
 The max point in the AABB. More...
 
Vec3f hpp::fcl::kIOS::kIOS_Sphere::o
 
FCL_REAL hpp::fcl::kIOS::kIOS_Sphere::r
 
kIOS_Sphere hpp::fcl::kIOS::spheres [5]
 The (at most) five spheres for intersection. More...
 
unsigned int hpp::fcl::kIOS::num_spheres
 The number of spheres, no larger than 5. More...
 
OBB hpp::fcl::kIOS::obb
 @ OBB related with kIOS More...
 
Matrix3f hpp::fcl::OBB::axes
 Orientation of OBB. More...
 
Vec3f hpp::fcl::OBB::To
 Center of OBB. More...
 
Vec3f hpp::fcl::OBB::extent
 Half dimensions of OBB. More...
 
OBB hpp::fcl::OBBRSS::obb
 OBB member, for rotation. More...
 
RSS hpp::fcl::OBBRSS::rss
 RSS member, for distance. More...
 
Matrix3f hpp::fcl::RSS::axes
 Orientation of RSS. More...
 
Vec3f hpp::fcl::RSS::Tr
 Origin of the rectangle in RSS. More...
 
FCL_REAL hpp::fcl::RSS::length [2]
 Side lengths of rectangle. More...
 
FCL_REAL hpp::fcl::RSS::radius
 Radius of sphere summed with rectangle to form RSS. More...
 

Bounding volume API

Common API to BVs.

bool hpp::fcl::AABB::contain (const Vec3f &p) const
 Check whether the AABB contains a point. More...
 
bool hpp::fcl::AABB::overlap (const AABB &other) const
 Check whether two AABB are overlap. More...
 
bool hpp::fcl::AABB::overlap (const AABB &other, const CollisionRequest &request, FCL_REAL &sqrDistLowerBound) const
 Check whether two AABB are overlap. More...
 
FCL_REAL hpp::fcl::AABB::distance (const AABB &other) const
 Distance between two AABBs. More...
 
FCL_REAL hpp::fcl::AABB::distance (const AABB &other, Vec3f *P, Vec3f *Q) const
 Distance between two AABBs; P and Q, should not be NULL, return the nearest points. More...
 
AABBhpp::fcl::AABB::operator+= (const Vec3f &p)
 Merge the AABB and a point. More...
 
AABBhpp::fcl::AABB::operator+= (const AABB &other)
 Merge the AABB and another AABB. More...
 
AABB hpp::fcl::AABB::operator+ (const AABB &other) const
 Return the merged AABB of current AABB and the other one. More...
 
FCL_REAL hpp::fcl::AABB::size () const
 Size of the AABB (used in BV_Splitter to order two AABBs) More...
 
Vec3f hpp::fcl::AABB::center () const
 Center of the AABB. More...
 
FCL_REAL hpp::fcl::AABB::width () const
 Width of the AABB. More...
 
FCL_REAL hpp::fcl::AABB::height () const
 Height of the AABB. More...
 
FCL_REAL hpp::fcl::AABB::depth () const
 Depth of the AABB. More...
 
FCL_REAL hpp::fcl::AABB::volume () const
 Volume of the AABB. More...
 

Detailed Description

Classes of different types of bounding volume.

Function Documentation

◆ AABB() [1/5]

hpp::fcl::AABB::AABB ( )

Creating an AABB with zero size (low bound +inf, upper bound -inf)

◆ AABB() [2/5]

hpp::fcl::AABB::AABB ( const Vec3f v)
inline

Creating an AABB at position v with zero size.

◆ AABB() [3/5]

hpp::fcl::AABB::AABB ( const Vec3f a,
const Vec3f b 
)
inline

Creating an AABB with two endpoints a and b.

◆ AABB() [4/5]

hpp::fcl::AABB::AABB ( const AABB core,
const Vec3f delta 
)
inline

Creating an AABB centered as core and is of half-dimension delta.

◆ AABB() [5/5]

hpp::fcl::AABB::AABB ( const Vec3f a,
const Vec3f b,
const Vec3f c 
)
inline

Creating an AABB contains three points.

◆ center() [1/6]

const Vec3f& hpp::fcl::OBB::center ( ) const
inline

Center of the OBB.

References hpp::fcl::OBB::To.

Referenced by hpp::fcl::OBBRSS::center().

◆ center() [2/6]

const Vec3f& hpp::fcl::RSS::center ( ) const
inline

The RSS center.

References hpp::fcl::RSS::Tr.

◆ center() [3/6]

const Vec3f& hpp::fcl::OBBRSS::center ( ) const
inline

Center of the OBBRSS.

References hpp::fcl::OBB::center().

◆ center() [4/6]

◆ center() [5/6]

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

The (AABB) center.

◆ center() [6/6]

Vec3f hpp::fcl::AABB::center ( ) const
inline

Center of the AABB.

Referenced by hpp::fcl::OcTree::computeLocalAABB().

◆ contain() [1/6]

bool hpp::fcl::OBBRSS::contain ( const Vec3f p) const
inline

Check whether the OBBRSS contains a point.

References hpp::fcl::OBB::contain().

◆ contain() [2/6]

bool hpp::fcl::OBB::contain ( const Vec3f p) const

Check whether the OBB contains a point.

Referenced by hpp::fcl::OBBRSS::contain().

◆ contain() [3/6]

bool hpp::fcl::RSS::contain ( const Vec3f p) const

Check whether the RSS contains a point.

◆ contain() [4/6]

bool hpp::fcl::AABB::contain ( const Vec3f p) const
inline

Check whether the AABB contains a point.

◆ contain() [5/6]

bool hpp::fcl::kIOS::contain ( const Vec3f p) const

Check whether the kIOS contains a point.

◆ contain() [6/6]

bool hpp::fcl::AABB::contain ( const AABB other) const
inline

Check whether the AABB contains another AABB.

References hpp::fcl::AABB::max_, and hpp::fcl::AABB::min_.

◆ depth() [1/6]

FCL_REAL hpp::fcl::OBB::depth ( ) const
inline

Depth of the OBB.

Referenced by hpp::fcl::OBBRSS::depth(), and hpp::fcl::OBB::volume().

◆ depth() [2/6]

FCL_REAL hpp::fcl::RSS::depth ( ) const
inline

Depth of the RSS.

References hpp::fcl::RSS::radius.

◆ depth() [3/6]

FCL_REAL hpp::fcl::OBBRSS::depth ( ) const
inline

Depth of the OBBRSS.

References hpp::fcl::OBB::depth().

◆ depth() [4/6]

FCL_REAL hpp::fcl::kIOS::depth ( ) const

Depth of the kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ depth() [5/6]

template<short N>
FCL_REAL hpp::fcl::KDOP< N >::depth ( ) const
inline

◆ depth() [6/6]

FCL_REAL hpp::fcl::AABB::depth ( ) const
inline

Depth of the AABB.

Referenced by hpp::fcl::AABB::volume().

◆ dist() [1/2]

template<short N>
FCL_REAL hpp::fcl::KDOP< N >::dist ( short  i) const
inline

◆ dist() [2/2]

template<short N>
FCL_REAL& hpp::fcl::KDOP< N >::dist ( short  i)
inline

◆ distance() [1/10]

FCL_REAL hpp::fcl::OBB::distance ( const OBB other,
Vec3f P = NULL,
Vec3f Q = NULL 
) const

Distance between two OBBs, not implemented.

◆ distance() [2/10]

FCL_REAL hpp::fcl::RSS::distance ( const RSS other,
Vec3f P = NULL,
Vec3f Q = NULL 
) const

the distance between two RSS; P and Q, if not NULL, return the nearest points

Referenced by hpp::fcl::OBBRSS::distance(), and hpp::fcl::RSS::overlap().

◆ distance() [3/10]

FCL_REAL hpp::fcl::OBBRSS::distance ( const OBBRSS other,
Vec3f P = NULL,
Vec3f Q = NULL 
) const
inline

Distance between two OBBRSS; P and Q , is not NULL, returns the nearest points.

References hpp::fcl::RSS::distance(), and hpp::fcl::OBBRSS::rss.

Referenced by hpp::fcl::distance().

◆ distance() [4/10]

FCL_REAL hpp::fcl::kIOS::distance ( const kIOS other,
Vec3f P = NULL,
Vec3f Q = NULL 
) const

The distance between two kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ distance() [5/10]

template<short 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.

◆ distance() [6/10]

FCL_REAL hpp::fcl::AABB::distance ( const AABB other) const

Distance between two AABBs.

Referenced by hpp::fcl::AABB::overlap().

◆ distance() [7/10]

FCL_REAL hpp::fcl::AABB::distance ( const AABB other,
Vec3f P,
Vec3f Q 
) const

Distance between two AABBs; P and Q, should not be NULL, return the nearest points.

◆ distance() [8/10]

FCL_REAL hpp::fcl::distance ( const Matrix3f R0,
const Vec3f T0,
const RSS b1,
const RSS b2,
Vec3f P = NULL,
Vec3f Q = NULL 
)

distance between two RSS bounding volumes P and Q (optional return values) are the closest points in the rectangles, not the RSS.

But the direction P - Q is the correct direction for cloest points Notice that P and Q are both in the local frame of the first RSS (not global frame and not even the local frame of object 1)

◆ distance() [9/10]

◆ distance() [10/10]

FCL_REAL hpp::fcl::distance ( const Matrix3f R0,
const Vec3f T0,
const OBBRSS b1,
const OBBRSS b2,
Vec3f P = NULL,
Vec3f Q = NULL 
)
inline

Computate distance between two OBBRSS, b1 is in configuation (R0, T0) and b2 is in indentity; P and Q, is not NULL, returns the nearest points.

References hpp::fcl::OBBRSS::distance(), and hpp::fcl::OBBRSS::rss.

◆ expand() [1/2]

AABB& hpp::fcl::AABB::expand ( const Vec3f delta)
inline

expand the half size of the AABB by delta, and keep the center unchanged.

◆ expand() [2/2]

AABB& hpp::fcl::AABB::expand ( const AABB core,
FCL_REAL  ratio 
)
inline

expand the aabb by increase the thickness of the plate by a ratio

References hpp::fcl::AABB::max_, and hpp::fcl::AABB::min_.

◆ height() [1/6]

FCL_REAL hpp::fcl::OBB::height ( ) const
inline

Height of the OBB.

Referenced by hpp::fcl::OBBRSS::height(), and hpp::fcl::OBB::volume().

◆ height() [2/6]

FCL_REAL hpp::fcl::RSS::height ( ) const
inline

Height of the RSS.

References hpp::fcl::RSS::radius.

◆ height() [3/6]

FCL_REAL hpp::fcl::OBBRSS::height ( ) const
inline

Height of the OBBRSS.

References hpp::fcl::OBB::height().

◆ height() [4/6]

FCL_REAL hpp::fcl::kIOS::height ( ) const

Height of the kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ height() [5/6]

template<short N>
FCL_REAL hpp::fcl::KDOP< N >::height ( ) const
inline

◆ height() [6/6]

FCL_REAL hpp::fcl::AABB::height ( ) const
inline

Height of the AABB.

Referenced by hpp::fcl::AABB::volume().

◆ inside()

template<short N>
bool hpp::fcl::KDOP< N >::inside ( const Vec3f p) const

◆ KDOP() [1/3]

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

Creating kDOP containing nothing.

◆ KDOP() [2/3]

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

Creating kDOP containing only one point.

◆ KDOP() [3/3]

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

Creating kDOP containing two points.

◆ obbDisjoint()

bool hpp::fcl::obbDisjoint ( const Matrix3f B,
const Vec3f T,
const Vec3f a,
const Vec3f b 
)

Check collision between two boxes.

Parameters
B,Torientation and position of first box,
ahalf dimensions of first box,
bhalf dimensions of second box. The second box is in identity configuration.

Referenced by hpp::fcl::OBB::volume().

◆ operator+() [1/6]

OBB hpp::fcl::OBB::operator+ ( const OBB other) const

Return the merged OBB of current OBB and the other one (the result is not compact).

Referenced by hpp::fcl::OBB::operator+=().

◆ operator+() [2/6]

RSS hpp::fcl::RSS::operator+ ( const RSS other) const

Return the merged RSS of current RSS and the other one.

Referenced by hpp::fcl::RSS::operator+=().

◆ operator+() [3/6]

OBBRSS hpp::fcl::OBBRSS::operator+ ( const OBBRSS other) const
inline

Merge two OBBRSS.

References hpp::fcl::OBBRSS::obb, and hpp::fcl::OBBRSS::rss.

◆ operator+() [4/6]

kIOS hpp::fcl::kIOS::operator+ ( const kIOS other) const

Return the merged kIOS of current kIOS and the other one.

Referenced by hpp::fcl::kIOS::operator+=().

◆ operator+() [5/6]

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

Create a KDOP by mergin two KDOPs.

◆ operator+() [6/6]

AABB hpp::fcl::AABB::operator+ ( const AABB other) const
inline

Return the merged AABB of current AABB and the other one.

◆ operator+=() [1/12]

OBB& hpp::fcl::OBB::operator+= ( const Vec3f p)

A simple way to merge the OBB and a point (the result is not compact).

◆ operator+=() [2/12]

OBB& hpp::fcl::OBB::operator+= ( const OBB other)
inline

Merge the OBB and another OBB (the result is not compact).

References hpp::fcl::OBB::operator+().

◆ operator+=() [3/12]

RSS& hpp::fcl::RSS::operator+= ( const Vec3f p)

A simple way to merge the RSS and a point, not compact.

Todo:
This function may have some bug.

Referenced by hpp::fcl::RSS::overlap().

◆ operator+=() [4/12]

OBBRSS& hpp::fcl::OBBRSS::operator+= ( const Vec3f p)
inline

Merge the OBBRSS and a point.

◆ operator+=() [5/12]

RSS& hpp::fcl::RSS::operator+= ( const RSS other)
inline

Merge the RSS and another RSS.

References hpp::fcl::RSS::operator+().

◆ operator+=() [6/12]

OBBRSS& hpp::fcl::OBBRSS::operator+= ( const OBBRSS other)
inline

Merge two OBBRSS.

◆ operator+=() [7/12]

kIOS& hpp::fcl::kIOS::operator+= ( const Vec3f p)

A simple way to merge the kIOS and a point.

◆ operator+=() [8/12]

kIOS& hpp::fcl::kIOS::operator+= ( const kIOS other)
inline

Merge the kIOS and another kIOS.

References hpp::fcl::kIOS::operator+(), and hpp::fcl::kIOS::size().

◆ operator+=() [9/12]

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

Merge the point and the KDOP.

◆ operator+=() [10/12]

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

Merge two KDOPs.

◆ operator+=() [11/12]

AABB& hpp::fcl::AABB::operator+= ( const Vec3f p)
inline

Merge the AABB and a point.

◆ operator+=() [12/12]

AABB& hpp::fcl::AABB::operator+= ( const AABB other)
inline

Merge the AABB and another AABB.

References hpp::fcl::AABB::max_, and hpp::fcl::AABB::min_.

◆ overlap() [1/26]

bool hpp::fcl::OBB::overlap ( const OBB other) const

Check collision between two OBB.

Returns
true if collision happens.

Referenced by hpp::fcl::OBBRSS::overlap(), and hpp::fcl::OBB::volume().

◆ overlap() [2/26]

bool hpp::fcl::OBBRSS::overlap ( const OBBRSS other) const
inline

Check collision between two OBBRSS.

References hpp::fcl::OBBRSS::obb, and hpp::fcl::OBB::overlap().

Referenced by hpp::fcl::overlap().

◆ overlap() [3/26]

bool hpp::fcl::RSS::overlap ( const RSS other) const

Check collision between two RSS.

Referenced by hpp::fcl::RSS::overlap().

◆ overlap() [4/26]

bool hpp::fcl::OBB::overlap ( const OBB other,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
) const

Check collision between two OBB.

Returns
true if collision happens.
Return values
sqrDistLowerBoundsquared lower bound on distance between boxes if they do not overlap.

◆ overlap() [5/26]

bool hpp::fcl::RSS::overlap ( const RSS other,
const CollisionRequest ,
FCL_REAL sqrDistLowerBound 
) const
inline

◆ overlap() [6/26]

bool hpp::fcl::OBBRSS::overlap ( const OBBRSS other,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
) const
inline

Check collision between two OBBRSS.

Return values
sqrDistLowerBoundsquared lower bound on distance between objects if they do not overlap.

References hpp::fcl::OBBRSS::obb, and hpp::fcl::OBB::overlap().

◆ overlap() [7/26]

bool hpp::fcl::kIOS::overlap ( const kIOS other) const

Check collision between two kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ overlap() [8/26]

bool hpp::fcl::AABB::overlap ( const AABB other) const
inline

Check whether two AABB are overlap.

References hpp::fcl::AABB::distance(), hpp::fcl::AABB::max_, and hpp::fcl::AABB::min_.

Referenced by hpp::fcl::AABB::overlap(), and hpp::fcl::rotate().

◆ overlap() [9/26]

bool hpp::fcl::kIOS::overlap ( const kIOS other,
const CollisionRequest ,
FCL_REAL sqrDistLowerBound 
) const

Check collision between two kIOS.

◆ overlap() [10/26]

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

Check whether two KDOPs overlap.

◆ overlap() [11/26]

template<short N>
bool hpp::fcl::KDOP< N >::overlap ( const KDOP< N > &  other,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
) const

Check whether two KDOPs overlap.

Returns
true if collision happens.
Return values
sqrDistLowerBoundsquared lower bound on distance between boxes if they do not overlap.

◆ overlap() [12/26]

bool hpp::fcl::AABB::overlap ( const AABB other,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
) const

Check whether two AABB are overlap.

◆ overlap() [13/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const OBB b1,
const OBB b2 
)

Check collision between two obbs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ overlap() [14/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const OBB b1,
const OBB b2,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
)

Check collision between two obbs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ overlap() [15/26]

bool hpp::fcl::RSS::overlap ( const RSS other,
RSS  
) const
inline

Check collision between two RSS and return the overlap part.

For RSS, we return nothing, as the overlap part of two RSSs usually is not a RSS.

References hpp::fcl::RSS::distance(), and hpp::fcl::RSS::overlap().

◆ overlap() [16/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const kIOS b1,
const kIOS b2 
)

Check collision between two kIOSs, b1 is in configuration (R0, T0) and b2 is in identity.

Todo:
Not efficient

◆ overlap() [17/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const OBBRSS b1,
const OBBRSS b2 
)
inline

Check collision between two OBBRSS, b1 is in configuration (R0, T0) and b2 is in indentity.

References hpp::fcl::OBBRSS::obb, and hpp::fcl::OBBRSS::overlap().

◆ overlap() [18/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const RSS b1,
const RSS b2 
)

Check collision between two RSSs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ overlap() [19/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const RSS b1,
const RSS b2,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
)

Check collision between two RSSs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ overlap() [20/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const kIOS b1,
const kIOS b2,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
)

Check collision between two kIOSs, b1 is in configuration (R0, T0) and b2 is in identity.

Todo:
Not efficient

◆ overlap() [21/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const OBBRSS b1,
const OBBRSS b2,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
)
inline

Check collision between two OBBRSS.

Parameters
R0,T0configuration of b1
b1first OBBRSS in configuration (R0, T0)
b2second OBBRSS in identity position
Return values
sqrDistLowerBoundsquared lower bound on the distance if OBBRSS do not overlap.

References hpp::fcl::OBBRSS::obb, and hpp::fcl::OBBRSS::overlap().

◆ overlap() [22/26]

template<short N>
bool hpp::fcl::overlap ( const Matrix3f ,
const Vec3f ,
const KDOP< N > &  ,
const KDOP< N > &   
)

◆ overlap() [23/26]

template<short N>
bool hpp::fcl::overlap ( const Matrix3f ,
const Vec3f ,
const KDOP< N > &  ,
const KDOP< N > &  ,
const CollisionRequest ,
FCL_REAL  
)

References hpp::fcl::translate().

◆ overlap() [24/26]

bool hpp::fcl::AABB::overlap ( const AABB other,
AABB overlap_part 
) const
inline

Check whether two AABB are overlap and return the overlap part.

References hpp::fcl::AABB::max_, hpp::fcl::AABB::min_, and hpp::fcl::AABB::overlap().

◆ overlap() [25/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const AABB b1,
const AABB b2 
)

Check collision between two aabbs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ overlap() [26/26]

bool hpp::fcl::overlap ( const Matrix3f R0,
const Vec3f T0,
const AABB b1,
const AABB b2,
const CollisionRequest request,
FCL_REAL sqrDistLowerBound 
)

Check collision between two aabbs, b1 is in configuration (R0, T0) and b2 is in identity.

◆ rotate()

static AABB hpp::fcl::rotate ( const AABB aabb,
const Matrix3f R 
)
inlinestatic

◆ size() [1/6]

FCL_REAL hpp::fcl::OBB::size ( ) const
inline

Size of the OBB (used in BV_Splitter to order two OBBs)

Referenced by hpp::fcl::OBBRSS::size().

◆ size() [2/6]

FCL_REAL hpp::fcl::RSS::size ( ) const
inline

Size of the RSS (used in BV_Splitter to order two RSSs)

◆ size() [3/6]

FCL_REAL hpp::fcl::OBBRSS::size ( ) const
inline

Size of the OBBRSS (used in BV_Splitter to order two OBBRSS)

References hpp::fcl::OBB::size().

◆ size() [4/6]

FCL_REAL hpp::fcl::kIOS::size ( ) const

size of the kIOS (used in BV_Splitter to order two kIOSs)

Referenced by hpp::fcl::kIOS::operator+=().

◆ size() [5/6]

template<short 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().

◆ size() [6/6]

FCL_REAL hpp::fcl::AABB::size ( ) const
inline

Size of the AABB (used in BV_Splitter to order two AABBs)

◆ translate() [1/4]

OBB hpp::fcl::translate ( const OBB bv,
const Vec3f t 
)

Translate the OBB bv.

◆ translate() [2/4]

kIOS hpp::fcl::translate ( const kIOS bv,
const Vec3f t 
)

Translate the kIOS BV.

◆ translate() [3/4]

template<short N>
KDOP<N> hpp::fcl::translate ( const KDOP< N > &  bv,
const Vec3f t 
)

translate the KDOP BV

◆ translate() [4/4]

static AABB hpp::fcl::translate ( const AABB aabb,
const Vec3f t 
)
inlinestatic

◆ volume() [1/6]

◆ volume() [2/6]

FCL_REAL hpp::fcl::RSS::volume ( ) const
inline

Volume of the RSS.

◆ volume() [3/6]

FCL_REAL hpp::fcl::kIOS::volume ( ) const

Volume of the kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ volume() [4/6]

FCL_REAL hpp::fcl::OBBRSS::volume ( ) const
inline

Volume of the OBBRSS.

References hpp::fcl::OBB::volume().

◆ volume() [5/6]

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

◆ volume() [6/6]

FCL_REAL hpp::fcl::AABB::volume ( ) const
inline

◆ width() [1/6]

FCL_REAL hpp::fcl::OBB::width ( ) const
inline

Width of the OBB.

Referenced by hpp::fcl::OBB::volume(), and hpp::fcl::OBBRSS::width().

◆ width() [2/6]

FCL_REAL hpp::fcl::RSS::width ( ) const
inline

Width of the RSS.

References hpp::fcl::RSS::radius.

◆ width() [3/6]

FCL_REAL hpp::fcl::OBBRSS::width ( ) const
inline

Width of the OBRSS.

References hpp::fcl::OBB::width().

◆ width() [4/6]

FCL_REAL hpp::fcl::kIOS::width ( ) const

Width of the kIOS.

Referenced by hpp::fcl::kIOS::center().

◆ width() [5/6]

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

◆ width() [6/6]

FCL_REAL hpp::fcl::AABB::width ( ) const
inline

Width of the AABB.

Referenced by hpp::fcl::AABB::volume().

Variable Documentation

◆ axes [1/2]

Matrix3f hpp::fcl::OBB::axes

Orientation of OBB.

axis[i] is the ith column of the orientation matrix for the box; it is also the i-th principle direction of the box. We assume that axis[0] corresponds to the axis with the longest box edge, axis[1] corresponds to the shorter one and axis[2] corresponds to the shortest one.

◆ axes [2/2]

Matrix3f hpp::fcl::RSS::axes

Orientation of RSS.

axis[i] is the ith column of the orientation matrix for the RSS; it is also the i-th principle direction of the RSS. We assume that axis[0] corresponds to the axis with the longest length, axis[1] corresponds to the shorter one and axis[2] corresponds to the shortest one.

◆ extent

Vec3f hpp::fcl::OBB::extent

Half dimensions of OBB.

◆ length

FCL_REAL hpp::fcl::RSS::length[2]

Side lengths of rectangle.

◆ max_

◆ min_

◆ num_spheres

unsigned int hpp::fcl::kIOS::num_spheres

The number of spheres, no larger than 5.

◆ o

Vec3f hpp::fcl::kIOS::kIOS_Sphere::o

◆ obb [1/2]

OBB hpp::fcl::OBBRSS::obb

◆ obb [2/2]

OBB hpp::fcl::kIOS::obb

@ OBB related with kIOS

◆ r

FCL_REAL hpp::fcl::kIOS::kIOS_Sphere::r

◆ radius

FCL_REAL hpp::fcl::RSS::radius

Radius of sphere summed with rectangle to form RSS.

Referenced by hpp::fcl::RSS::depth(), hpp::fcl::RSS::height(), and hpp::fcl::RSS::width().

◆ rss

RSS hpp::fcl::OBBRSS::rss

◆ spheres

kIOS_Sphere hpp::fcl::kIOS::spheres[5]

The (at most) five spheres for intersection.

◆ To

Vec3f hpp::fcl::OBB::To

Center of OBB.

Referenced by hpp::fcl::OBB::center().

◆ Tr

Vec3f hpp::fcl::RSS::Tr

Origin of the rectangle in RSS.

Referenced by hpp::fcl::RSS::center().