Ich experimentiere mit der Verwendung von Achsen-Winkel-Vektoren für Rotationen in meinem Hobby-Spiel-Engine. Dies ist ein 3-Komponenten-Vektor entlang der Rotationsachse mit einer Länge der Rotation im Bogenmaß. Ich mag sie, weil:Kombinieren Rotationsachse Vektoren
- Anders als Quats oder Drehmatrizen, kann ich eigentlich die Zahlen sehen und die Drehung in meinem Kopf
- Sie sind ein wenig weniger Speicher als Quaternionen oder Matrizen visualisieren.
- I-Wert außerhalb des Bereichs von -Pi bis Pi darstellen kann (Dies ist wichtig, wenn ich eine Winkelgeschwindigkeit speichern)
Allerdings habe ich eine enge Schleife, die die Drehung aller meine Objekte aktualisiert (Zehner von Tausenden) basierend auf ihrer Winkelgeschwindigkeit. Momentan besteht die einzige Möglichkeit, zwei Rotationsachsenvektoren zu kombinieren, darin, sie in Quaternionen umzuwandeln, sie zu multiplizieren und dann das Ergebnis zurück in eine Achse/einen Winkel zu konvertieren. Durch das Profiling habe ich dies als Engpass identifiziert. Kennt jemand einen direkteren Ansatz?
das bedeutet, dass drei Werte aufeinanderfolgende Drehungen um 3 orthogonale Achse darstellen? Grundsätzlich gilt, dass Euler-Winkel, so dass '[phi, psi, θ'] 'RX (phi) * RY (psi) * RZ (theta)' darstellen kann. Wenn das der Fall ist, müssen Sie einen Weg finden, die 3x3-Rotationsmatrix zu konstruieren und den Achsenwinkel daraus zu ziehen. – ja72
Nein, ich benutze keine Winkel. Dies ist der Achsenwinkel, wobei die Länge des Vektors der Winkel ist. – Dwayne