scipy.spatial.transform.Rotation.

__mul__#

Rotation.__mul__(self, Rotation other)#

Diese Rotation mit der anderen komponieren.

Wenn p und q zwei Rotationen sind, dann ist die Komposition von 'q gefolgt von p' äquivalent zu p * q. In Bezug auf Rotationsmatrizen kann die Komposition ausgedrückt werden als p.as_matrix() @ q.as_matrix().

Parameter:
otherRotation Instanz

Objekt, das die Rotationen enthält, die mit dieser zu komponieren sind. Beachten Sie, dass Rotationskompositionen nicht kommutativ sind, daher ist p * q im Allgemeinen unterschiedlich von q * p.

Rückgabe:
compositionRotation Instanz

Diese Funktion unterstützt die Komposition mehrerer Rotationen gleichzeitig. Die folgenden Fälle sind möglich:

  • Entweder p oder q enthält eine einzelne Rotation. In diesem Fall enthält composition das Ergebnis der Komposition jeder Rotation im anderen Objekt mit der einzelnen Rotation.

  • Beide p und q enthalten N Rotationen. In diesem Fall wird jede Rotation p[i] mit der entsprechenden Rotation q[i] komponiert, und output enthält N Rotationen.

Beispiele

>>> from scipy.spatial.transform import Rotation as R
>>> import numpy as np

Komposition zweier einzelner Rotationen

>>> p = R.from_quat([0, 0, 1, 1])
>>> q = R.from_quat([1, 0, 0, 1])
>>> p.as_matrix()
array([[ 0., -1.,  0.],
       [ 1.,  0.,  0.],
       [ 0.,  0.,  1.]])
>>> q.as_matrix()
array([[ 1.,  0.,  0.],
       [ 0.,  0., -1.],
       [ 0.,  1.,  0.]])
>>> r = p * q
>>> r.as_matrix()
array([[0., 0., 1.],
       [1., 0., 0.],
       [0., 1., 0.]])

Komposition zweier Objekte mit gleicher Anzahl von Rotationen

>>> p = R.from_quat([[0, 0, 1, 1], [1, 0, 0, 1]])
>>> q = R.from_rotvec([[np.pi/4, 0, 0], [-np.pi/4, 0, np.pi/4]])
>>> p.as_quat()
array([[0.        , 0.        , 0.70710678, 0.70710678],
       [0.70710678, 0.        , 0.        , 0.70710678]])
>>> q.as_quat()
array([[ 0.38268343,  0.        ,  0.        ,  0.92387953],
       [-0.37282173,  0.        ,  0.37282173,  0.84971049]])
>>> r = p * q
>>> r.as_quat()
array([[ 0.27059805,  0.27059805,  0.65328148,  0.65328148],
       [ 0.33721128, -0.26362477,  0.26362477,  0.86446082]])