2017-05-17 1 views
0

Ich frage mich, ob es möglich ist, die Drehung eines Objekts nicht um sich selbst, sondern um einen beliebigen Ursprung zu definieren, wodurch die Notwendigkeit, XYZ-Positionsvektoren an die GPU zu übergeben, effektiv beseitigt wird. Anstatt also XYZ-Position + XYZW-Quaternion zu haben, konnten wir eine Quaternion vorberechnen, die allein die Position und Rotation des Objekts selbst bestimmen würde.Ist es möglich, ein Objekt mit Quaternionen um einen beliebigen Ursprung zu drehen?

+0

@WestLangley, warum haben Sie die OpenGL und GLSL-Tags entfernt? –

+0

Weil die Frage nicht zu diesen Themen gehört. – WestLangley

+0

Ich bin überrascht und verwirrt. Wenn es nicht um GLSL oder OpenGL geht, warum geht es dann nicht mehr um three.js? –

Antwort

2

Es ist nicht möglich mit einer reinen Quaternion. Eine Quaternion hat nur vier Freiheitsgrade. Wenn Sie es für die Transformation verwenden, sind dies drei Grad für die Rotation und ein Grad für die Skalierung. Es gibt einfach nichts mehr, was eine Quaternion bieten kann.

Dual Quaternions können jedoch Übersetzungen (und damit auch Rotationen um beliebige Achsen) darstellen. Dies bringt die Kosten für vier weitere Nummern mit sich und ist normalerweise nicht die Mühe wert. Der Vorteil von dualen Quaternionen ist, dass Starrkörpertransformationen in einer konsolidierten Weise mit einem schönen algebraischen Hintergrund ausgedrückt werden können. Es wird normalerweise für Animationen verwendet, um konsistent zwischen mehreren Transformationen zu interpolieren.

In den meisten Fällen überwiegen die Vorteile von doppelten Quaternionen nicht ihre Komplexität. Daher ist die Verwendung eines einfachen Versatzvektors meistens vernünftiger.

+0

Das Ziel war, die Anzahl der Vektoren zu reduzieren, die an die GPU in Anwendungen geschickt wurden, wo es eine große Menge von ihnen gibt, so dass doppelte Quaternionen den Zweck besiegen, über den ich nachdachte. Danke für die Klarstellungen. –

Verwandte Themen