1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
//! A Rust CAD System - A library for building 2D *Computer Aided Design* //! applications. //! //! ## A Note on Conventions //! //! When using this crate you'll frequently need to work with multiple //! coordinate spaces. To prevent accidentally mixing up vectors or points in //! different coordinate spaces (see [the Mars Climate Orbiter][mco]), we use //! [`euclid`]'s ability to "tag" a geometry primitive with something //! representing the coordinate space it belongs to. //! //! For convenience we expose type aliases for the main coordinate space you'll //! be using, [`DrawingSpace`]. //! //! For more details on when each coordinate space is used, consult the docs for //! [`DrawingSpace`] and [`CanvasSpace`]. //! //! [mco]: https://en.wikipedia.org/wiki/Mars_Climate_Orbiter #![forbid(unsafe_code)] #[deny( missing_debug_implementations, missing_copy_implementations, missing_docs )] pub mod algorithms; pub mod components; pub mod primitives; pub mod systems; mod types; pub mod window; /// An [`primitives::Arc`] in [`DrawingSpace`]. pub type Arc = primitives::Arc<DrawingSpace>; /// A [`primitives::Line`] in [`DrawingSpace`]. pub type Line = primitives::Line<DrawingSpace>; pub use types::{ centre_of_three_points, Angle, CanvasSpace, DrawingSpace, Length, Orientation, Point, Transform, Vector, };