parry3d/query/clip/
clip_aabb_polygon.rs1use crate::bounding_volume::Aabb;
2use crate::math::Vector;
3use alloc::vec::Vec;
4
5impl Aabb {
6 #[inline]
13 pub fn clip_polygon(&self, points: &mut Vec<Vector>) {
14 let mut workspace = Vec::new();
15 self.clip_polygon_with_workspace(points, &mut workspace)
16 }
17
18 #[inline]
23 pub fn clip_polygon_with_workspace(
24 &self,
25 points: &mut Vec<Vector>,
26 workspace: &mut Vec<Vector>,
27 ) {
28 super::clip_halfspace_polygon(self.mins, -Vector::X, points, workspace);
29 super::clip_halfspace_polygon(self.maxs, Vector::X, workspace, points);
30
31 super::clip_halfspace_polygon(self.mins, -Vector::Y, points, workspace);
32 super::clip_halfspace_polygon(self.maxs, Vector::Y, workspace, points);
33
34 #[cfg(feature = "dim3")]
35 {
36 super::clip_halfspace_polygon(self.mins, -Vector::Z, points, workspace);
37 super::clip_halfspace_polygon(self.maxs, Vector::Z, workspace, points);
38 }
39 }
40}