///|
pub let pi : Double = 3.141592653589793
///|
pub let two_pi : Double = 6.283185307179586
///|
pub let half_pi : Double = 1.5707963267948966
///|
pub let deg_to_rad : Double = pi / 180.0
///|
pub let rad_to_deg : Double = 180.0 / pi
///|
pub let earth_mu_km3_s2 : Double = 398600.4418
///|
pub let earth_radius_km : Double = 6378.137
///|
pub let earth_rotation_rad_s : Double = 7.2921150e-5
///|
pub let j2 : Double = 1.08262668e-3
///|
pub fn radians(degrees : Double) -> Double {
degrees * deg_to_rad
}
///|
pub fn degrees(radians : Double) -> Double {
radians * rad_to_deg
}
///|
pub fn normalize_angle(theta : Double) -> Double {
let wrapped = theta % two_pi
if wrapped < 0.0 {
wrapped + two_pi
} else {
wrapped
}
}
///|
pub fn clamp(x : Double, low : Double, high : Double) -> Double {
if x < low {
low
} else if x > high {
high
} else {
x
}
}
///|
pub fn nearly_equal(a : Double, b : Double, eps : Double) -> Bool {
(a - b).abs() <= eps
}