Navigation überspringen

Übungen zu Transformation

Translation, Rotation, Skalierung

Fragen

  1. Wenn es etwas mithilfe des Befehls translate() verschiebe - was verschiebe ich dann?
    • Die nächste gezeichnete Form
    • Alle gezeichneten Formen, die nach dem Befehl kommen
    • Alle Formen innerhalb dieses draw-Durchlaufs
    • Das Koordinatensystem innerhalb des gesamten draw-Durchlaufs
    • Das Koordinatensystem ab der Stelle im Code, wo der Befehl aufgerufen wurde
  2. Wenn ich mithilfe des Befehls rotate() etwas drehe - was wird dann gedreht?
    • Die nächsten Formen und zwar um ihren eigenen Mittelpunkt
    • Das Koordinatensystem und zwar um seinen Mittelpunkt
  3. Wie wird der Winkel im Befehl rotate() angegeben?
  4. Wie lange sind die Befehle
  5. Wie lange sind die Befehle translate(), rotate() und scale() gültig?
  6. Wenn ich den Befehl scale(10) ausführe, um welchen Faktor wird dann skaliert?
    • Formen sind danach 10mal so groß
    • Formen sind danach 10% ihrer Originalgröße groß
    • Formen sind danach 10 Pixel größer

Aufgaben

1. Transformationen kombinieren
Versuche, die folgenden Formen herzustellen, indem du die drei Transformationen translate, rotate und scale verwendest.

Zeichne die Formen am besten immer um den Nullpunkt herum und schalte entsprechende Transformation davor. Denke daran, dass du bei jeder Transformation das gesamte Koordinatensystem bewegst.

Versuche, jede Form zunächst "theoretisch" zu lösen (im Kopf oder auf Papier). Wenn du lediglich Code-Zeilen hin- und herschiebst oder kopierst, baust du evtl. kein wirkliches Verständnis auf...

Muster #1 Muster #2 Muster #3 Muster #4 Muster #5 Muster #6 Muster #6

2. Rotierendes Quadrat
Programmiere ein Quadrat, das sich im Uhrzeigersinn um seine Mitte dreht. Verwende rotate und translate (in welcher Reihenfolge?).

3. Rotation mit zwei Formen

Lass einen Kreis um ein Rechteck in der Mitte rotieren. Programmiere zwei Varianten. In der ersten bewegt sich das Rechteck nicht. In der zweiten dreht es sich mit dem Kreis mit.

4. Pulsierender Kreis
Programmiere einen Kreis mit Durchmesser 50, der pulsiert. Er vergrößert sich auf das Doppelte und verkleinert sich dann auf die Hälfte usw. Verwende scale und translate (in welcher Reihenfolge?).

Lass den Skalierungsfaktor nie negativ werden.

5. Schieben und Drehen
Lasse ein Quadrat von links nach rechts fliegen, das sich währenddessen um seinen Mittelpunkt dreht.

Transformationen speichern

Fragen

  1. Wie werden Transformationen gespeichert? (mehrere Antworten möglich)
    1. in einer Datei
    2. in Processing
    3. in einer Matrix/mehreren Matrizen
    4. als Zahl
  2. Wieviele Transformationen kann ich maximal speichern?
  3. Wie kann ich mir den Zustand der akutellen Transformation - also den aktuellen Zustand des Koordinatensystems - anzeigen lassen?
  4. Wie kann ich die Daten einer Transformation speichern bzw. laden?
  5. Ein Stack ist ein Speichermodell, welches nach dem Prinzip "Last in - first out" funktioniert. Erkläre in deinen eigenen Worten, was das bedeutet. Finde du 1-2 Beispiele/Metaphern aus dem Alltag.

Aufgaben

1. Zwei rotierende Quadrate
Bring zwei Quadrate an den Positionen (25,50) und (75,50) zum rotieren. Verwende dazu translate und rotate sowie push/popMatrix.

2. Rotierender Knochen
Lass einen Balken (Breite 60, Höhe 5) rotieren. An den beiden Enden des Balkens rotiert jeweils ein Quadrat (Höhe/Breite 20). Arbeite mit pushMatrix und popMatrix:

3. Rotationen und gerade Bewegung
Hier kombinieren wir eine Drehung mit einer "geraden" Bewegung mit Abprallen und dann nochmal einer Drehung.

  1. Zeichne ein großes Quadrat (Höhe/Breite 40) in der Mitte des Bildschirms, das rotiert.
  2. Zeichne ein weiteres Quadrat (Höhe/Breite 10), dass sich entlang einer der Kanten des weißen Quadrats hin und her bewegt und ebenfalls rotiert.
  3. Zeichne ein weiteres Quadrat (Höhe/Breite 10), dass entlang einer anderen Kante das gleiche Verhalten aufzeigt, wie das andere kleine Quadrat, nur mit halber Geschwindigkeit.

Gehe am besten in Teilschritten vor. Beim Programmieren ist es oft sinnvoll, Teile der Bewegung kurzzeitig auszuschalten (durch Auskommentieren), z.B. um die Elemente korrekt zu positionieren. Verwende pushMatrix und popMatrix nur so oft wie nötig.

Made with eXeLearning (New Window)