VertexStar
Star shape as a VertexLoop
Generates a star with alternating outer and inner radius points. The num_vertices parameter controls morphing quality - shapes with the same num_vertices can morph smoothly between each other.
Constructor
VertexStar(
center: float = Point2D(x=0, y=0),
outer_radius: float = 50.0,
inner_radius: float = 20.0,
num_points: int = 5,
num_vertices: int = 128
)
Create a star as a vertex loop
Parameters
-
cx - Center x coordinate
-
cy - Center y coordinate
-
outer_radius - Distance from center to outer points (tips)
-
inner_radius - Distance from center to inner points (valleys)
-
num_points - Number of star points (minimum 3)
-
num_vertices - Total vertices distributed along perimeter (important for morphing!)
Methods
area
area()
Calculate the signed area of the loop
bounds
bounds()
Calculate bounding box (min_x, min_y, max_x, max_y)
centroid
centroid()
Calculate the centroid (geometric center) of the vertices
is_clockwise
is_clockwise()
Check if the loop has clockwise winding (negative area)
reverse
reverse()
Return a new VertexLoop with reversed vertex order
rotate
rotate(
angle_degrees: float,
center: Optional[Point2D] = None
) -> VertexLoop
Rotate vertices in-place by angle_degrees around center
Parameters
-
angle_degrees - Rotation angle in degrees (positive = counter-clockwise)
-
center - Center of rotation (default is origin) Returns self for method chaining.
scale
scale(sx: float, sy: Optional[float] = None) -> VertexLoop
Scale vertices in-place by (sx, sy)
translate
translate(dx: float, dy: float) -> VertexLoop
Translate vertices in-place by (dx, dy)
Properties
closed- Whether this loop is closed
vertices- Get vertices as list of tuples