Skip to main content

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}