Bevor Sie diese in Aufgabe 2 tatsächlich in Java umsetzen, beschäftigen Sie sich in dieser Aufgabe mit den mathematischen Grundlagen der einzelnen Transformationen. Berechnen Sie dazu die einzelnen Transformationsmatrizen und erklären Sie Ihrem Tutor den Ablauf und die Bedeutung der Schritte der Viewing-Pipeline.
Gehen Sie davon aus, dass der Augenpunkt (wie in der Aufgabe 2 als Ausgangspunkt gewählt) bei den Koordinaten liegt und der View-Reference-Point (also der Punkt, auf den geguckt wird) bei . Der View-Up-Vektor sei , das Blickfeld soll einen Winkel von umfassen. Gehen Sie außerdem davon aus, dass Ihr Ausgabe-Device eine Auflösung von 640x480 Pixeln, also ein Seitenverhältnis von 4:3 hat.
Stellen Sie zu jedem Schritt der Viewing-Pipeline die entsprechenden Matrizen für die obigen Werte auf und ergänzen Sie jeden Schritt um eine kurze schriftliche Erklärung. Sie können davon ausgehen, dass die Koordinaten der Objekte bereits in Welt-Koordinaten (WC-Koordinatensystem) vorliegen. Berechnen Sie schließlich Ihre Gesamtmatrix.
Die Transformation vom WC ins DC setzt sich aus drei Schritten zusammen:
Für den Übergang vom WC ins VRC ist ein Basiswechsel nötig. Daher
müssen zunächst die Vektoren
und bestimmt
werden, die die Basis des VRC bilden und der entsprechende Ursprung muss
ermittelt werden.
ergibt sich aus der Blickrichtung und ist die Differenz zwischen
VRP und PRP:
ist der in die Bildebene projizierte VUV. Um die Projektion in die Bildebene zu bewerkstelligen, wird zunächst das Kreuzprodukt von mit gewählt, was einen Vektor senkrecht zu beiden ergibt. Das Ergebnis gekreuzt mit dem ergibt also einen Vektor, der senkrecht auf steht und für den oben die gleiche Richtung wie für den darstellt. Es handelt sich also um die gesuchte Projektion.
Der Vektor ist der zu und senkrechte und wird
mittels des Kreuzproduktes der beiden Vektoren ermittelt.
Nun kann die Matrix mit den normierten Vektoren aufgestellt werden, die einen Basiswechsel vom VRC in
den WC durchführt. Die Vektoren müssen normiert werden, damit die Längen aus dem (normierten) Weltkoordinatensystem erhalten bleiben:
Um vom WC ins VRC zu gelangen muss die Matrix invertiert werden, also
Anschließend wird an der -Ebene gespiegelt.
Jetzt blickt das Auge in Richtung der bzw. der neuen z-Achse. Nun kann die Matrix VRC'_NPC' angewendet werden. Dazu müssen jedoch zunächst die Ausmaße der View-Plane, also des Sichtfensters berechnet werden. Der Abstand zur Viewplane ergibt sich aus dem Abstand des zum .
ergibt sich aus dem angegebenen Field of View, also aus der Größe des Blickfelds. Es gilt:
Da das Blickfeld symmetrisch sein und das Seitenverhältnis des Ausgabegerätes beachten werden soll, gilt auch:
und und .
Diese Werte können in die unten angegebene Matrix eingesetzt werden. und geben die Entfernung zur Near- bzw. Farplane an. Hier können Beispielsweise die Werte für die und für angenommen werden.
Da der nun erzeugte Einheitswürfel seine Vorderseite noch in der -Ebene hat und so Elemente die weiter vorne liegen kleinere -Werte haben, muss der Würfel noch einmal verschoben und gespiegelt werden:
Unter obigen Annahmen ergibt sich die Gesamtmatrix:
Die Gesamttransformationsmatrix für die Viewing-Pipeline lautet für die obigen Bedingungen: