Hallo,
Ich habe leider noch ein paar Probleme mit der Trennung von globalem und lokalem Koordinatensystem, vor allem aber deren Implementierung (OpenGL).
Ich habe es bis jetzt so verstanden, dass man lokale Koordinatensysteme verwendet aus zwei Gründen:
1. Um Rotationen "um die eigene Achse" ohne Translation in den Urspung und zurück machen zu können
2. Wenn man sehr oft das selbe Objekt hat, was sich aber nur durch Skalierung/Rotation/Position untereinander unterscheidet.
Gibt es noch andere Gründe?
Desweiteren Frage ich mich, wie genau man (mit OpenGL) sowas implementiert. Sagen wir mal, wir haben eine Klasse Sphere, deren c'tor am Anfang eine Einheitskugel mit Normalen etc erstellt. Davon soll es später sehr viele geben und sie sollen sowohl um den Ursprung (global) rotieren können (also in der Art Translation->Rotation, was ja dann eine Art Kreisbahn beschreibt), als auch um sich selbst. Also als Beispiel eine Art Sonnensystem. Wie würde man sowas jetzt genau realisieren, damit beide "Arten" von Rotationen leicht machbar sind?
Ihr könnt am besten jetzt schon antworten, es folgen noch ein paar chaotische Fragen, weil ich eben vieles noch nicht ganz durchschaut habe...
In OpenGL gibts soweit ich weiß für diese lokalen Koordinatensysteme diese Modelview Matrix, d.h. man speichert dann wohl wirklich ein richtiges Koordinatensystem mit 3 Vektoren, auf dem man dann operiert? Vor allem Frage ich mich jetzt aber, wie man wohl am besten eine Translation macht. Macht eine Translation im lokalen Koordinatensystem überhaupt Sinn? Geht das überhaupt? Würde man da jetzt die Modelviewmatrix (?=lok. KoordSys?) irgendwie verändern oder müsste man die Vertices direkt verschieben/verändern? Gibt es eine Möglichkeit das ganze so zu machen, dass man garnicht mehr die einzelnen Vertices für jedes Objekt speichern müsste, also praktisch immer von der "Ursprungstopologie", z.B. Einheitskugel ausgeht (z.B. die Position des lok. KS im globalen speichern?)?