use alga::linear::Translation; use math::{Isometry, Point}; use shape::{Ball, Plane, Shape}; use query::distance_internal; /// Computes the minimum distance separating two shapes. /// /// Returns `0.0` if the objects are touching or penetrating. pub fn shape_against_shape
(m1: &M, g1: &Shape
, m2: &M, g2: &Shape
) -> P::Real where P: Point, M: Isometry
,
{
if let (Some(b1), Some(b2)) = (
g1.as_shape:: (m1, s1, m2, s2)
} else if let Some(c1) = g1.as_composite_shape() {
distance_internal::composite_shape_against_shape(m1, c1, m2, g2)
} else if let Some(c2) = g2.as_composite_shape() {
distance_internal::shape_against_composite_shape(m1, g1, m2, c2)
} else {
panic!("No algorithm known to compute a contact point between the given pair of shapes.")
}
}