extern crate nalgebra as na;
extern crate nav_types;
use nav_types::{NVector, WGS84};
static EARTH_RADIUS: f64 = 6371008.8;
fn main() {
let pos_a = WGS84::from_degrees_and_meters(36.12, -86.67, 0.0);
let pos_b = WGS84::from_degrees_and_meters(33.94, -118.40, 0.0);
let n_a = NVector::from(pos_a);
let n_b = NVector::from(pos_b);
let surface_distance = f64::atan2(
n_a.vector().cross(&n_b.vector()).norm(),
n_a.vector().dot(&n_b.vector()),
) * EARTH_RADIUS;
let euclid_distance = (n_b - n_a).norm();
println!(
"Surface distance {:?}m, euclidean distance {:?}m",
surface_distance, euclid_distance
);
}