Skip to main content

ogeom_geom/
lib.rs

1//! Parametric geometry: the `Curve3d`, `Curve2d` and `Surface` traits plus every
2//! concrete type behind them.
3//!
4//! The trait layer is the point: every intersection, projection and extrema
5//! algorithm is written against an *adaptor*, so nothing downstream cares
6//! whether the input is an analytic cylinder or a NURBS patch. Concrete types
7//! implement the traits. Algorithms only ever see the traits.
8
9pub mod convert;
10pub mod curve;
11pub mod curve2d;
12pub mod fit;
13pub mod project;
14pub mod surface;
15pub mod traits;
16
17pub use curve::{
18    BSplineCurve, CircleCurve, Curve, CurveOnSurface, EllipseCurve, HelixCurve, HyperbolaCurve,
19    LineCurve, OffsetCurve, ParabolaCurve, TrimmedCurve,
20};
21pub use curve2d::{
22    BSpline2d, Circle2d, Ellipse2d, Hyperbola2d, Line2d, Offset2d, PlanarCurve, Trig2d, Trimmed2d,
23    tangent_angle,
24};
25pub use project::{SurfaceProjection, SurfaceSeeds, project_on_surface, project_on_surface_from};
26pub use surface::{
27    BSplineSurface, ConeSurface, CylinderSurface, ExtrusionSurface, OffsetSurface, PlaneSurface,
28    RevolutionSurface, SphereSurface, SurfaceGeometry, TorusSurface, TrimmedSurface, carried,
29};
30pub use traits::{
31    Continuity, Curve2d, Curve3d, CurveKind, Reversible, Surface, SurfaceCurvature, SurfaceJet,
32    SurfaceKind, Transformable,
33};