Aufgabe 2.3 (40 Punkte)
Sei das Dreieck
durch die Punkte
,
und
und die
folgenden Transformationen in
gegeben.
- Rotation
um
um die
-Achse,
- Rotation
um
um die
-Achse,
- Skalierung
um den Faktor
und
- Translation
um den Vektor
.
- Stellen Sie die einzelnen Transformationsmatrizen exakt auf und berechnen
Sie das Produkt
ebenfalls exakt.
- Berechnen Sie das Dreieck
, welches durch das Anwenden der
Gesamttransformation
auf das Dreieck
entsteht.
- Berechnen Sie die inverse Transformation
zu
exakt.
- Erweitern Sie das Projekt aus Aufgabe 2 und schreiben Sie eine Javaklasse
Transformation, in deren main-Methode das Dreieck
mithilfe der Klassen Vector4f und Matrix4f
aus dem Package org.lwjgl.util.vector berechnet wird.
Musterlösung vom 09.05.2012:
- Für die Rotationen ergeben sich die Matrizen
und
Für die Skalierung S und die Translation T ergeben sich die Matrizen
und
Die Multiplikation der beiden Rotationen ergibt
Die Multiplikation der Translation mit der Skalierung ergibt
Und somit ist die gesamte Transformation
- Um das Dreieck
in das transformierte Dreieck zu überführen,
müssen die einzelnen Punkte mit der Matrix M multipliziert werden.
Um die Multiplikation ausführen zu können, müssen die Vektoren natürlich
um die homogene Koordinate
erweitert werden.
Das Dreieck
setzt sich dann aus den Punkten
und
zusammen.
- Um die Transformation
zu invertieren, werden ihre Bestandteile
jeweils invertiert und dann in umgekehrter Reihenfolge zusammengefügt.
Und damit erhalten wir schließlich die Gesamttransformation
/home/cg/2012/Uebung/Blatt2/Aufg/Transformation.java