我需要使用什么公式来找到给定的第二个 3D 点 (P1):
- 第一个点 P0 = [x0, y0, z0]
- 方向四元数 Q0 = [q0, q1, q2, q3]
- 行驶距离 S
我猜想经过的距离 S 需要分成它的 X、Y 和 Z 分量。有没有一种简单的方法可以使用四元数来做到这一点?
我需要使用什么公式来找到给定的第二个 3D 点 (P1):
我猜想经过的距离 S 需要分成它的 X、Y 和 Z 分量。有没有一种简单的方法可以使用四元数来做到这一点?
方向向量(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