VertexRectangle
Rectangle as a VertexLoop
Generates a rectangle with vertices distributed along its perimeter. Supports rounded corners via corner_radius parameter. The num_vertices parameter is crucial for morphing - shapes with the same num_vertices can morph smoothly between each other.
Constructor
VertexRectangle(
center: Point2D = Point2D(x=0, y=0),
width: float = 100.0,
height: float = 100.0,
num_vertices: int = 128,
corner_radius: float = 0.0
)
Create a rectangle as a vertex loop
Parameters
-
center - Center point of rectangle
-
width - Rectangle width
-
height - Rectangle height
-
num_vertices - Number of vertices distributed along perimeter (important for morphing!)
-
corner_radius - Radius for rounded corners (0 = sharp corners)
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: Point2D | None = None
) -> VertexLoop
Rotate all vertices by angle_degrees around center (default: origin). Returns self for chaining.
scale
scale(sx: float, sy: float | None = None) -> VertexLoop
Scale all vertices by (sx, sy). If sy is None, uses sx for both axes. Returns self for chaining.
translate
translate(dx: float, dy: float) -> VertexLoop
Translate all vertices by (dx, dy). Returns self for chaining.
Properties
closed- Whether this loop is closed
vertices- Get vertices as list of tuples