GOOGLE ADS

Samstag, 23. April 2022

Python, wie man Quarternion dreht?

Ich habe die folgende Rotation x, y, z, w (wobei w der Kosinus des halben Rotationswinkels ist):

[1,0,0,-8.940696716308594e-08]

Ich möchte die folgenden Achsenkoordinaten aus dem folgenden Array mit der angegebenen Drehung drehen:

[array([[ 0.27050799, -0.027344, -0.073242 ],
[ 0.27050799, -0.027344, -0.073242 ],
[ 0.45117199, -0.021484, -0.203125 ],
[ 0.45117199, -0.021484, -0.203125 ],
[ 0.65234399, -0.038086, 0.12988301]])]

Wie würde ich vorgehen?


Lösung des Problems

Sie können scipy für diese Aufgabe wie folgt verwenden:

import numpy as np
from scipy.spatial.transform import Rotation
q = np.array([1,0,0,-8.940696716308594e-08])
rotation = Rotation.from_quat(q)
vectors = np.array(
[
[ 0.27050799, -0.027344, -0.073242 ],
[ 0.27050799, -0.027344, -0.073242 ],
[ 0.45117199, -0.021484, -0.203125 ],
[ 0.45117199, -0.021484, -0.203125 ],
[ 0.65234399, -0.038086, 0.12988301]
]
)
rotated_vectors = rotation.apply(vectors)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...