Skip to main content

rigidity_core/
lib.rs

1//! The `rigidity` core.
2//!
3//! Dependencies are limited to `nalgebra`, `rayon` and `thiserror`: no file
4//! I/O, no GPU, no UI. This crate must build and pass its tests on Linux,
5//! Windows and macOS without a single system library.
6//!
7//! Three invariants hold throughout:
8//! - points are stored as `f32` offsets from an `f64` origin, while all
9//!   arithmetic is done in `f64`;
10//! - `H = JᵀWJ` is never formed explicitly — the work goes through a
11//!   tall-skinny QR of the weighted Jacobian;
12//! - results are bit-for-bit reproducible at any thread count.
13
14pub mod cloud;
15pub mod icp;
16pub mod lie;
17pub mod linalg;
18pub mod neighbors;
19pub mod normals;
20pub mod observability;
21pub mod voxel;
22
23pub use cloud::{Attribute, AttributeData, CloudError, PointCloud};
24pub use neighbors::{BruteForce, Neighbor, NeighborSearch};
25
26/// The linear algebra the public interface is written in.
27///
28/// `Vector3<f64>`, `Vector6<f64>` and `Matrix6<f64>` appear in almost every
29/// signature here, so a downstream crate that resolves a different
30/// `nalgebra` gets type errors that read as nonsense. Re-exporting removes
31/// the possibility: `use rigidity_core::nalgebra` cannot drift.
32pub use nalgebra;