Geodreieck und Matrizen, eine Analogie

Damit dürfte nun klar sein, warum wir zum Zeichnen von Objekten in OpenGL zuerst glTranslate bemühen und anschließend glRotate bzw. glScale. Doch wie verhält es sich mit der Reihenfolge von glRotate und glScale? Gibt es hierbei auch Regeln, die einzuhalten sind? Sofern wir in allen drei Dimensionen die gleiche Skalierung benutzen, kann das Geodreieck die Frage beantworten. Aber ...

Die Grenzen des Geodreiecks

Wenn wir glScale mit unterschiedlichen Skalierungsfaktoren aufrufen, dann kann uns das Geodreick keine Anschauungshilfe mehr geben. Es ist dafür nicht mehr geeignet, denn es müsste mit zwei verschiedenen Skalen ausgestattet sein. Überhaupt ist die unterschiedliche Skalierung eine Angelegenheit, die manche Tücke in sich birgt. Es beginnt schon beim Koordinatensystem; das Gitternetz besteht nicht mehr aus Quadraten, sondern aus Rechtecken. Das hat u.a. zur Folge, dass sich die Winkel verschieben.

Highlight ist die unterschiedliche Skalierung in Verbindung mit einer Rotation. Nur als Gedankenexperiment: Was geschieht, wenn wir zuerst skalieren, dann rotieren? Der Punkt wird nicht mehr auf einer Kreisbahn um den Koordinatennullpunkt gedreht, sondern auf einer elliptischen Bahn. Im dreidimensionalen Raum tritt ein Ellipsoid an die Stelle der Kugel. Das sind Rotationen, mit der wir uns nur schlecht anfreunden können, denn beim Drehen wird die Form verändert. Umgekehrt sieht's etwas freundlicher aus. Wenn wir zuerst drehen und dann skalieren, gibt's nur die Spreizung.

Das soll erst mal reichen. Ich denke, wenn wir ein Gespür dafür bekommen haben, wie bei jeder Aktion ein neues Koordinatensystem entsteht, dass in das vorherige eingebettet ist, dürfte es nicht mehr allzu schwer fallen, die Transformationsbefehle glTranslate, glRotate und glScale durchdacht anzuwenden. Im zweiten Teil des Tutorials geht es im Prinzip um die gleiche Thematik, aber mit anderen Schwerpunkten. Dann rückt die Matrix in den Vordergrund.