mindsponge.common.rigids_mul_rigids

mindsponge.common.rigids_mul_rigids(a, b)[源代码]

把刚体变换 \(b\) 从它所在局部坐标系中变换到刚体变换 \(a\) 所在局部坐标系中。

两个刚体变换的旋转矩阵相乘结果作为刚体变换 \(b\) 新的旋转矩阵。

用刚体变换 \(a\) 的旋转矩阵与刚体变换 \(b\) 的平移距离相乘,所得向量与刚体变换 \(a\) 的平移距离相加,所得结果为刚体变换 \(b\) 的新平移距离。

\[\begin{split}\begin{split} &r = a_rb_r \\ &t = a_rb_t +a_t \\ \end{split}\end{split}\]
参数:
  • a (tuple) - 刚体变换 \(a\) ,长度为2,包含旋转矩阵 \((xx, xy, xz, yx, yy, yz, zx, zy, zz)\) 与平移距离 \((x, y, z)\) ,数据类型为标量或者shape相同的Tensor。

  • b (tuple) - 刚体变换 \(b\) ,长度为2,包含旋转矩阵 \((xx, xy, xz, yx, yy, yz, zx, zy, zz)\) 与平移距离 \((x, y, z)\) ,数据类型为标量或者shape相同的Tensor。

返回:

tuple(rots, trans),变换后的刚体 \(b\) ,长度为2,包含旋转矩阵 \((xx, xy, xz, yx, yy, yz, zx, zy, zz)\) 与平移距离 \((x, y, z)\) ,数据类型为标量或者shape相同的Tensor。

支持平台:

Ascend GPU

样例:

>>> import mindsponge
>>> a = ((1, 2, 3, 4, 5, 6, 7, 8, 9), (3, 4, 5))
>>> b = ((2, 3, 4, 1, 5, 6, 3, 8, 7), (1, 2, 3))
>>> b1 = mindsponge.common.rigids_mul_rigids(a,b)
>>> print(b1)
((13, 37, 37, 31, 85, 88, 49, 133, 139), (17, 36, 55))