Aufgabe 5.3 (30 Punkte)
Thema: Modeling Transformation. Erweitern Sie das Projekt
aus Aufgabe 1.
- Ordnen Sie vier der Quadrate so an, dass sie einen Würfel ergeben.
Dazu sind die vier Model Transformation Matrizen bereits als Klassenvariable
cubeModel deklariert und initialisiert und die Methode render()
sorgt bereits dafür, dass vier Kopien mit diesen Model Matrizen gezeichnet
werden. Implementieren Sie die Methode initCube(), die diese
vier Matrizen so setzt, dass ein Würfel der Kantenlänge
entsteht. Verschieben Sie den Würfel außerdem um
Einheiten in x Richtung. Hinweis: Da wir nur das Drahtgitter
des Würfels zeichnen, genügen vier Kopien des Vierecks.
- Ordnen Sie vier der Dreiecke so an, dass sie eine Pyramide ergeben.
Dazu sind die vier Model Transformation Matrizen bereits als Klassenvariable
pyramidModel deklariert und initialisiert und die Methode
render() sorgt bereits dafür, dass vier Kopien mit diesen
Model Matrizen gezeichnet werden. Implementieren Sie die Methode initPyramid(),
die diese vier Matrizen so setzt, dass eine Pyramide der Kantenlänge
entsteht (sowohl Länge der Kanten der Grundseite,
als auch die der Schrägen). Verschieben Sie die Pyramide außerdem
um
Einheiten in x Richtung. Hinweis:
Da wir nur das Drahtgitter der Pyramide zeichnen, genügen vier Kopien
des Dreiecks.
- Halten Sie schriftlich fest, wie Sie den Winkel berechnen,
um den Sie das Dreieck kippen müssen, um eine Pyramidenseite zu erhalten.
- Zusatzaufgabe: Implementieren Sie die Möglichkeit den Würfel
mittels der Tasten , , und
zu drehen. Die Drehgeschwindigkeit soll erhöht sein, wenn man zusätzlich
die rechte Shift-Taste gedrückt hält. Während des Drehens soll sich
der Mittelpunkt des Würfels nicht ändern.
Musterlösung vom 30.05.2012:
Die Quellen der Musterlösung sind unter
/home/cg/2012/Uebung/Blatt5/Lsg/CG12Blatt5.zipzu finden.