PolygonIndicatorHeuristics

Prunes fringe offsets for concave...

sort Weight: 10

Prunes fringe offsets for concave polygons by removing tiles whose overlap area is below min_area_ratio * tile_area. Returns a new array (may be original if no pruning beneficial).

Version: v5.0.0

STABLE

Inherits: RefCounted
Source: polygon_indicator_heuristics.gd
Parsing: AST-based for maximum accuracy with symbol typing


Methods

is_hollow

Signature: static is_hollow(offsets: Array[Vector2i]: Variant, density_factor: float = 1.5) -> bool

Returns true if (bbox_area > offsets.size() * density_factor)

Returns: bool

Static: true

Parameters:

  • offsets: Array[Vector2i]: Variant
  • density_factor: float (optional, default: 1.5)

should_expand_trapezoid

Signature: static should_expand_trapezoid(polygon_is_convex: bool, offsets: Array[Vector2i]: Variant, ys: Array[int]: Variant, xs_by_y: Dictionary, hollow: bool, max_original: int = 10) -> bool

  • Exactly two Y rows present containing -1 and 0 with (0,0) present (pre‑expansion base)

Returns: bool

Static: true

Parameters:

  • polygon_is_convex: bool
  • offsets: Array[Vector2i]: Variant
  • ys: Array[int]: Variant
  • xs_by_y: Dictionary
  • hollow: bool
  • max_original: int (optional, default: 10)

generate_trapezoid_offsets

Signature: static generate_trapezoid_offsets() -> Array

Generates canonical 13-tile trapezoid offsets (rows y=-1,0,1 => 3/5/5 pattern).

Returns: Array

Static: true


polygon_tile_overlap_area

Signature: static polygon_tile_overlap_area(polygon: PackedVector2Array, rect: Rect2) -> float

Computes precise overlap area between polygon world points and a tile rect (duplicate of S-H clip used for deterministic tests).

Returns: float

Static: true

Parameters:

  • polygon: PackedVector2Array
  • rect: Rect2

_inside

Signature: static _inside(p: Vector2, boundary: int, left: float, right: float, top: float, bottom: float) -> bool

Bounding box quick reject

Returns: bool

Static: true

Parameters:

  • p: Vector2
  • boundary: int
  • left: float
  • right: float
  • top: float
  • bottom: float

_intersect

Signature: static _intersect(a: Vector2, b: Vector2, boundary: int, left: float, right: float, top: float, bottom: float) -> Vector2

Returns: Vector2

Static: true

Parameters:

  • a: Vector2
  • b: Vector2
  • boundary: int
  • left: float
  • right: float
  • top: float
  • bottom: float

prune_concave_fringe

Signature: static prune_concave_fringe(world_points: PackedVector2Array, offsets: Array[Vector2i]: Variant, center_tile: Vector2i, tile_size: Vector2, min_area_ratio: float = 0.12) -> Array

Returns a new array (may be original if no pruning beneficial).

Returns: Array

Static: true

Parameters:

  • world_points: PackedVector2Array
  • offsets: Array[Vector2i]: Variant
  • center_tile: Vector2i
  • tile_size: Vector2
  • min_area_ratio: float (optional, default: 0.12)