<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;"># pip install ipycanvas

import numpy as np
from ipycanvas import Canvas, hold_canvas

n = 2000
canvas_size = 600

t1 = np.arange(1, n + 1)
t0 = np.arange(0, 102 * n, 102)
t0 = np.remainder(t0, n)

XY_start = (
    (
        np.vstack((np.cos((t1 - 1) * 2 * np.pi / n), np.sin((t1 - 1) * 2 * np.pi / n)))
        + 1
    )
    * canvas_size
    / 2.0
)

XY_end = (
    (
        np.vstack((np.cos((t0 - 1) * 2 * np.pi / n), np.sin((t0 - 1) * 2 * np.pi / n)))
        + 1
    )
    * canvas_size
    / 2.0
)

canvas = Canvas(width=canvas_size, height=canvas_size)
canvas.fill_style = "white"
canvas.fill_rect(0, 0, canvas_size, canvas_size)

with hold_canvas(canvas):
    canvas.line_width = 0.5
    for i in np.arange(n):
        canvas.stroke_line(XY_start[0, i], XY_start[1, i], XY_end[1, i], XY_end[0, i])
    canvas.stroke_circle(canvas_size / 2.0, canvas_size / 2.0, canvas_size / 2.0)

canvas
</pre></body></html>