If you're seeing this message, it means we're having trouble loading external resources on our website.

Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. kastatic.org und *. kasandbox.org nicht blockiert sind.

Hauptinhalt

Mehrere Transformationen

Nun da du die Grundlagen von Verschiebung, Drehung und Skalierung kennst, können wir alle drei gemeinsam verwenden, und dabei auf die komplexeren Punkte eingehen, die wir am Anfang nur kurz angesprochen haben.

Die Reihenfolge zählt

Die Reihenfolge ist sehr wichtig, wenn du mehrere Transformationen ausführst. Eine Drehung gefolgt von einer Verschiebung gefolgt von einer Skalierung bringt nicht die gleichen Ergebnisse wie eine Verschiebung gefolgt von einer Drehung gefolgt von einer Skalierung. Das folgende Beispielprogramm verdeutlicht dies:
Welche Reihenfolge du verwendest, hängt vom gewünschten Effekt ab. Vergiss einfach nicht, dass du das mathematische Papier bewegst, und nicht das Objekt selbst, dann wirst du die richtige Reihenfolge für dich finden.

Die Transformationsmatrix

Jedes Mal, wenn du eine Drehung, Verschiebung oder Skalierung ausführst, wird die notwendige Information in einer Zahlentabelle gesammelt. Diese Tabelle, oder Matrix, hat nur wenige Zeilen und Spalten, enthält aber dank der Wunder der Mathematik trotzdem alle Informationen, die für eine Reihe von Transformationen nötig sind. Daher kommt übrigens das Wort "Matrix" in den Befehlen pushMatrix() und popMatrix().
Aber woher kommen die Wörter "push" und "pop" in den Befehlen? Sie kommen von einem Informatikkonzept namens "stack", oder Stapelspeicher, der wie ein gefederter Tablettspender funktioniert. Wenn jemand ein Tablett auf den Stapel zurücklegt, drückt das Gewicht die gefederte Plattform nach unten ("push"). Wenn jemand ein Tablett braucht, nimmt er es sich von oben vom Stapel, wodurch die anderen Tabletts ein Stück nach oben rücken ("pop").
Ähnlich legt pushMatrix() den aktuellen Status des Koordinatensystems in einem Speicherbereich ganz nach oben, und popMatrix() holt diesen Status wieder heraus. Das vorherige Beispiel hat mithilfe von pushMatrix() und popMatrix() jedes Mal, bevor etwas gezeichnet wurde, sichergestellt, dass das Koordinatensystem "sauber" ist. In allen anderen Beispielen war es nicht wirklich nötig, diese Funktionen aufzurufen, weil es keine anschließenden Transformationen gab, aber es kann auch nicht schaden, den Status des Rasters zu speichern und wiederherzustellen. Als bewährte Methode solltest du diese Funktionen immer verwenden, wenn du Transformationen durchführst.
Es gibt auch eine Funktion resetMatrix(), welche die Matrix auf ihren Originalzustand zurücksetzt (die "Einheitsmatrix"), aber die Funktionen "push" und "pop" sind fast immer die bessere Herangehensweise.
Möchtest du lernen oder wiederholen, wie Matrizen in Algebra funktionieren? Dann kannst du Matrizen auf Khan Academy durchgehen, besonders den Abschnitt Geometrische Transformationen mit Matrizen.

Dieser Artikel ist eine Bearbeitung von 2D Transformations von J. David Eisenberg und wird unter einer Creative Commons Attribution-NonCommercial-ShareAlike-Lizenz verwendet.

Willst du an der Diskussion teilnehmen?

Noch keine Beiträge.
Verstehst du Englisch? Klick hier, um weitere Diskussionen auf der englischen Khan Academy Seite zu sehen.