跳转到主要内容

raygeo.nest.collision

Collision detection for nesting algorithms.

Provides overlap checks with bounding-box, convex hull, and detailed polygon intersection, including hierarchical variants for performance.

Functions

any_overlap()

any_overlap(candidate: types.Polygon, placed: collections.abc.Sequence[types.Polygon], min_area: float = 1) -> bool

Check if a candidate polygon overlaps any placed polygon.

Returns: True if any overlap detected.

ParameterTypeDescription
candidatetypes.PolygonCandidate polygon.
placedcollections.abc.Sequence[types.Polygon]List of already-placed polygons.
min_areafloat = 1Minimum overlap area to consider (in clipper coords).
Returnsbool

any_overlap_hierarchical()

any_overlap_hierarchical(candidate_polys: collections.abc.Sequence[numpy.ndarray], candidate_hulls: collections.abc.Sequence[numpy.ndarray], placed_polys_groups: collections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]], placed_hulls_groups: collections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]], min_area: float = 1) -> bool

Hierarchical overlap: bbox -> hull -> detailed polygon.

Returns: True if any overlap detected.

ParameterTypeDescription
candidate_polyscollections.abc.Sequence[numpy.ndarray]Candidate polygons to check.
candidate_hullscollections.abc.Sequence[numpy.ndarray]Convex hulls of candidate polygons.
placed_polys_groupscollections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]]Groups of already-placed polygons.
placed_hulls_groupscollections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]]Convex hulls of placed groups.
min_areafloat = 1Minimum overlap area (clipper coords).
Returnsbool

any_overlap_hierarchical_grid()

any_overlap_hierarchical_grid(candidate_polys: collections.abc.Sequence[numpy.ndarray], candidate_hulls: collections.abc.Sequence[numpy.ndarray], placed_polys_groups: collections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]], placed_hulls_groups: collections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]], spatial_grid: spatial_grid.SpatialGrid, candidate_bbox: tuple[float, float, float, float], min_area: float = 1) -> bool

ParameterTypeDescription
candidate_polyscollections.abc.Sequence[numpy.ndarray]
candidate_hullscollections.abc.Sequence[numpy.ndarray]
placed_polys_groupscollections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]]
placed_hulls_groupscollections.abc.Sequence[collections.abc.Sequence[numpy.ndarray]]
spatial_gridspatial_grid.SpatialGridSpatialGrid for fast neighbor lookup.
candidate_bboxtuple[float, float, float, float]
min_areafloat = 1
Returnsbool

is_contained()

is_contained(inner: collections.abc.Sequence[types.Polygon], outer: types.Polygon) -> bool

Check if inner polygons are fully contained within outer polygon.

Returns: True if all inner polygons are inside outer.

ParameterTypeDescription
innercollections.abc.Sequence[types.Polygon]List of polygons to check.
outertypes.PolygonOuter polygon.
Returnsbool