#! /usr/bin/env python
|
import sys
|
from typing import Final
|
from math import pi, cos
|
import turtle
|
|
amplitude: Final[tuple[float, float]] = (1, 1)
|
# frequent
|
omega: Final[tuple[float, float]] = (3, 11)
|
# phase
|
phi: Final[tuple[float, float]] = (pi/2, 3*pi/4)
|
|
# Diskretisieren
|
N: Final[int] = 360
|
step: Final = (2*pi) / N
|
T: Final = [k * step for k in range(N)]
|
points = [(
|
amplitude[0] * cos(omega[0]*t + phi[0]),
|
amplitude[1] * cos(omega[1]*t + phi[1])
|
) for t in T
|
]
|
|
# Plot with turtle
|
(canvaswidth, canvasheight) = turtle.screensize()
|
point_size = 1.5
|
turtle.setup(width=canvaswidth + 5*point_size, height=canvaswidth + 5*point_size)
|
|
# scale up
|
x_factor = (canvaswidth / 2) / amplitude[0]
|
y_factor = (canvasheight / 2) / amplitude[1]
|
print(x_factor, y_factor)
|
# as fast as possible
|
turtle.speed(0)
|
turtle.penup()
|
turtle.pensize(point_size)
|
for p in points:
|
x = x_factor * p[0]
|
y = y_factor * p[1]
|
#turtle.teleport(x, y)
|
#turtle.dot(point_size)
|
turtle.goto(x, y)
|
turtle.pendown()
|
p0 = points[0]
|
turtle.goto(x_factor * p0[0], y_factor * p0[1])
|
|
write_to_file = False
|
if write_to_file:
|
output_dir = "../../2024/python-output"
|
image_filename = f"{output_dir}/{sys.argv[0].replace('.py','.eps')}"
|
print(f"save file to {image_filename}")
|
canvas_screen = turtle.getscreen().getcanvas()
|
canvas_screen.postscript(file=image_filename)
|
|
turtle.done()
|