__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:
- other
RotationInstanz Objekt, das die Rotationen enthält, die mit dieser zu komponieren sind. Beachten Sie, dass Rotationskompositionen nicht kommutativ sind, daher ist
p * qim Allgemeinen unterschiedlich vonq * p.
- other
- Rückgabe:
- composition
RotationInstanz Diese Funktion unterstützt die Komposition mehrerer Rotationen gleichzeitig. Die folgenden Fälle sind möglich:
Entweder
poderqenthält eine einzelne Rotation. In diesem Fall enthält composition das Ergebnis der Komposition jeder Rotation im anderen Objekt mit der einzelnen Rotation.Beide
pundqenthaltenNRotationen. In diesem Fall wird jede Rotationp[i]mit der entsprechenden Rotationq[i]komponiert, und output enthältNRotationen.
- composition
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]])