Skip to main content

Crate geometry_overlay

Crate geometry_overlay 

Source
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_valid for rings and polygons.