Hong-Phuc Bui
2024-06-17 7b2454aeeff18fce574e59ad951f90ee54e63f4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /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()