Skip to main content

celestial_core/
math.rs

1#[inline]
2pub fn fmod(x: f64, y: f64) -> f64 {
3    libm::fmod(x, y)
4}
5
6#[inline]
7pub fn vincenty_angular_separation(
8    sin_lat1: f64,
9    cos_lat1: f64,
10    sin_lat2: f64,
11    cos_lat2: f64,
12    delta_lon: f64,
13) -> f64 {
14    let (sin_delta_lon, cos_delta_lon) = delta_lon.sin_cos();
15
16    let num = ((cos_lat2 * sin_delta_lon).powi(2)
17        + (cos_lat1 * sin_lat2 - sin_lat1 * cos_lat2 * cos_delta_lon).powi(2))
18    .sqrt();
19    let den = sin_lat1 * sin_lat2 + cos_lat1 * cos_lat2 * cos_delta_lon;
20
21    num.atan2(den)
22}