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
| #! /usr/bin/env python
|
| from typing import Final
| from math import pi, cos
| import turtle
|
| amplitude: tuple[float, float] = (1, 1)
| # frequent
| omega: tuple[float, float] = (-1, -2)
| # phase
| phi: tuple[float, float] = (pi/2, 3*pi/4)
|
| # Diskretisieren
| N: Final[int] = 360
| step = (2*pi) / N
| T = [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 = 3
| # 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.pendown()
| for p in points:
| x = x_factor * p[0]
| y = y_factor * p[1]
| turtle.teleport(x, y)
| turtle.dot(point_size)
|
| turtle.done()
|
|