hab ein komplexes Problem und wollte die Profis um Rat fragen.
Also ich habe einen Vektor v(x,y,z,w), dieser liegt in Objektkoordinaten vor und soll in Weltkoordinaten überführt werden.
Dazu lade ich zunächst die Einheits ModelView Matrix mit:
Code:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
Die Matrix ist nun die Einheitsmatrix (Hauptdiagonale mit einsen gefüllt).
Anschließend führe ich meine Transformationen auf der Modelview Matrix aus:
Das ist der Plan und seine Umsetzung. Leider funktioniert der Plan nich so wie ich mir das vorstelle.
Hat jemand im OGL Olymp eine Ahnung wie ich die Nuss knacken könnte. Denn eigentlich ist das ja ein grundlegendes Problem.
MFG
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Hehe...nicht ganz...
Durch deine Transformationen hast du (wenn ich das richtig gesehen habe) den Koordinaten ursprung an die stelle geschoben, wo der Vektor hin soll. Jetzt nimmst du dieses Koordinatensystem und zeichnest diesbezüglich deinen Vektor...das ist natürlich dann nicht richtig, weil du ihn quasi "doppelt" verschiebst.
Du musst nach den ganzen Tranformationen den Vektor einfach an der Stelle (0,0,0) zeichnen. Dann sollte er an der von dir gewünschten Position sein. (Hoffe ich )
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
der punkt dürfte sein, dass du in dem code davon ausgehst, dass die Matrix Zeilenweise abgespeichert ist, ogl Matrizen aber spaltenweise abgespeichert sind. demnach müsste das eher so aussehen:
Code:
v_world[0]= M [0]*v[0] + M [4]*v[1] + M [8]*v[2] + M [12]*v[3];
@Flash: wieso soll er den vektor um ihn von objecktspace nach worldspace zu transformieren an die position 0 0 0 zeichnen?
@ Flash danke für den Hinweis aber ich benötige den Vektor nicht zum zeichnen, sondern für eine Berechnung.
ich will mit einer Bereichssuche die Verbindungen zwischen Objekten ermitteln, falls eine Verbindung besteht.
Dazu benötige ich den Vektor in Weltkoordinaten. Also keine Angst ich bin mir über das Prinzip der Postmultiplikation von Matrizen und der Statusmaschine OGL im klaren.
@ Grizzly, also einen Teilerfolg konnte ich mit deinem Hinweis schon erzielen. Denn deiner Aussage nach habe ich meine Matrix einfach transponiert (Zeilen und Spalten getauscht). Nun die Translation funktioniert exakt. Skalierung auch in Ordnung, nur leider funzt die Rotation nich.
Hatte noch niemand hier ein ähnliches Problem.? Falls doch, bitte gebt mir das Wissen welches den Knoten in meinem Hirn entfernt . Das drückt so.......
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
Das einzige was mir dazu einfällt wär, dass die rotationsachse bei glrotatef nicht so ist, wie sie seien sollte, wenn es erstmal in der Matrize steht, kann sich das ja wohl kaum noch anders verhalten
die Sache funktioniert so wie das hier besprochen wurde. Sehr geil, der Fehler lag bei meiner Bereichssuche.
Diese muss den minimal Vektor und den maximal Vektor des gesuchten Bereichs übergeben bekommen.
Wenn man allerdings die Transformierten Vektoren nicht nach min und max sortiert kann das auch nich funzen.
Jedenfalls ermittelt die oben beschriebene Methode die exakten Weltkoordinaten der Vektoren. (Habs auf Millimeterpapier geprüft);
Der OGL Olymp war mal wieder Allwissend. Tausend Dank an alle Poster.
Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.