geo_core/utils.rs
1use std::f64::consts::PI;
2
3use crate::constants::EARTH_RADIUS;
4
5// DegToRad - Convert degrees to radians
6pub fn deg_to_rad(angle: f64) -> f64 {
7 angle * PI / 180.0
8}
9
10// RadToDeg - Convert radians to degrees
11pub fn rad_to_deg(angle: f64) -> f64 {
12 angle * 180.0 / PI
13}
14
15//FindCrossTrackDistance - Cross-track distance: Returns min distance between a great arc and another point (Lat longs).
16//This is the distance between a point and great arc, not a segment
17//Input and Output in Radians
18pub fn find_cross_track_distance(distance_ac: f64, bearing_ac: f64, bearing_ab: f64) -> f64 {
19 ((distance_ac / EARTH_RADIUS).sin() * (bearing_ac - bearing_ab).sin()).asin() * EARTH_RADIUS
20}