Template Class KDOP

Inheritance Relationships

Derived Type

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.

KDOP(const Vec3s &v)

Creating kDOP containing only one point.

KDOP(const Vec3s &a, const Vec3s &b)

Creating kDOP containing two points.

inline bool operator==(const KDOP &other) const

Equality operator.

inline bool operator!=(const KDOP &other) const

Difference operator.

bool overlap(const KDOP<N> &other) const

Check whether two KDOPs overlap.

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.

KDOP<N> &operator+=(const Vec3s &p)

Merge the point and the KDOP.

KDOP<N> &operator+=(const KDOP<N> &other)

Merge two KDOPs.

KDOP<N> operator+(const KDOP<N> &other) const

Create a KDOP by mergin two KDOPs.

inline CoalScalar size() const

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

inline Vec3s center() const

The (AABB) center.

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)
bool inside(const Vec3s &p) const

Protected Attributes

Eigen::Array<CoalScalar, N, 1> dist_

Origin’s distances to N KDOP planes.