Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

23.04.2008, 16:28

Zitat von »"Roberto"«

Die Rotationswinkel für x, y, und z, die mein Renderer erhält, sind immer absolut, beziehen sich also auf das objekt in "Normallage", untransformiert.


sry, aber ich kann mir irgendwie schwer vorstellen was du da beschreibst.
meinst du damit, dass alle achsen in ihrer aktuellen ebene rotiert werden. da würden die koordinatenachsen aber nacher nicht mehr wirklich normal aufeinander stehen (bzw. nur in ganz bestimmten spezialfällen)!? es ist also absolut unmöglich so etwas durch eine rotationsmatrix zu beschreiben (da eine rotationsmatrix eben genau dadurch definiert ist, dass längen und winkelverhältnisse nicht verändert werden).

erklär vielleicht mal etwas genauer was du denn jetzt eigentlich haben willst...

12

23.04.2008, 17:36

Zitat

da würden die koordinatenachsen aber nacher nicht mehr wirklich normal aufeinander stehen


Genau. Die Definition der Rotation über ein Quaternion kann das leisten, aber eben nicht die Beschreibung der Objektlage über drei Rotatinswinkel (Euler-Winkel). Siehe dazu die Links aus meinem vorigen Beitrag, sehr anschaulich auch der letzte davon. Alle beliebigen Lagen des Objekts im Raum sind also nur erreichbar, wenn die Reihenfolge der Rotationen um die drei Achsen variiert wird, was naturgemäß leider nicht kontinuierlich, sondern nur sprunghaft geschehen kann. Mit der Einschränkung lebe ich jetzt, hat halt nur etwas gedauert, bis der Groschen gefallen ist.

Greetz
Roberto

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

23.04.2008, 18:26

Zitat von »"Roberto"«

Genau. Die Definition der Rotation über ein Quaternion kann das leisten, aber eben nicht die Beschreibung der Objektlage über drei Rotatinswinkel (Euler-Winkel).


Die Definition der Rotation ist bei Quaternionen genau die gleiche wie sonst auch. Das is u. a. ein Weg überhaupt erstmal zu beweisen, dass man mit Quaternionen einen Rotationsoperator definieren kann ;)

Worauf ich hinauswollte: Müssen es unbedingt Rotationswinkel sein? Es gibt nämlich genug andere Wege ein Objekt auszurichten. Sobald du deine Achsenvektoren kennst, kannst du dir z.b. ganz einfach eine Transformationsmatrix dazu basteln...

14

24.04.2008, 14:39

So kann man die Schwierigkeit auf den Punkt bringen:
Es liegen aus der Eingabe des Anwenders nur die drei Rotationswinkel vor. Wenn ich daraus die drei Achsenvektoren berechnen kann, und zwar ohne das Problem, dass diese Achsen danach nicht mehr senkrecht zueinander stehen, habe ich gewonnen. Aller Dokumentation nach zu urteilen, die ich bisher dazu gefunden habe, ist genau das nicht möglich. Das dabei auftretende Problem des Verlusts der korrekten Ausrichtung der Rotationsachsen zueinander, und damit im Extremfall "Rotation einer Achse um 90°" der Verlust eines Freiheitsgrades in der Rotation wird als "Gimbal Lock" beschrieben. Und alle scheinen sich einig zu sein, dass die Mathematik da keinen Ausweg bietet...
Ich kann aber dem Anwender leider nicht zumuten, die Rotation über Achs-Vektoren zu definieren.

Danke nochmals
Roberto

Werbeanzeige