OpenGL: Koordinaten eines Punktes nach Rotation berechnen?
Verfasst: 09.09.2010, 17:47
Sowohl OpenGL als auch 3D Grafikprogrammierung im Allgemeinen sind neue Gebiete für mich in dich ich mich gerade versuche einzuarbeiten. Um mich einzuarbeiten habe ich in den letzten Tagen unser Sonnensystem mit einem kleinen Raumschiff das darin herumfliegt nachgebaut. Jetzt stehe ich allerdings vor einem Problem das ich nicht lösen kann.
Die Situation ist folgende:
Ich platziere einen Planeten (sagen wir mal Saturn) zu Beginn an der Position (2/2/-5). Nun wird durch das verschieben der Kameraposition das gesamte Sonnensystem verschoben und rotiert. Danach möchte ich wissen an welchen Koordinaten sich Saturn nun befindet. Um das herauszufinden dachte ich mir ich hole mir mit
Die aktuelle Modelview Matrix und multipliziere die dann mit dem Ortsvektor den Saturn zu Beginn hatte. Also mit (2/2/-5). Dann müsste ich eigentlich die aktuelle Position von Saturn bekkommen. Wäre das Vorgehen grundsätzlich korrekt, oder bin ich da auf dem Holzweg?
Falls das so stimmt hätte ich noch ein paar Fragen dazu:
Von welcher Seite muss ich den Vektor mit der Matrix multiplizieren?
Muss ich die Matrixmultiplikation selbst implementieren oder gibt es eine OpenGL Funktion die das für mich macht?
Die Modelview Matrix ist ja eine 4x4 Matrix. D.h. ich brauche auch einen Vektor mit 4 Zeilen. X, Y, Z und was noch?
Wäre toll wenn ihr mir weiterhelfen könntet!
Die Situation ist folgende:
Ich platziere einen Planeten (sagen wir mal Saturn) zu Beginn an der Position (2/2/-5). Nun wird durch das verschieben der Kameraposition das gesamte Sonnensystem verschoben und rotiert. Danach möchte ich wissen an welchen Koordinaten sich Saturn nun befindet. Um das herauszufinden dachte ich mir ich hole mir mit
Code: Alles auswählen
gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
Falls das so stimmt hätte ich noch ein paar Fragen dazu:
Von welcher Seite muss ich den Vektor mit der Matrix multiplizieren?
Muss ich die Matrixmultiplikation selbst implementieren oder gibt es eine OpenGL Funktion die das für mich macht?
Die Modelview Matrix ist ja eine 4x4 Matrix. D.h. ich brauche auch einen Vektor mit 4 Zeilen. X, Y, Z und was noch?
Wäre toll wenn ihr mir weiterhelfen könntet!