mindsponge.common.quat_multiply_by_vec

mindsponge.common.quat_multiply_by_vec(quat, vec)[源代码]

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

\[temp = QUAT_MULTIPLY_BY_VEC * quat[..., :, None, None] * vec[..., None, :, None] result = sum(tempc,axis=(-3, -2))\]
参数:
  • 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]