| | |
| | | #! /usr/bin/env python |
| | | |
| | | import sys |
| | | from typing import Final |
| | | from math import pi, cos |
| | | import turtle |
| | | |
| | | amplitude: tuple[float, float] = (1, 1) |
| | | amplitude: Final[tuple[float, float]] = (1, 1) |
| | | # frequent |
| | | omega: tuple[float, float] = (-1, -2) |
| | | omega: Final[tuple[float, float]] = (3, 11) |
| | | # phase |
| | | phi: tuple[float, float] = (pi/2, 3*pi/4) |
| | | phi: Final[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)] |
| | | 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]) |
| | |
| | | |
| | | # Plot with turtle |
| | | (canvaswidth, canvasheight) = turtle.screensize() |
| | | point_size = 3 |
| | | 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.pendown() |
| | | 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.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() |