1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
use crate::math::{Point, Real};
use na;
/// Computes the center of a set of point.
#[inline]
pub fn center(pts: &[Point<Real>]) -> Point<Real> {
assert!(
pts.len() >= 1,
"Cannot compute the center of less than 1 point."
);
let denom: Real = na::convert::<f64, Real>(1.0 / (pts.len() as f64));
let mut piter = pts.iter();
let mut res = *piter.next().unwrap() * denom;
for pt in piter {
res += pt.coords * denom;
}
res
}