VertexLine

Line (open or closed) as a VertexLoop

Generates a line with vertices interpolated between start and end points. The num_vertices parameter is crucial for morphing - shapes with the same num_vertices can morph smoothly between each other.

Constructor

VertexLine(
    start: Point2D,
    end: Point2D,
    num_vertices: int = 128,
    closed: bool = False
)

Create a line as a vertex loop

Parameters

start
Starting point (x, y)
end
Ending point (x, y)
num_vertices
Number of vertices to interpolate (important for morphing!)
closed
Whether to close the line (connects end back to start)

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