parry3d/query/clip/
clip_aabb_polygon.rs1use crate::bounding_volume::Aabb;
2use crate::math::{Point, Real, Vector};
3use alloc::vec::Vec;
4
5impl Aabb {
6 #[inline]
13 pub fn clip_polygon(&self, points: &mut Vec<Point<Real>>) {
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<Point<Real>>,
26 workspace: &mut Vec<Point<Real>>,
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}