use_earth_constants/
lib.rs1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub const EARTH_RADIUS_MEAN: f64 = 6_371_000.0;
6
7pub const EARTH_RADIUS_EQUATORIAL: f64 = 6_378_137.0;
9
10pub const EARTH_RADIUS_POLAR: f64 = 6_356_752.314_245;
12
13pub const EARTH_MASS: f64 = 5.972_2e24;
15
16pub const STANDARD_GRAVITY: f64 = 9.806_65;
18
19pub const SEA_LEVEL_STANDARD_PRESSURE: f64 = 101_325.0;
21
22pub const WGS84_A: f64 = 6_378_137.0;
24
25pub const WGS84_B: f64 = 6_356_752.314_245;
27
28pub const WGS84_FLATTENING: f64 = 1.0 / 298.257_223_563;
30
31#[cfg(test)]
32mod tests {
33 use super::{
34 EARTH_MASS, EARTH_RADIUS_EQUATORIAL, EARTH_RADIUS_MEAN, EARTH_RADIUS_POLAR,
35 SEA_LEVEL_STANDARD_PRESSURE, STANDARD_GRAVITY, WGS84_A, WGS84_B, WGS84_FLATTENING,
36 };
37
38 #[test]
39 fn earth_radii_follow_expected_ordering() {
40 assert!(EARTH_RADIUS_EQUATORIAL > EARTH_RADIUS_MEAN);
41 assert!(EARTH_RADIUS_MEAN > EARTH_RADIUS_POLAR);
42 }
43
44 #[test]
45 fn wgs84_axes_match_radius_aliases() {
46 assert_eq!(EARTH_RADIUS_EQUATORIAL, WGS84_A);
47 assert_eq!(EARTH_RADIUS_POLAR, WGS84_B);
48 }
49
50 #[test]
51 fn representative_environment_constants_are_reasonable() {
52 assert!(WGS84_FLATTENING > 0.0);
53 assert!(STANDARD_GRAVITY > 9.8 && STANDARD_GRAVITY < 9.9);
54 assert_eq!(SEA_LEVEL_STANDARD_PRESSURE, 101_325.0);
55 assert!(EARTH_MASS > 0.0);
56 }
57}