Ich arbeite gerade mit OpenGL und habe ein grundlegendes Verständnisproblem mit der Rotation.
Der relevante Teil meines Programms sieht in Pseudocode etwa so aus:
Wenn ich nun alle Objekte um die Y und um die Z Achse rotiere verändert sich natürlich die X Koordinate aller Objekte. Nun möchte ich gerne die neue X Koordinate berechnen. Gibt es viileicht irgendeine openGL Funktion welcher ich einfach die ursprünglichen Koordinaten geben und diese mir dann die neuen Koordinaten zurückliefert?
Wenn nicht, muss ich es wohl manuell über die Rotationsmatrizen berechnen. Aber in welcher Reihenfolge? Matrizenmultiplikation ist ja nicht kommutativ, deshalb müsste ich wissen in welcher Reihenfolge OpenGL die Matrizen miteinander multipliziert. Weiß das jeamand?
Der relevante Teil meines Programms sieht in Pseudocode etwa so aus:
Code:
display(){
gl.glLoadIdentity();
// alle objekte verschieben
gl.glTranslatef(0.0f, 0.0f, this.z);
gl.glTranslatef(0.0f, this.y, 0.0f);
gl.glTranslatef(this.x, 0.0f, 0.0f);
// alle objekte drehen
gl.glRotatef(xrot, 1.0f, 0.0f, 0.0f);
gl.glRotatef(yrot, 0.0f, 1.0f, 0.0f);
gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f);
for(alle objekte){
gl.glPushMatrix();
//einzelnes object verschieben
gl.glTranslatef(objX, objY, objZ);
gl.glBegin(GL.GL_QUADS);
rechteck mit mittlepunkt im nullpunkt zeichnen
gl.glEnd();
gl.glPopMatrix();
}
}
}
Wenn nicht, muss ich es wohl manuell über die Rotationsmatrizen berechnen. Aber in welcher Reihenfolge? Matrizenmultiplikation ist ja nicht kommutativ, deshalb müsste ich wissen in welcher Reihenfolge OpenGL die Matrizen miteinander multipliziert. Weiß das jeamand?