parry3d/query/point/
point_bounding_sphere.rs1use crate::bounding_volume::BoundingSphere;
2use crate::math::{Real, Vector};
3use crate::query::{PointProjection, PointQuery};
4use crate::shape::{Ball, FeatureId};
5
6impl PointQuery for BoundingSphere {
7 #[inline]
8 fn project_local_point(&self, pt: Vector, solid: bool) -> PointProjection {
9 let centered_pt = pt - self.center();
10 let mut proj = Ball::new(self.radius()).project_local_point(centered_pt, solid);
11
12 proj.point += self.center();
13 proj
14 }
15
16 #[inline]
17 fn project_local_point_and_get_feature(&self, pt: Vector) -> (PointProjection, FeatureId) {
18 (self.project_local_point(pt, false), FeatureId::Face(0))
19 }
20
21 #[inline]
22 fn distance_to_local_point(&self, pt: Vector, solid: bool) -> Real {
23 let centered_pt = pt - self.center();
24 Ball::new(self.radius()).distance_to_local_point(centered_pt, solid)
25 }
26
27 #[inline]
28 fn contains_local_point(&self, pt: Vector) -> bool {
29 let centered_pt = pt - self.center();
30 Ball::new(self.radius()).contains_local_point(centered_pt)
31 }
32}