glRotate()

glRotate ist definiert im OpenGL zugehörigen Include des jeweiligen Betriebsystems.

Funktion

glRotate() lässt das Koordinatensystem um die übergebenen Werte rotieren. Am Koordinatensystem orientieren sich alle hinzugefügten Vertexe. Dies ermöglicht beispielsweise ein beschriebenes Objekt rotiert in die Szene einzukopieren, in dem man die Szene zunächst so rotiert, so dass man das Objekt nun die korrekten Koordinaten aufweist.

Signatur

void glRotated(	GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
void glRotatef(	GLfloat  angle, GLfloat  x, GLfloat  y, GLfloat  z);

angle: Winkel, der gedreht werden soll, Angabe in Grad (0..360 Grad)
x: x-Ordinate des Normalenvektor
y: y-Ordinate des Normalenvektor
z: z-Ordinate des Normalenvektor

Anwedungs-Beispiel

Als Beispiel: Man möchte die Rotorblätter eines Helikopters in die Szene einbauen. Hierfür gibt es eine Beschreibung des Rotorblattes, wie es im Nullpunkt beginnt und in den Monitor hineinragt.

So verschiebt man den Szenenmittelpunkt zunächst dorthin, wo dem Helikopter die Rotorblätter hinzugefügt werden sollen. Wenn wir wissen, dass die X-Achse von links nach rechts verläuft, die Y-Achse von unten nach oben und die Z-Achse vom vorne nach hinten, dann können wir anschließend das Rotorblatt drehen. Das Rotorblatt rotiert um die Y-Achse, die Rotorachse, die den Rotor antreibt, verläuft schließlich auch von oben nach unten. Mit glRotate drehen wir nun das Koordinatensystem so, dass die Beschreibung des Rotorblattes (das weiterhin einfach in den Monitor ragt) passt. Man kann sich das so vorstellen, als würde man die Welt so bewegen (glTranslate()), bzw. so rotieren (glRotate), dass das Rotorblatt genau in die Welt reinpasst. Anschließend kopieren wir es in die Szene. Nun drehen wir die Szene erneut um 180 Grad, um den zweiten Rotor auf der anderen Seite einzukopieren.

Sie können sich um die Achsen so vorstellen, dass sie sich einen Rotor oder Ventilator vorstellen und schauen, wohin dieser die Luft bläst. Die Luftrichtung ist ihre Achse. Beim Helikopter bläst der Hauptrotor von oben nach unten: Y-Achse. Der Steuerungsrotor (hinten am Rotor) bläst nach von links nach rechts: X-Achse. Wenn Sie sich nun vorstellen, dass sie in einem Luftkissenboot sitzen, dessen Rotor von vorne nach hinten wegbläst, dann rotiert dieser Rotor um die Z-Achse.

Wenn sie den Rotor als Ebene betrachten, dann entspricht die Achse der Normalenvektor der Ebene.

Fehlerquellen

Hinweise

Die Rechte-Hand-Regel

Es gilt die rechte Handregel, nachder man den Daumen der rechten Hand entlang der Achse legt. Rotiert man um die Achse (0.0, 1.0, 0.0), also die Y-Achse von unten nach oben, dann zeigt der Daumen der rechten Hand nach oben und die Finger verlaufen in die Richtung, in die gedreht wird. Dreht man nun um 90 Grad, so dreht sich, was vorher rechts war nach hinten und verläuft so entlang der Finger. Liegt die Achse andersherum, also (0.0, -1.0, 0.0), so verläuft die Achse von oben nach unten. Entsprechend muss der Daumen nach unten zeigen und wenn man nun um 90 Grad ein Objekt verdreht, so dreht sich das, was rechts liegt auf einen zu.

Beispiel

siehe auch