1#![forbid(unsafe_code)]
2
3#[cfg(feature = "exact")]
9pub mod exact;
10#[cfg(feature = "exact")]
11pub mod exact_bodies;
12#[cfg(feature = "exact")]
13pub mod exact_distance;
14#[cfg(feature = "exact")]
15mod exact_domain;
16#[cfg(feature = "exact")]
17mod exact_face;
18#[cfg(feature = "exact")]
19pub mod exact_hausdorff;
20pub mod frechet;
21pub mod measure;
22pub mod mesh;
23pub mod mesh_faces;
24pub mod mesh_hausdorff;
25pub mod mesh_measure;
26pub mod mesh_proximity;
27pub mod polyline_hausdorff;
28pub mod properties;
29pub mod proximity;
30pub mod winding;
31
32#[cfg(feature = "exact")]
33pub use exact::{exact_properties, ExactMeasureError};
34#[cfg(feature = "exact")]
35pub use exact_bodies::{
36 body_boundary_clearance, body_boundary_distance, body_boundary_hausdorff_distance,
37 body_plan_boundary_clearance, body_plan_boundary_distance, body_plan_overlap,
38 one_sided_body_boundary_hausdorff, one_sided_body_boundary_hausdorff_with_budget, BodyDistance,
39 BodyHausdorff, BodyHausdorffBounds, BodyMeasureError, BodyPlanOverlap, BodySide, PlacedBody,
40};
41#[cfg(feature = "exact")]
42pub use exact_distance::{
43 boundary_clearance, boundary_distance, plan_boundary_clearance, plan_boundary_distance,
44 plan_overlap, Clearance, DistanceBounds, PlanOverlap,
45};
46#[cfg(feature = "exact")]
47pub use exact_domain::FaceDomain;
48#[cfg(feature = "exact")]
49pub use exact_hausdorff::{
50 boundary_hausdorff_distance, one_sided_boundary_hausdorff,
51 one_sided_boundary_hausdorff_with_budget, BoundaryHausdorff,
52};
53pub use frechet::{
54 discrete_frechet_distance, discrete_frechet_distance_2d, frechet_at_most, frechet_at_most_2d,
55 frechet_distance, frechet_distance_2d, FrechetError,
56};
57pub use measure::Measure;
58pub use mesh::{
59 cycle_volume_properties, second_moments, surface_properties, volume_properties,
60 CycleVolumeError, MeshMeasureError, SurfaceProperties, VolumeProperties,
61};
62pub use mesh_faces::{
63 extent_along, select_by_normal, FaceSelection, FaceSelectionError, NormalCone,
64};
65pub use mesh_hausdorff::{
66 hausdorff_distance, one_sided_hausdorff, HausdorffBounds, HausdorffError, MeshHausdorff,
67};
68pub use mesh_measure::MeshMeasure;
69pub use mesh_proximity::{
70 mesh_distance, proximity_components, MeshDistance, MeshProximityError, ProximityComponent,
71};
72pub use polyline_hausdorff::{
73 frechet_decide_certified, frechet_decide_certified_2d, one_sided_polyline_hausdorff_distance,
74 one_sided_polyline_hausdorff_distance_2d, polyline_hausdorff_distance,
75 polyline_hausdorff_distance_2d, FrechetDecision,
76};
77pub use properties::MassProperties;
78pub use proximity::{
79 closest_point_on_triangle, closest_points_on_segments, closest_points_on_triangles,
80 ClosestPoints3, ProximityError,
81};
82pub use winding::{WindingError, WindingMesh, WindingNumber};