axiolid_surface/lib.rs
1#![forbid(unsafe_code)]
2
3//! Exact, format-neutral surface representations and evaluation contracts.
4//!
5//! Bounded, swept, offset, and curve-on-surface relationships are nodes in
6//! `axiolid-model`; this crate contains atomic surface data only.
7
8pub mod elementary;
9pub mod evaluate;
10pub mod spline;
11
12pub use elementary::{Cone, Cylinder, EllipticalCylinder, Plane, Sphere, Torus};
13pub use evaluate::SurfaceEvaluator;
14pub use spline::BSplineSurface;
15
16/// Atomic three-dimensional surface values.
17#[non_exhaustive]
18#[derive(Debug, Clone, PartialEq)]
19pub enum Surface {
20 /// Plane.
21 Plane(Plane),
22 /// Circular cylinder.
23 Cylinder(Cylinder),
24 /// Elliptical cylinder.
25 EllipticalCylinder(EllipticalCylinder),
26 /// Right circular cone.
27 Cone(Cone),
28 /// Sphere.
29 Sphere(Sphere),
30 /// Torus.
31 Torus(Torus),
32 /// Polynomial or rational B-spline surface.
33 BSpline(BSplineSurface),
34}