Wie dreht ein Spiel ein Bild?
Eine lineare Abbildung verschiebt jeden Punkt nach derselben Regel, und eine Matrix ist die Rechenvorschrift dazu. So drehen, vergrößern und spiegeln Bildprogramme und Spiele ihre Figuren.
Ein Dreieck hat drei Ecken. Multiplizieren Sie jede Ecke mit einer Matrix, hat das ganze Dreieck sich gedreht, gestreckt oder gespiegelt.
Am Ende dieser Lektion
Notiz
Ich kann eine Matrix als Drehung, Skalierung oder Spiegelung lesen und auf Punkte anwenden.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Abbildung | eine Regel, die jeden Punkt auf einen neuen Punkt abbildet |
| Skalierung | eine Streckung oder Stauchung um einen Faktor |
| Spiegelung | ein Umklappen an einer Achse |
| Drehung | ein Drehen um den Nullpunkt um einen Winkel |
| Hintereinanderausführung | erst eine Abbildung, dann die nächste |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Matrix bewegt jeden Punkt
Ein Punkt auf dem Bildschirm ist ein Vektor [x, y]. Multiplizieren Sie eine 2-mal-2-Matrix mit ihm, erhalten Sie einen neuen Punkt. Das ist eine Abbildung.
Die Spalten der Matrix zeigen, wohin die Punkte [1, 0] und [0, 1] gehen. Daraus folgt, wohin jeder andere Punkt geht.
Beispiel: vier Matrizen und ihre Wirkung
| Matrix | Wirkung | Punkt [2, 1] wird |
|---|---|---|
| [[2, 0], [0, 2]] | Skalierung um den Faktor 2 | [4, 2] |
| [[1, 0], [0, -1]] | Spiegelung an der x-Achse | [2, -1] |
| [[0, -1], [1, 0]] | Drehung um 90 Grad | [-1, 2] |
| [[-1, 0], [0, -1]] | Drehung um 180 Grad | [-2, -1] |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Dreieck drehen
# Drehung um 90 Grad gegen den Uhrzeigersinn
dreh = [[0, -1], [1, 0]]
ecken = [[1, 0], [2, 0], [1, 1]]
neue_ecken = []
for punkt in ecken:
x = dreh[0][0] * punkt[0] + dreh[0][1] * punkt[1]
y = dreh[1][0] * punkt[0] + dreh[1][1] * punkt[1]
neue_ecken.append([x, y])
print(neue_ecken)
# Ändern Sie dreh in [[2, 0], [0, 2]]. Die Ecken werden doppelt so weit weg.
Einen Punkt um 90 Grad drehen
docker exec jupyter python3 -c "import numpy as np; d = np.array([[0, -1], [1, 0]]); print((d @ np.array([2, 1])).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Drehung steht in Sinus und Kosinus
Eine Drehung um den Winkel w hat die Matrix mit Kosinus w und minus Sinus w oben, Sinus w und Kosinus w unten. Die Länge jedes Punktes bleibt gleich.
Bei 90 Grad ist der Kosinus 0 und der Sinus 1. Daher die einfachen Zahlen oben. Für andere Winkel rechnet der Computer mit Dezimalzahlen.
Eine Drehung um 30 Grad
docker exec jupyter python3 -c "import numpy as np; w = np.radians(30); d = np.array([[np.cos(w), -np.sin(w)], [np.sin(w), np.cos(w)]]); print(np.round(d @ np.array([1, 0]), 3).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Zwei Abbildungen ergeben ein Matrixprodukt
Wenden Sie erst F an und dann R, ist das eine einzige Abbildung mit der Matrix R mal F. Die zuerst angewandte Matrix steht rechts, weil sie dem Punkt am nächsten ist.
Zweimal um 90 Grad drehen ergibt eine Drehung um 180 Grad. Die Matrix dafür ist R mal R.
Beispiel: spiegeln und drehen, beide Reihenfolgen
| Reihenfolge | Matrix | Punkt [1, 0] wird |
|---|---|---|
| Erst spiegeln, dann drehen | [[0, 1], [1, 0]] | [0, 1] |
| Erst drehen, dann spiegeln | [[0, -1], [-1, 0]] | [0, -1] |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Zweimal drehen
docker exec jupyter python3 -c "import numpy as np; d = np.array([[0, -1], [1, 0]]); print((d @ d).tolist())"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele denken, bei zwei Abbildungen sei die Reihenfolge gleichgültig. Das stimmt nicht. Erst spiegeln und dann drehen bringt den Punkt [1, 0] nach [0, 1], die umgekehrte Reihenfolge nach [0, -1]. Gleichgültig ist sie nur bei Drehungen allein oder Skalierungen allein.