radial_grid_between_radii
Functionradial_grid_between_radii(
states: list[State],
center: Point2D = Point2D(x=0, y=0),
inner_radius: float = 50,
outer_radius: float = 200,
rings: int = 3,
segments: int = 8,
rotation: float = 0,
alignment: ElementAlignment = <ElementAlignment.PRESERVE: 'preserve'>,
element_rotation_offset: float = 0,
element_rotation_offset_fn: Optional[Callable[[int, int, float], float]] = None
) -> list[State]
Arrange states in a radial grid with specified inner and outer radii.
Alternative specification to radial_grid() for users who think in terms of target outer radius rather than ring spacing. The rings will be evenly distributed between the inner and outer radii.
Parameters
-
states - List of states to arrange
-
cx - X coordinate of grid center
-
cy - Y coordinate of grid center
-
inner_radius - Radius of innermost ring
-
outer_radius - Radius of outermost ring
-
rings - Number of concentric rings
-
segments - Number of angular segments per ring
-
rotation - Base rotation in degrees
-
alignment - How to align each element
-
element_rotation_offset - Additional rotation offset
-
element_rotation_offset_fn - Function(ring, seg, angle) -> rotation offset
Returns
New list of states with radial grid positions Raises: ValueError: If outer_radius <= inner_radius ValueError: If rings < 1
Examples
# Grid from radius 50 to 200 with 4 rings
radial_grid_between_radii(states, inner_radius=50, outer_radius=200, rings=4, segments=8)
# Equivalent to radial_grid():
# radial_grid_between_radii(states, inner_radius=50, outer_radius=200, rings=3)
# == radial_grid(states, inner_radius=50, ring_spacing=75, rings=3)