axiolid_nurbs/
lib.rs

1#![forbid(unsafe_code)]
2#![warn(missing_docs)]
3
4//! General NURBS algorithms over Axiolid's format-neutral B-spline values.
5//!
6//! This crate builds on the portable scalar oracle: evaluation comes from
7//! `axiolid-evaluate` and is not reimplemented here. It owns differential
8//! geometry and exact shape-preserving transformations; importers and
9//! tessellators are consumers, not the capability boundary.
10//!
11//! Every tolerance-sensitive solver takes explicit, bounded options (work
12//! ceilings, resolutions, tolerances) and reports an unresolved outcome or
13//! refuses when they run out. A shape-preserving transform is tested against
14//! independent evaluation samples of the original, not its own recurrence.
15
16mod axis;
17mod certified_bezier;
18mod certified_curve_distance;
19mod certified_curve_intersection;
20mod certified_curve_projection;
21mod certified_curve_surface_intersection;
22mod certified_projection;
23mod certified_refinement;
24mod certified_surface_arcs;
25mod certified_surface_bezier;
26mod certified_surface_inversion;
27mod certified_surface_projection;
28mod certified_surface_surface_intersection;
29mod curve_analysis;
30mod curve_projection;
31mod degree;
32mod exact_curve_intersection;
33mod exact_field;
34mod exact_series;
35mod exact_surface_intersection;
36pub mod extrema;
37mod field;
38mod fit;
39mod implicit_ops;
40mod implicit_section;
41mod implicit_trace;
42mod intersection_curve;
43mod pair_certify;
44mod pair_trace;
45mod periodic;
46mod periodic_surface;
47mod projection;
48mod revolution_profile;
49mod ruled_section;
50mod section_curves;
51mod spline_field;
52mod surface_analysis;
53mod surface_ops;
54mod surface_projection;
55mod surface_transform;
56mod torus_section;
57mod transform;
58
59pub use certified_curve_distance::{distance_curve2_certified, distance_curve3_certified};
60pub use certified_curve_intersection::{
61    intersect_curve2_certified, CertifiedCurveIntersection2, CertifiedCurveIntersectionOptions,
62    ClassifiedCurveContact2, CurveIntersectionDegeneracy, TransverseCurveIntersection2,
63};
64pub use certified_curve_projection::{project_curve2_certified, project_curve3_certified};
65pub use certified_curve_surface_intersection::{
66    intersect_curve_surface_certified, CertifiedCurveSurfaceIntersection3,
67    CertifiedCurveSurfaceIntersectionOptions, CurveSurfaceParameterBox,
68    TransverseCurveSurfaceIntersection3,
69};
70pub use certified_projection::{
71    CertifiedProjectionOptions, CertifiedSurfaceProjection3, CertifiedSurfaceProjectionOptions,
72    CurveDistanceCertificate2, CurveDistanceCertificate3, CurvePairParameterBox,
73    CurveProjectionCertificate2, CurveProjectionCertificate3, ParameterInterval,
74    SurfaceParameterBox, SurfaceProjectionCertificate3, SurfaceProjectionUnresolvedReason,
75    MAX_CERTIFIED_SURFACE_PROJECTION_DEPTH, MAX_CERTIFIED_SURFACE_PROJECTION_WORK,
76};
77pub use certified_surface_arcs::{
78    audit_coverage, certify_surface_arcs, CertifiedRegion, CertifiedSurfaceArcs3,
79    CertifiedSurfaceArcsOptions, CoverageFault, RegionKind, MAX_AUDIT_DEPTH,
80};
81pub use certified_surface_inversion::{
82    invert_periodic_surface_certified, invert_surface_certified, SurfaceInversionCertificate3,
83    SurfaceInversionRefusal,
84};
85pub use certified_surface_projection::{
86    project_periodic_surface_certified, project_surface_certified,
87};
88pub use certified_surface_surface_intersection::{
89    intersect_surface_surface_certified, CertifiedSurfaceSurfaceIntersection3,
90    CertifiedSurfaceSurfaceIntersectionOptions, SurfaceSurfaceParameterBox,
91    SurfaceSurfaceTraceEndpoint3, TransverseSurfaceSurfaceTrace3,
92};
93pub use curve_analysis::{analyze_curve2, analyze_curve3, CurveDifferential2, CurveDifferential3};
94pub use curve_projection::{project_curve2, project_curve3};
95pub use degree::{
96    elevate_degree2, elevate_degree3, reduce_degree2, reduce_degree3, remove_knot2, remove_knot3,
97    BoundedResult,
98};
99pub use exact_curve_intersection::{
100    exact_curve_curve_intersection2, exact_curve_curve_intersection3,
101    exact_curve_surface_intersection, ExactCurveHit, ExactCurveIntersection, ExactCurveParameter,
102    ExactCurveRefusal, Isolated,
103};
104pub use exact_surface_intersection::{
105    exact_surface_intersection, Derivation, ExactIntersectionCurve, ExactIntersectionRefusal,
106};
107pub use fit::{interpolate_curve3, loft_surface};
108pub use implicit_ops::{
109    extract_stretch, implicit_view, section_curve_surface_intersection, trace_section_pcurves,
110};
111pub use implicit_section::{implicit_surface_intersection, section_field_of};
112pub use intersection_curve::{
113    construct_curve_surface_points, construct_surface_surface_curves,
114    ConstructedCurveSurfacePoint3, ConstructedIntersectionCurve3, IntersectionCurveRefusal,
115};
116pub use pair_trace::spline_pair_intersection;
117pub use periodic::{
118    curve2_seam_continuity, curve3_seam_continuity, wrap_curve2_parameter, wrap_curve3_parameter,
119    PeriodicCurve2, PeriodicCurve3, SeamContinuity,
120};
121pub use periodic_surface::PeriodicBSplineSurface;
122pub use projection::{
123    CurveProjection2, CurveProjection3, ProjectionOptions, ProjectionStatus, SurfaceProjection,
124};
125pub use section_curves::{
126    section_curve_curve_intersection2, section_curve_curve_intersection3, CurveCurveHit,
127};
128pub use surface_analysis::{analyze_surface, FundamentalForm, SurfaceDifferential};
129pub use surface_ops::{
130    elevate_surface_degree_u, elevate_surface_degree_v, iso_curve_at_u, iso_curve_at_v,
131    reduce_surface_degree_u, reduce_surface_degree_v, remove_surface_knot_u, remove_surface_knot_v,
132    BoundedSurface, SurfaceKnotRemoval,
133};
134pub use surface_projection::project_surface;
135pub use surface_transform::{
136    insert_surface_knot_u, insert_surface_knot_v, reverse_surface_u, reverse_surface_v,
137};
138pub use transform::{
139    bezier_segments2, bezier_segments3, insert_knot2, insert_knot3, reverse2, reverse3, split2,
140    split3,
141};