parry3d/query/distance/
distance_halfspace_support_map.rs

1use crate::math::{Isometry, Real};
2use crate::shape::HalfSpace;
3use crate::shape::SupportMap;
4use na;
5
6/// Distance between a halfspace and a support-mapped shape.
7pub fn distance_halfspace_support_map<G: ?Sized + SupportMap>(
8    pos12: &Isometry<Real>,
9    halfspace: &HalfSpace,
10    other: &G,
11) -> Real {
12    let deepest = other.support_point_toward(pos12, &-halfspace.normal);
13    halfspace.normal.dot(&deepest.coords).max(na::zero())
14}
15
16/// Distance between a support-mapped shape and a halfspace.
17pub fn distance_support_map_halfspace<G: ?Sized + SupportMap>(
18    pos12: &Isometry<Real>,
19    other: &G,
20    halfspace: &HalfSpace,
21) -> Real {
22    distance_halfspace_support_map(&pos12.inverse(), halfspace, other)
23}