Class AABB

Class Documentation

class AABB

A class describing the AABB collision structure, which is a box in 3D space determined by two diagonal points.

Bounding volume API

Common API to BVs.

inline bool contain(const Vec3s &p) const

Check whether the AABB contains a point.

inline bool overlap(const AABB &other) const

Check whether two AABB are overlap.

bool overlap(const Plane &p) const

Check whether AABB overlaps a plane.

bool overlap(const Halfspace &hs) const

Check whether AABB overlaps a halfspace.

bool overlap(const AABB &other, const CollisionRequest &request, CoalScalar &sqrDistLowerBound) const

Check whether two AABB are overlap.

CoalScalar distance(const AABB &other) const

Distance between two AABBs.

CoalScalar distance(const AABB &other, Vec3s *P, Vec3s *Q) const

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

inline AABB &operator+=(const Vec3s &p)

Merge the AABB and a point.

inline AABB &operator+=(const AABB &other)

Merge the AABB and another AABB.

inline AABB operator+(const AABB &other) const

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

inline CoalScalar size() const

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

inline Vec3s center() const

Center of the AABB.

inline CoalScalar width() const

Width of the AABB.

inline CoalScalar height() const

Height of the AABB.

inline CoalScalar depth() const

Depth of the AABB.

inline CoalScalar volume() const

Volume of the AABB.

Public Functions

AABB()

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

inline AABB(const Vec3s &v)

Creating an AABB at position v with zero size.

inline AABB(const Vec3s &a, const Vec3s &b)

Creating an AABB with two endpoints a and b.

inline AABB(const AABB &core, const Vec3s &delta)

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

inline AABB(const Vec3s &a, const Vec3s &b, const Vec3s &c)

Creating an AABB contains three points.

AABB(const AABB &other) = default
AABB &operator=(const AABB &other) = default
inline AABB &update(const Vec3s &a, const Vec3s &b)
inline bool operator==(const AABB &other) const

Comparison operator.

inline bool operator!=(const AABB &other) const
inline bool contain(const AABB &other) const

Check whether the AABB contains another AABB.

inline bool overlap(const AABB &other, AABB &overlap_part) const

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

inline bool axisOverlap(const AABB &other, int axis_id) const

Check whether two AABB are overlapped along specific axis.

inline AABB &expand(const Vec3s &delta)

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

inline AABB &expand(const CoalScalar delta)

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

inline AABB &expand(const AABB &core, CoalScalar ratio)

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

Public Members

Vec3s min_

The min point in the AABB.

Vec3s max_

The max point in the AABB.