use crate::bounding_volume::Aabb;
use crate::math::Vector;
use alloc::vec::Vec;
impl Aabb {
#[inline]
pub fn clip_polygon(&self, points: &mut Vec<Vector>) {
let mut workspace = Vec::new();
self.clip_polygon_with_workspace(points, &mut workspace)
}
#[inline]
pub fn clip_polygon_with_workspace(
&self,
points: &mut Vec<Vector>,
workspace: &mut Vec<Vector>,
) {
super::clip_halfspace_polygon(self.mins, -Vector::X, points, workspace);
super::clip_halfspace_polygon(self.maxs, Vector::X, workspace, points);
super::clip_halfspace_polygon(self.mins, -Vector::Y, points, workspace);
super::clip_halfspace_polygon(self.maxs, Vector::Y, workspace, points);
#[cfg(feature = "dim3")]
{
super::clip_halfspace_polygon(self.mins, -Vector::Z, points, workspace);
super::clip_halfspace_polygon(self.maxs, Vector::Z, workspace, points);
}
}
}