geometry_overlay/predicate.rs
1//! OVL1 — the robust predicate layer.
2//!
3//! Every overlay operation eventually calls this module. It is the
4//! boundary between "raw coordinates" and "topological decisions":
5//! given points, it answers *which side*, *inside which circle*, and
6//! *do these two segments meet and where*.
7//!
8//! Mirrors the Cartesian side / intersection strategies in
9//! `boost/geometry/strategy/cartesian/` (`side_by_triangle.hpp`,
10//! `intersection.hpp`) and the robustness policies in
11//! `boost/geometry/policies/robustness/`.
12//!
13//! Module layout (the OVL1 tasks, in dependency order):
14//!
15//! * [`mod@orientation`] — OVL1.T1: the signed-area side predicate.
16//! * [`mod@in_circle`] — OVL1.T2: the in-circle predicate used by
17//! `is_valid` and the turn graph.
18//! * [`mod@segment_intersection`] — OVL1.T3: segment-segment
19//! intersection returning the meeting point(s).
20//! * [`mod@range_guard`] — OVL1.T4: the coordinate-range robustness
21//! gate that enforces the "exact arithmetic, no rescale" policy.
22
23pub mod in_circle;
24pub mod orientation;
25pub mod range_guard;
26pub mod segment_intersection;
27
28pub use in_circle::in_circle_2d;
29pub use orientation::{Sign, orientation_2d};
30pub use range_guard::{RangeError, SAFE_ABS_MAX, coordinate_in_range, polygon_in_range};
31pub use segment_intersection::{SegmentIntersection, segment_intersection};