38 #ifndef FCL_BV_AABB_INL_H 39 #define FCL_BV_AABB_INL_H 41 #include "fcl/math/bv/AABB.h" 53 : min_(Vector3<S>::Constant(std::numeric_limits<S>::max())),
54 max_(Vector3<S>::Constant(-std::numeric_limits<S>::max()))
69 :
min_(a.cwiseMin(b)),
90 :
min_(a.cwiseMin(b).cwiseMin(c)),
91 max_(a.cwiseMax(b).cwiseMax(c))
100 if ((
min_.array() > other.
max_.array()).any())
103 if ((
max_.array() < other.
min_.array()).any())
110 template <
typename S>
113 if ((
min_.array() > other.
min_.array()).any())
116 if ((
max_.array() < other.
max_.array()).any())
123 template <
typename S>
126 if(
min_[axis_id] > other.
max_[axis_id])
return false;
128 if(
max_[axis_id] < other.
min_[axis_id])
return false;
134 template <
typename S>
148 template <
typename S>
151 if ((
min_.array() > p.array()).any())
154 if ((
max_.array() < p.array()).any())
161 template <
typename S>
170 template <
typename S>
179 template <
typename S>
187 template <
typename S>
194 template <
typename S>
201 template <
typename S>
208 template <
typename S>
215 template <
typename S>
222 template <
typename S>
229 template <
typename S>
236 template <
typename S>
240 for(std::size_t i = 0; i < 3; ++i)
242 const S& amin =
min_[i];
243 const S& amax =
max_[i];
244 const S& bmin = other.
min_[i];
245 const S& bmax = other.
max_[i];
249 S delta = bmax - amin;
250 result += delta * delta;
259 S delta = amax - bmin;
260 result += delta * delta;
273 S t = 0.5 * (amax + bmin);
279 S t = 0.5 * (amin + bmax);
287 return std::sqrt(result);
291 template <
typename S>
295 for(std::size_t i = 0; i < 3; ++i)
297 const S& amin =
min_[i];
298 const S& amax =
max_[i];
299 const S& bmin = other.
min_[i];
300 const S& bmax = other.
max_[i];
304 S delta = bmax - amin;
305 result += delta * delta;
309 S delta = amax - bmin;
310 result += delta * delta;
314 return std::sqrt(result);
318 template <
typename S>
321 return min_.isApprox(other.
min_, std::numeric_limits<S>::epsilon() * 100)
322 &&
max_.isApprox(other.
max_, std::numeric_limits<S>::epsilon() * 100);
326 template <
typename S>
335 template <
typename S>
344 template <
typename S,
typename Derived>
346 const AABB<S>& aabb,
const Eigen::MatrixBase<Derived>& t)
Main namespace.
Definition: broadphase_bruteforce-inl.h:45
S size() const
Size of the AABB (used in BV_Splitter to order two AABBs)
Definition: AABB-inl.h:216
bool axisOverlap(const AABB< S > &other, int axis_id) const
Check whether two AABB are overlapped along specific axis.
Definition: AABB-inl.h:124
AABB< S > & operator+=(const Vector3< S > &p)
Merge the AABB and a point.
Definition: AABB-inl.h:162
S height() const
Height of the AABB.
Definition: AABB-inl.h:195
AABB< S > translate(const AABB< S > &aabb, const Eigen::MatrixBase< Derived > &t)
translate the center of AABB by t
Definition: AABB-inl.h:345
bool equal(const AABB< S > &other) const
whether two AABB are equal
Definition: AABB-inl.h:319
bool overlap(const AABB< S > &other) const
Check whether two AABB are overlap.
Definition: AABB-inl.h:98
Vector3< S > max_
The max point in the AABB.
Definition: AABB.h:59
Vector3< S > center() const
Center of the AABB.
Definition: AABB-inl.h:230
AABB< S > operator+(const AABB< S > &other) const
Return the merged AABB of current AABB and the other one.
Definition: AABB-inl.h:180
Vector3< S > min_
The min point in the AABB.
Definition: AABB.h:56
S depth() const
Depth of the AABB.
Definition: AABB-inl.h:202
S volume() const
Volume of the AABB.
Definition: AABB-inl.h:209
S radius() const
Radius of the AABB.
Definition: AABB-inl.h:223
AABB()
Creating an AABB with zero size (low bound +inf, upper bound -inf)
Definition: AABB-inl.h:52
AABB< S > & expand(const Vector3< S > &delta)
expand the half size of the AABB by delta, and keep the center unchanged.
Definition: AABB-inl.h:327
S distance(const AABB< S > &other, Vector3< S > *P, Vector3< S > *Q) const
Distance between two AABBs; P and Q, should not be nullptr, return the nearest points.
Definition: AABB-inl.h:237
S width() const
Width of the AABB.
Definition: AABB-inl.h:188
bool contain(const AABB< S > &other) const
Check whether the AABB contains another AABB.
Definition: AABB-inl.h:111