mindsponge.common.quat_multiply_by_vec

查看源文件
mindsponge.common.quat_multiply_by_vec(quat, vec)[源代码]

计算四元数与纯向量四元数的乘积。

\[\begin{split}\begin{split} &temp = QUAT\_MULTIPLY\_BY\_VEC * quat[..., :, None, None] * vec[..., None, :, None] \\ &result = sum(temp,axis=(-3, -2)) \\ \end{split}\end{split}\]
参数:
  • quat (Tensor) - 输入的四元数,shape为 \((..., 4)\) 的 Tensor。

  • vec (Tensor) - 纯向量四元数, \((b, c, d)\) 的未归一化四元数,其中归一化四元数能被表示成 \((1, b, c, d)\)

返回:

Tensor,计算后的结果,shape 为 \((..., 4)\)

支持平台:

Ascend GPU

样例:

>>> import numpy as np
>>> from mindsponge.common.geometry import quat_multiply_by_vec
>>> from mindspore.common import Tensor
>>> from mindspore import dtype as mstype
>>> np.random.seed(1)
>>> quat = Tensor(np.random.rand(4),dtype=mstype.float32)
>>> vec = Tensor(np.random.rand(3),dtype=mstype.float32)
>>> out = quat_multiply_by_vec(quat, vec)
>>> print(out)
[-0.16203496,  0.03330477, -0.05129148,  0.14417158]