del-geo 0.1.2

2D/3D geometry utility coddes
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use num_traits::AsPrimitive;

pub fn arclength_polygon<T, const X: usize>(
    vtxs: &Vec<nalgebra::base::SVector<T, X>>) -> T
    where T: nalgebra::RealField + Copy,
          f64: num_traits::AsPrimitive<T>
{
    if vtxs.len() < 2 { return 0_f64.as_(); }
    let np = vtxs.len();
    let mut len: T = 0_f64.as_();
    for ip0 in 0..np {
        let ip1 = (ip0 + 1) % np;
        len += (vtxs[ip0] - vtxs[ip1]).norm();
    }
    return len;
}