Template Class KDOP
Defined in File kDOP.h
Inheritance Relationships
Derived Type
public boost::serialization::internal::KDOPAccessor< N >
(Template Struct KDOPAccessor)
Class Documentation
-
template<short N>
class KDOP 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.
Subclassed by boost::serialization::internal::KDOPAccessor< N >
Public Functions
-
EIGEN_MAKE_ALIGNED_OPERATOR_NEW KDOP()
Creating kDOP containing nothing.
-
bool overlap(const KDOP<N> &other, const CollisionRequest &request, CoalScalar &sqrDistLowerBound) const
Check whether two KDOPs overlap.
- Return values:
sqrDistLowerBound – squared lower bound on distance between boxes if they do not overlap.
- Returns:
true if collision happens.
-
CoalScalar distance(const KDOP<N> &other, Vec3s *P = NULL, Vec3s *Q = NULL) const
The distance between two KDOP<N>. Not implemented.
-
inline CoalScalar size() const
Size of the kDOP (used in BV_Splitter to order two kDOPs)
-
inline CoalScalar width() const
The (AABB) width.
-
inline CoalScalar height() const
The (AABB) height.
-
inline CoalScalar depth() const
The (AABB) depth.
-
inline CoalScalar volume() const
The (AABB) volume.
-
inline CoalScalar dist(short i) const
-
inline CoalScalar &dist(short i)
Protected Attributes
-
Eigen::Array<CoalScalar, N, 1> dist_
Origin’s distances to N KDOP planes.
-
EIGEN_MAKE_ALIGNED_OPERATOR_NEW KDOP()