Python :: Aufgabe #232 :: Lösung #3
3 Lösungen

#232
Muster im Polarkoordinatensystem
Anfänger - Python
von Exception
- 10.11.2019 um 09:24 Uhr
Hallo zusammen,
heute sollt ihr ein kleines Zeichenprogramm schreiben.
1. Polarkoordinatensystem
Zuerst geht es darum ein Polarkoordinatensystem (auch als Kreiskoordinatensystem bekannt) zu zeichnen.
Der Ursprung des Koordinatensystems befindet sich im Zentrum der Zeichenfläche.
- Die X-Achse verläuft horizontal durch den Ursprung, die Y-Achse vertikal.
- Jede Längeneinheit soll von einem Kreis geschnitten werden, also jeweils bei X(n) und Y(n). Der Kreismittelpunkt befindet sich dementsprechend im Ursprung des Koordinatensystems.
- Des Weiteren soll alle 22,5° eine Linie vom Ursprung aus gezogen werden (dies sind insg. 16 Linien, damit sind auch die X- als auch die Y-Achse abgedeckt!).
Wenn ihr das geschafft habt, sollte das ca. so aussehen Beispiel Polarkoordinatensystem (Hier allerdings mit 30°-Schritten anstatt mit 22,5°)
Auf die Gradangaben kann verzichtet werden.
Zudem solltet ihr dezente Farben für das Koordinatensystem wählen.
2. Muster
Für das Muster sollt ihr nun Punkte in diesem Koordinatensystem einzeichnen.
Diese ergeben das Muster je nach Punktanzahl und Zoom.
Ein jeder dieser Punkte hat folgende Eigenschaften:
- Die X-Koordinate ist die Entfernung vom Koordinatenursprung (= der Radius)
- Die Y-Koordinate ist das Bogenmaß.
Jeder Punkt soll die gleiche Zahl für X und Y eingesetzt bekommen.
D.h. Punkt p: pX(n) und pY(n)
Hier ergibt sich jedoch eine Schwierigkeit für Y.
Der Wert der Y-Koordinate n ist das Bogenmaß und muss dementsprechend noch in eine Gradzahl konvertiert werden.
Ein Beispiel:
X = 3
Y = 3 (bzw. ~172°)
Ihr sollt das nun Punkte für 0 < n <= 100 auf diesem Koordinatensystem einzeichnen.
Im Anhang befinden sich noch drei Abbildungen, die das ganze Vorhaben verdeutlichen sollen.
Es heißt ja immer ein Bild sagt mehr als tausend Worte...
Viel Spaß
euer Exception :)
heute sollt ihr ein kleines Zeichenprogramm schreiben.
1. Polarkoordinatensystem
Zuerst geht es darum ein Polarkoordinatensystem (auch als Kreiskoordinatensystem bekannt) zu zeichnen.
Der Ursprung des Koordinatensystems befindet sich im Zentrum der Zeichenfläche.
- Die X-Achse verläuft horizontal durch den Ursprung, die Y-Achse vertikal.
- Jede Längeneinheit soll von einem Kreis geschnitten werden, also jeweils bei X(n) und Y(n). Der Kreismittelpunkt befindet sich dementsprechend im Ursprung des Koordinatensystems.
- Des Weiteren soll alle 22,5° eine Linie vom Ursprung aus gezogen werden (dies sind insg. 16 Linien, damit sind auch die X- als auch die Y-Achse abgedeckt!).
Wenn ihr das geschafft habt, sollte das ca. so aussehen Beispiel Polarkoordinatensystem (Hier allerdings mit 30°-Schritten anstatt mit 22,5°)
Auf die Gradangaben kann verzichtet werden.
Zudem solltet ihr dezente Farben für das Koordinatensystem wählen.
2. Muster
Für das Muster sollt ihr nun Punkte in diesem Koordinatensystem einzeichnen.
Diese ergeben das Muster je nach Punktanzahl und Zoom.
Ein jeder dieser Punkte hat folgende Eigenschaften:
- Die X-Koordinate ist die Entfernung vom Koordinatenursprung (= der Radius)
- Die Y-Koordinate ist das Bogenmaß.
Jeder Punkt soll die gleiche Zahl für X und Y eingesetzt bekommen.
D.h. Punkt p: pX(n) und pY(n)
Hier ergibt sich jedoch eine Schwierigkeit für Y.
Der Wert der Y-Koordinate n ist das Bogenmaß und muss dementsprechend noch in eine Gradzahl konvertiert werden.
Ein Beispiel:
X = 3
Y = 3 (bzw. ~172°)
Ihr sollt das nun Punkte für 0 < n <= 100 auf diesem Koordinatensystem einzeichnen.
Im Anhang befinden sich noch drei Abbildungen, die das ganze Vorhaben verdeutlichen sollen.
Es heißt ja immer ein Bild sagt mehr als tausend Worte...
Viel Spaß
euer Exception :)
#3

von Klaus (1960 Punkte)
- 25.02.2020 um 12:46 Uhr
Zur Darstellung des Koordinatensystems habe ich PySimpleGUI genutzt. Basierend auf tkinter ist PySimpleGUI aus meiner Sicht eine einfache und pragmatische Lösung, um schnell eine grafische Benutzeroberfläche mit wenig Code zu kreieren. Besonderheit bei PySimpleGUI ist unter anderem, dass man beim Graph-Element den (0/0)-Ursprung frei definieren kann.
Installation über
pip install pysimplegui
oder
conda install pysimplegui.
Alles weitere unter https://pysimplegui.readthedocs.io/en/latest/
Python-Code
Installation über
pip install pysimplegui
oder
conda install pysimplegui.
Alles weitere unter https://pysimplegui.readthedocs.io/en/latest/

import PySimpleGUI as sg from math import pi, sin, cos, radians ZOOM_FACTOR = 4 COLOR_COORDINATES = '#e8e8e8' def return_coordinates(angle, length): angle_rad = pi/2 - radians(angle) x_value = (cos(angle_rad)*length) y_value = (sin(angle_rad)*length) return x_value, y_value def return_angle_degree(length): return (length * 180 / pi) % 360 layout = [[sg.Graph(canvas_size=(220 * ZOOM_FACTOR, 220 * ZOOM_FACTOR), graph_bottom_left=(-110 * ZOOM_FACTOR, -110 * ZOOM_FACTOR), graph_top_right=(110 * ZOOM_FACTOR, 110 * ZOOM_FACTOR), background_color='white', key='_graph_')]] window = sg.Window('Polarkoordinatensystem', layout, finalize=True, background_color='white') graph = window['_graph_'] for index in range (0, 101, 10): graph.draw_circle((0,0), index * ZOOM_FACTOR, line_color = COLOR_COORDINATES, line_width=1) graph.draw_point((0,0), size=2 * ZOOM_FACTOR, color= COLOR_COORDINATES) for index in range (0, 16): x, y = return_coordinates(index * 22.5, 100) graph.draw_line((0,0), (x * ZOOM_FACTOR, y * ZOOM_FACTOR), color=COLOR_COORDINATES) for index in range(0, 101): x, y = return_coordinates(return_angle_degree(index), index) graph.draw_point((x * ZOOM_FACTOR, y * ZOOM_FACTOR), color = 'red', size = 1 * ZOOM_FACTOR) while True: event, values = window.read() if event is None: break window.close()
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1