gpt4 book ai didi

math - 使用四元数绕轴旋转多个点

转载 作者:行者123 更新时间:2023-12-04 14:12:51 26 4
gpt4 key购买 nike

我想简单地使用四元数围绕 X、Y、Z 轴旋转多个点(一个形状)。我将我的欧拉角转换为四元数,因此四元数已经设置好并且看起来不错。

我的东西是这样设置的:

  • q(四元数)-> W:0.99,X:0.07,Y:0,Z : 0.(绕 X 轴旋转 ~17.18°)
  • p(点)-> X:-0.35,Y:1.4,Z:0.35。
  • p'(旋转点)-> ?

我是四元数的新手,我不知道什么字母代表我想用来旋转点的操作中的什么值。

最佳答案

对于旋转,您使用单位四元数,这样W^2 + X^2 + Y^2 + Z^2 = 1

四元数的 (X, Y, Z) 部分可被视为沿旋转轴的向量。此矢量分量 的大小以不太明显的方式对旋转角度进行编码:

|X,Y,Z| = sqrt(X^2 + Y^2 + Z^2) = sin(rotation_angle/2)

为了完成四元数,我们有实数 W:

W = cos(rotation_angle/2)

使用四元数进行旋转的优点是它具有简单的乘法规则,并且避免了万向节锁定(与欧拉角不同),同时只有 1 个额外的自由度(与具有 6 个额外自由度的旋转矩阵不同)。

通过首先将点转换为“纯虚数四元数”,可以使用四元数直接旋转点:P = (W=0, X=p.x, Y=p.y, Z=p.z)(请注意,此四元数的矢量分量与点的坐标相同)。然后,您通过四元数乘法计算旋转点,如下所示:

either:  P' = Q* P Q
or: P' = Q P Q*
(depending on convention)

其中 Q* 是四元数 Q 的共轭。结果的实部将为零:P'.W = 0,而矢量分量(P'.X, P'.Y, P'.Z) 将是旋转后的点坐标。

但是,将旋转四元数用于图形目的的通常方法是将它们变成等效的旋转矩阵。您可以从上面的公式和 quaternion multiplication rules 中计算出详细信息,但生成的 3x3 旋转矩阵类似于:

[  W^2+X^2-Y^2-Z^2   2(XY-WZ)          2(ZX+WY)         ]
[ 2(XY+WZ) W^2+Y^2-X^2-Z^2 2(YZ-WX) ]
[ 2(ZX-WY) 2(YZ+WX) W^2+Z^2-X^2-Y^2 ]

关于math - 使用四元数绕轴旋转多个点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62974296/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com