intersectsWithPlane method
Return if this intersects with other
Implementation
bool intersectsWithPlane(Plane other, {IntersectionResult result}) {
// This line is not necessary with a (center, extents) AABB representation
copyCenterAndHalfExtents(_aabbCenter, _aabbHalfExtents);
// Compute the projection interval radius of b onto L(t) = b.c + t * p.n
final double r = _aabbHalfExtents[0] * other.normal[0].abs() +
_aabbHalfExtents[1] * other.normal[1].abs() +
_aabbHalfExtents[2] * other.normal[2].abs();
// Compute distance of box center from plane
final double s = other.normal.dot(_aabbCenter) - other.constant;
// Intersection occurs when distance s falls within [-r,+r] interval
if (s.abs() <= r) {
final double a = s - r;
if (result != null && (result._depth == null || result._depth < a)) {
result._depth = a;
result.axis.setFrom(other.normal);
}
return true;
}
return false;
}