0

我需要使用什么公式来找到给定的第二个 3D 点 (P1):

  1. 第一个点 P0 = [x0, y0, z0]
  2. 方向四元数 Q0 = [q0, q1, q2, q3]
  3. 行驶距离 S

我猜想经过的距离 S 需要分成它的 X、Y 和 Z 分量。有没有一种简单的方法可以使用四元数来做到这一点?

4

1 回答 1

0

方向向量(forward-vector)的分量是:

x = 2 * (q1*q3 + q0*q2)
y = 2 * (q2*q3 - q0*q1)
z = 1 - 2 * (q1*q1 + q2*q2)

这个公式是从四元数到矩阵(下)乘以(0,0,1)向量计算出来的。

D=(x,y,z)如果不是单位,则归一化,并计算P_New.x= P0.x + S * D.x和其他组件。


要获得向上和向左的方向向量(也许您的方向是指另一个基本框架方向 - OX 或 OY 作为前向),请使用下面引用的矩阵的另一列:

链接: 四元数乘法和正交矩阵乘法都可以用来表示旋转。如果四元数由 表示qw + i qx + j qy + k qz,则表示相同旋转的等效矩阵为:

1 - 2*qy2 - 2*qz2   2*qx*qy - 2*qz*qw   2*qx*qz + 2*qy*qw
2*qx*qy + 2*qz*qw   1 - 2*qx2 - 2*qz2   2*qy*qz - 2*qx*qw
2*qx*qz - 2*qy*qw   2*qy*qz + 2*qx*qw   1 - 2*qx2 - 2*qy2
于 2020-01-23T06:04:33.983 回答