1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
//! # IFC-Lite Clash
//!
//! High-performance geometry kernel for clash detection. This is a faithful
//! native port of the TypeScript reference engine in `packages/clash`: the same
//! AABB/vector math, triangle-triangle intersection (SAT) and minimum-distance
//! routines, per-element triangle BVHs, broad-phase candidate generation, and —
//! crucially — the exact narrow-phase classification.
//!
//! All geometric computation is performed in `f64`, even though vertices and
//! AABBs are sourced from `f32` buffers.
//!
//! ## Usage
//!
//! ```
//! use ifc_lite_clash::ClashSession;
//!
//! let mut session = ClashSession::new();
//! // positions: concatenated per-element vertex coords (x, y, z, ...)
//! // pos_ranges: [float_offset, float_len] per element
//! // indices: concatenated per-element LOCAL triangle indices
//! // idx_ranges: [idx_offset, idx_len] per element
//! // aabbs: [minx, miny, minz, maxx, maxy, maxz] per element
//! session.ingest(&[], &[], &[], &[], &[]);
//! let result = session.run_rule(&[], &[], 0, 0.0, 0.0, false);
//! assert!(result.records.is_empty());
//! ```
pub use Aabb;
pub use ClashStatus;
pub use ;