Expand description
Boolean-overlay engine — the segment-intersection kernel and the machinery built on top of it.
Mirrors boost/geometry/algorithms/detail/overlay/. Overlay is the
engine behind intersection, union, difference,
sym_difference, and (indirectly) buffer, is_valid, relate,
crosses, overlaps, touches, point_on_surface, and
merge_elements. Boost concentrates all of it under one detail
directory; the port gives it its own crate because the algorithmic
surface is too dense to share a crate with anything else.
The build order is strict:
predicate— OVL1: the robust predicate layer every overlay operation eventually calls (orientation, in-circle, segment-segment intersection, coordinate-range gate).operation— OVL5: a split-edge arrangement handles crossings, colocations, shared edges, traversal, and output assembly for the four Cartesian polygon Boolean operations.relate/validity/buffer— the public topology consumers layered on those predicates and operations.
§Robustness
The Cartesian kernel uses adaptive expansion predicates with no
rescale. predicate::range_guard refuses inputs outside the supported
arithmetic range rather than silently returning a wrong sign.
Re-exports§
pub use buffer::JoinStrategy;pub use buffer::PointStrategy;pub use buffer::buffer;pub use buffer::buffer_convex_polygon;pub use buffer::buffer_point;pub use buffer::buffer_with;pub use buffer::buffer_with_strategy;pub use line_intersection::LineIntersection;pub use line_intersection::line_intersection;pub use merge::merge_elements;pub use merge::merge_multipolygon;pub use merge::merge_polygons;pub use merge::stitch_triangles;pub use operation::OverlayError;pub use operation::difference;pub use operation::intersection;pub use operation::sym_difference;pub use operation::union;pub use operation::union_poly;pub use relate::De9im;pub use relate::Dimension;pub use relate::RelateError;pub use relate::contains_properly;pub use relate::crosses;pub use relate::overlaps;pub use relate::relate as relate_matrix;pub use relate::relate as relation;pub use relate::relate_mask as relate;pub use relate::touches;pub use surface_point::point_on_surface;pub use validity::ValidityFailure;pub use validity::ValidityOptions;pub use validity::is_valid;pub use validity::is_valid_polygon;pub use validity::is_valid_polygon_with;pub use validity::is_valid_ring;pub use validity::is_valid_ring_with;pub use validity::is_valid_with;pub use validity::validity_reason;pub use validity::validity_reason_with;
Modules§
- assemble
- OVL4 — output assembly: turn traversed rings into a
MultiPolygon. - buffer
- OVL7 —
buffer: grow a geometry outward by a fixed distance. - line_
intersection - Public segment-intersection result with topology classification.
- merge
- OVL8 —
merge_elements: combine overlapping polygons via union. - operation
- OVL5 — Cartesian polygon Boolean operations.
- predicate
- OVL1 — the robust predicate layer.
- relate
- OVL6.T1 / OVL6.T2 — the DE-9IM relate matrix and the spatial predicates derived from it.
- surface_
point - OVL6.T3 —
point_on_surface. - traverse
- OVL3 — traversal: walk the turn graph to assemble output rings.
- turn
- OVL2 — the turn graph.
- validity
- OVL6.T4 —
is_validfor rings and polygons.