Ir al contenido principal

raygeo.geo.algo.nest2d.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: Sequence[types.Polygon],
min_area: float = 1,
) -> bool

Check if a candidate polygon overlaps any placed polygon.

ParameterTypeDescription
candidatetypes.PolygonCandidate polygon.
placedSequence[types.Polygon]List of already-placed polygons.
min_areafloat = 1Minimum overlap area to consider (in clipper coords).
ReturnsboolTrue if any overlap detected.
ComplexityO(n * m) where n = candidate vertices, m = placed polygon vertices.

any_overlap_hierarchical()

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

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

ParameterTypeDescription
candidate_polysSequence[numpy.ndarray]Candidate polygons to check.
candidate_hullsSequence[numpy.ndarray]Convex hulls of candidate polygons.
placed_polys_groupsSequence[Sequence[numpy.ndarray]]Groups of already-placed polygons.
placed_hulls_groupsSequence[Sequence[numpy.ndarray]]Convex hulls of placed groups.
min_areafloat = 1Minimum overlap area (clipper coords).
ReturnsboolTrue if any overlap detected.
ComplexityO(n * m) with bbox/hull early-exit acceleration.

any_overlap_hierarchical_grid()

any_overlap_hierarchical_grid(
candidate_polys: Sequence[numpy.ndarray],
candidate_hulls: Sequence[numpy.ndarray],
placed_polys_groups: Sequence[Sequence[numpy.ndarray]],
placed_hulls_groups: Sequence[Sequence[numpy.ndarray]],
spatial_grid: spatial_grid2d.SpatialGrid,
candidate_bbox: tuple[float, float, float, float],
min_area: float = 1,
) -> bool
ParameterTypeDescription
candidate_polysSequence[numpy.ndarray]
candidate_hullsSequence[numpy.ndarray]
placed_polys_groupsSequence[Sequence[numpy.ndarray]]
placed_hulls_groupsSequence[Sequence[numpy.ndarray]]
spatial_gridspatial_grid2d.SpatialGridSpatialGrid for fast neighbor lookup.
candidate_bboxtuple[float, float, float, float]
min_areafloat = 1
Returnsbool
ComplexityO(n * m / k) where k = grid cell density factor.

is_contained()

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

Check if inner polygons are fully contained within outer polygon.

ParameterTypeDescription
innerSequence[types.Polygon]List of polygons to check.
outertypes.PolygonOuter polygon.
ReturnsboolTrue if all inner polygons are inside outer.
ComplexityO(n * m) where n = inner polygons, m = outer polygon vertices.