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

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

1

03.04.2008, 20:27

Seltsames Verhalten bei Rotationen

Hi!

Mir ist vor kurzem ein Fehler aufgefallen, den ich bis jetzt nicht beheben konnte. Und zwar passiert er immer dann, wenn Objekte rotieren. Teils ist alles physikalisch korrekt, doch plötzlich fängt das Teil an rumzuspinnen. Dann beruhigt es sich wieder und dann spinnt es wieder! Ich weiß, das klingt jetzt ein wenig vage, doch ich weiß nicht, wie ich es anders beschreiben sollte. Hab noch keine Regelmäßigkeit feststellen können. Irgendwie (rein vom optischen) sieht es für mich aber so aus, als würde eine Funktion Richtung Polstelle kommen, oder ähnlichem! (ala tangens).
Angenommen folgendes Szenario:
Linearer Impuls gleich Null, Drehimpuls konstant. Rotationspräsentation durch ein Quaternion, numerischer Integrator: RK4.

Zeitliche Ableitung des Quaternions:
dq/dt = 1/2 * w(t) * q(t)

Integriert werden Position (= bleibt konstant), linearer impuls (ebenfalls), Drehimpuls (auch!) und Rotationsquaternion (siehe oben).

Nun braucht es noch ein wenig Code:
RK4 kann beliebig auch durch den Euler ersetzt werden, daher poste ich ihn nicht --> irrelevant.

Berechnung von omega. mRot wird aus dem Quaternion gewonnen:

C-/C++-Quelltext

1
*w = ogUtilsTransformCoords(L, *mRot * m_mInvInertiaTensor * ogMatrixTranspose(*mRot));

(Für mehr Infos einfach fragen!)
Der Inertiatensor wird mit einer Funktion berechnet, welche eigentlich für rechtsorientierte KoordSystem entwickelt wurde, ich habe ihn auf linksorientierte umgeschrieben. Bedeutet: es könnte durchaus der Fehler darin zu finden sein ;)

Meine Frage: Habt ihr IRGEND eine Idee, einen Anhaltspunkt oder ähliches, was das Problem sein könnte? Könnte es mit links-rechtorientierung zu tun haben (bezüglich der Quaternions: spielt da die Orientierung eine Rolle?)
Haben Quaternion integrationen irgendwelche unzulässigen Zustände?

Ich hoffe, dass mir irgendjemand helfen kann, obwohl ich alles so vage formulieren musste... Danke, jedenfalls
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

03.04.2008, 21:41

Habs nun endlich geschaff das Problem zu lösen. Danke trotzdem!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

03.04.2008, 21:45

Dann kannst du ja mal sagen, woran es gelegen hat. :)

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

03.04.2008, 23:35

War ein banaler Fehler in der ogQuaternion-Klasse... :oops:
(Für die Multiplikation zweier Quaternionen...). Naja!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige