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: 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