scipy.spatial.transform.RigidTransform.
from_components#
- classmethod RigidTransform.from_components(cls, translation, rotation)#
从平移和旋转分量初始化一个刚性变换。
当从平移和旋转创建刚性变换时,平移在旋转之后应用,因此
tf = Tf.from_components(translation, rotation)
等价于tf = Tf.from_translation(translation) * Tf.from_rotation(rotation)
。当将变换应用于向量
v
时,结果与以下列方式将变换应用于向量相同:tf.apply(v) == translation + rotation.apply(v)
- 参数:
- translationarray_like,形状 (N, 3) 或 (3,)
单个平移向量或一堆平移向量。
- rotation
Rotation
实例 单个旋转或一堆旋转。
- 返回:
RigidTransform
如果旋转是单个的并且平移是形状 (3,),则返回单个变换。 否则,返回一堆变换。
示例
>>> from scipy.spatial.transform import RigidTransform as Tf >>> from scipy.spatial.transform import Rotation as R >>> import numpy as np
从单个旋转和平移创建
>>> t = np.array([2, 3, 4]) >>> r = R.from_euler("ZYX", [90, 30, 0], degrees=True) >>> r.as_matrix() array([[ 0. , -1., 0. ], [ 0.8660254, 0., 0.5 ], [-0.5 , 0., 0.8660254 ]]) >>> tf = Tf.from_components(t, r) >>> tf.rotation.as_matrix() array([[ 0. , -1., 0. ], [ 0.8660254, 0., 0.5 ], [-0.5 , 0., 0.8660254 ]]) >>> tf.translation array([2., 3., 4.]) >>> tf.single True
当将变换应用于向量
v
时,结果与以下列方式将变换应用于向量相同:tf.apply(v) == translation + rotation.apply(v)
>>> r.apply([1, 0, 0]) array([0. , 0.8660254, -0.5 ]) >>> t + r.apply([1, 0, 0]) array([2. , 3.8660254, 3.5 ]) >>> tf.apply([1, 0, 0]) array([2. , 3.8660254, 3.5 ])