1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use crate::math::{Isometry, Real}; use crate::query::{ClosestPoints, DefaultQueryDispatcher, QueryDispatcher, Unsupported}; use crate::shape::Shape; /// Computes the pair of closest points between two shapes. /// /// Returns `ClosestPoints::Disjoint` if the objects are separated by a distance greater than `max_dist`. /// The result points in `ClosestPoints::WithinMargin` are expressed in world-space. pub fn closest_points( pos1: &Isometry<Real>, g1: &dyn Shape, pos2: &Isometry<Real>, g2: &dyn Shape, max_dist: Real, ) -> Result<ClosestPoints, Unsupported> { let pos12 = pos1.inv_mul(pos2); DefaultQueryDispatcher .closest_points(&pos12, g1, g2, max_dist) .map(|res| res.transform_by(pos1, pos2)) }