Skip to main content

axiolid_reference/
lib.rs

1#![forbid(unsafe_code)]
2
3//! Portable scalar reference implementation: the correctness oracle (ADR 0012).
4//!
5//! No intrinsics, no threading, no feature gates. Every optimized backend is
6//! validated by differential test against this crate, so it must stay readable
7//! and obviously correct in preference to being fast.
8
9pub mod arithmetic;
10pub mod boolean;
11pub mod clash;
12pub mod convex_hull;
13pub mod curve;
14pub mod expansion;
15mod nurbs;
16pub mod orient3;
17mod orient3_dyadic;
18pub mod orientation;
19pub mod polygon;
20pub mod primitive;
21pub mod scene;
22pub mod section;
23pub mod segment_triangle;
24pub mod sphere;
25pub mod static_filter;
26pub mod surface;
27pub mod tessellate;
28pub mod triangle_triangle;
29
30pub use boolean::ScalarBoolean;
31pub use convex_hull::{minimum_area_rectangle, strict_convex_hull, OrientedRectangle2};
32pub use curve::{derivative2, derivative3, evaluate2, evaluate3, flatten2, ScalarCurve};
33pub use expansion::{two_diff, two_product, two_sum};
34pub use orient3::{orient3d, orient3d_filter};
35pub use orientation::{orient2d, orient2d_filter};
36pub use polygon::{ring_orientation, signed_area2, triangulate_simple};
37pub use section::ScalarSection;
38pub use segment_triangle::{segment_triangle_relation, SegmentTriangleRelation};
39pub use sphere::{incircle, incircle_filter, insphere, insphere_filter};
40pub use static_filter::StaticFilter;
41pub use surface::{partials, Patch, ScalarSurface};
42pub use triangle_triangle::{triangle_triangle_relation, TriangleTriangleRelation};