use crate::bounding_volume::Aabb;
use crate::math::{Real, VectorExt};
use crate::query::SplitResult;
impl Aabb {
pub fn canonical_split(&self, axis: usize, bias: Real, epsilon: Real) -> SplitResult<Self> {
if self.mins.vget(axis) >= bias - epsilon {
SplitResult::Positive
} else if self.maxs.vget(axis) <= bias + epsilon {
SplitResult::Negative
} else {
let mut left = *self;
let mut right = *self;
left.maxs.vset(axis, bias);
right.mins.vset(axis, bias);
SplitResult::Pair(left, right)
}
}
}