geometry_cs/lib.rs
1//! Coordinate systems, angle units, and reference spheroids.
2//!
3//! Mirrors `boost/geometry/core/cs.hpp` (the `cs::cartesian`,
4//! `cs::spherical`, `cs::geographic`, `cs::polar` tag templates and their
5//! `cs_tag` family classifier) together with
6//! `boost/geometry/core/coordinate_system.hpp` (the
7//! `traits::coordinate_system<Point>` typedef that picks one of those
8//! tags out per point type) and `boost/geometry/srs/spheroid.hpp` (the
9//! reference ellipsoid carried alongside any geographic strategy).
10//!
11//! Crate split per proposal §3.3: a coordinate system is a *type* with
12//! an associated [`CoordinateSystem::Family`], and algorithm strategies
13//! bind on the family — never on the concrete CS — so that degree and
14//! radian variants share one impl.
15
16#![cfg_attr(not(feature = "std"), no_std)]
17#![forbid(unsafe_code)]
18
19mod family;
20mod spheroid;
21mod spheroidal;
22mod system;
23mod unit;
24
25pub use family::{CartesianFamily, GeographicFamily, PolarFamily, SphericalFamily};
26pub use spheroid::Spheroid;
27pub use spheroidal::{SpheroidalScalar, SpheroidalUnits, normalize_spheroidal_box_coordinates};
28pub use system::{Cartesian, CoordinateSystem, Geographic, Polar, Spherical};
29pub use unit::{AngleUnit, Degree, FromF64, Radian};