Phase 3 | Animationen durch Koordinatentransformationen
🪧 Worum geht es in dieser Phase?
Jetzt gehen wir den trickreicheren Weg bei Animationen: Und zwar transformieren wir das Koordinatensystem! Es gibt drei Transformationen, mit denen wir uns beschäftigen:
A. Skalierung (Vergrößerung/Verkleinerung)
B. Translation (Verschiebung)
C. Rotation (Drehung)
🤸 Aufwärmspiel: Amöbe
Evolution von der Amöbe über den Frosch und Affen hin zu Zeus!
Arbeit in Gruppen
Ihr werdet in drei Gruppen arbeiten und euch anschließend eure Ergebnisse vorstellen. Hier findet ihr ein Beispielprogramm, um euch das Koordinatensystem anzeigen zu lassen.
Zum Zeichnen des Koordiantensystems verwende den Befehl drawGrid(0)
.
🌱 Gruppe A: Skalierung (Vergrößerung/Verkleinerung)
- 👥👥 Verwende den Befehl `scale(2)'' mit verschiedenen Parametern.
- 👥👥 Schaffst du es, ein Objekt stetig größer (oder kleiner oder beides) werden zu lassen?
- 👥👥 Teste und vergleiche die Befehle
scale(2, 1)
mitscale(1, 2)
.
„Da die Skalierung vom Ursprung ausgeht, verschiebt sich das Objekt auch, wenn es nicht direkt auf dem Ursprung liegt.“ (Kipp)
Sobald draw()
beendet ist, wird das Koordinatensystem wieder an seinen „normalen“ Platz gestellt mit (0,0) in der linken, oberen Ecke. D.h. das Bild sitzt also wieder bündig in seinem Rahmen, wenn draw()
neu startet.
:::
🌱 Gruppe B: Translation (Verschiebung)
- 👥👥 Verwende den Befehl
translate(50, 50)
mit verschiedenen Parametern, in einem Beispielprogramm deiner Wahl. - 👥👥 Verwende den Befehl
translate(mouseX, mouseY)
, um ein Quadrat an die aktuelle Position des Mauszeigers zu zeichnen.
🌱 Gruppe C: Rotation (Drehung)
- 👥👥 Verwende den Befehl
rotate(radians(45))
mit verschiedenen Parametern. - 👥👥 Schaffst du es, ein Objekt im Kreis drehen zu lassen. Tipp: Verwendet eine Variable, um den aktuellen Drehwinkel zu speichern.
- 👥👥 In der Besprechung werden wir über Grad- und Bogenmaß sprechen. Vielleicht findest du schon heraus, was es damit auf sich hat. Vergleiche etwa die Befehle
rotate(radians(90))
undrotate(PI/2)
.
Übungsaufgaben
Für die folgenden Übungsaufgaben könnt ihr dieses GeoGebra-Applet zur Hilfe nehmen:
-
👤 Fingerübung 1: https://michaelkipp.de/processing/transformationen.html#sec_10_1_1
-
👤 Fingerübungen 2: https://michaelkipp.de/processing/transformationen.html#sec_10_2_7
-
👤 Fingerübung 3: Knifflige Übungsaufgaben: https://michaelkipp.de/processing/transformationen.html#sec_10_2_8
In dieser Aufgabe geht es um das unten abgebildete Rotorblatt-Programm: https://editor.p5js.org/f.fiebig/sketches/Df1DSV3Mt
- 👤 Erweitere das Rotorblattprogramm so, dass am leeren Ende des großen Rotorblattes ein Kreis entsteht.
- 👤 Erweitere das Rotorblattprogramm um die fehlenden Rotorblätter.
💁 Hilfe: Zeichne nacheinander kleine Kreise mit den Koordianten an die Rotorblattenden, um zu überprüfen, ob du das Koordinatensystem richtig verschoben hast.
Extras: Der Matrix-Stapel
- Matrix speichern/wiederherstellen mit
pushMatrix()
undpopMatrix()
; mit Übungsaufgaben dazu, siehe hier.