ncollide3d/query/distance/
distance_ball_ball.rs1use crate::math::Point;
2use crate::shape::Ball;
3use na::{self, RealField};
4
5#[inline]
7pub fn distance_ball_ball<N: RealField + Copy>(
8 center1: &Point<N>,
9 b1: &Ball<N>,
10 center2: &Point<N>,
11 b2: &Ball<N>,
12) -> N {
13 let r1 = b1.radius;
14 let r2 = b2.radius;
15 let delta_pos = *center2 - *center1;
16 let distance_squared = delta_pos.norm_squared();
17 let sum_radius = r1 + r2;
18
19 if distance_squared <= sum_radius * sum_radius {
20 na::zero()
21 } else {
22 distance_squared.sqrt() - sum_radius
23 }
24}