__mul__#
- RigidTransform.__mul__(self, RigidTransform other)#
Diese Transformation mit der anderen zusammensetzen.
Wenn p und q zwei Transformationen sind, dann ist die Komposition von „q gefolgt von p“ äquivalent zu p * q. In Bezug auf Transformationsmatrizen kann die Komposition als
p.as_matrix() @ q.as_matrix()ausgedrückt werden.In Bezug auf Translationen und Rotationen ist die Komposition, wenn sie auf einen Vektor
vangewendet wird, äquivalent zup.translation + p.rotation.apply(q.translation) + (p.rotation * q.rotation).apply(v).Diese Funktion unterstützt die Komposition mehrerer Transformationen gleichzeitig. Die folgenden Fälle sind möglich:
Entweder
poderqenthält eine einzelne Transformation oder eine Transformation der Länge 1. In diesem Fall enthält das Ergebnis das Ergebnis der Komposition jeder Transformation im anderen Objekt mit der einen Transformation. Wenn beides einzelne Transformationen sind, ist das Ergebnis eine einzelne Transformation.Beide
pundqenthaltenNTransformationen. In diesem Fall wird jede Transformationp[i]mit der entsprechenden Transformationq[i]zusammengesetzt und das Ergebnis enthältNTransformationen.
- Parameter:
- other
RigidTransformInstanz Objekt, das die mit dieser zu komponierenden Transformationen enthält.
- other
- Rückgabe:
RigidTransformInstanzDie komponierte Transformation.
Beispiele
>>> from scipy.spatial.transform import RigidTransform as Tf >>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
Zwei Transformationen komponieren
>>> tf1 = Tf.from_translation([1, 0, 0]) >>> tf2 = Tf.from_translation([0, 1, 0]) >>> tf = tf1 * tf2 >>> tf.translation array([1., 1., 0.]) >>> tf.single True
Wenn auf einen Vektor angewendet, wird die Komposition von zwei Transformationen in Rechts-nach-Links-Reihenfolge angewendet.
>>> t1, r1 = [1, 2, 3], R.from_euler('z', 60, degrees=True) >>> t2, r2 = [0, 1, 0], R.from_euler('x', 30, degrees=True) >>> tf1 = Tf.from_components(t1, r1) >>> tf2 = Tf.from_components(t2, r2) >>> tf = tf1 * tf2 >>> tf.apply([1, 0, 0]) array([0.6339746, 3.3660254, 3. ]) >>> tf1.apply(tf2.apply([1, 0, 0])) array([0.6339746, 3.3660254, 3. ])
Wenn mindestens eine der Transformationen nicht einzeln ist, ist das Ergebnis ein Stapel von Transformationen.
>>> tf1 = Tf.from_translation([1, 0, 0]) >>> tf2 = Tf.from_translation([[0, 2, 0], [0, 0, 3]]) >>> tf = tf1 * tf2 >>> tf.translation array([[1., 2., 0.], [1., 0., 3.]]) >>> tf.single False >>> len(tf) 2