如何仅使用2个欧拉角将源向量旋转到目标(至最近的矢量)



我需要旋转源3D向量,以通过仅绕两个轴旋转yz。

我的机制,有2个电动机围绕y旋转,然后围绕Z旋转。

我认为,仅使用2个角度将源向量旋转到随机目标3D向量,我需要将其旋转到最接近目标矢量。

我只需要对齐方向,而不是坐标。

使用旋转矩阵,四元组等的最佳方法是什么?

i可以计算从源向量到目标的最短最短。然后将目标向量乘以此Quat的倒数。然后从旋转矩阵中获取Yz角,以z矢量为z向量,但我认为这是错误的。

解决方案应分析。

为了清晰,让我定义单位向量

E1 = (1,0,0)
E2 = (0,1,0)
E3 = (0,0,1)

给定一个旋转矩阵r,目标是将其解散为两个旋转矩阵,旋转一个围绕轴E2的角度为" a",绕轴E3:

一个角度" b"。
R = exp(a E2) exp(b E3)

将两侧乘以E3

R E3 = exp(a E2) exp(b E3) E3

我们得到:

W = exp(a E2) E3

其中w是vector e3由r:w = r e3

旋转
a = atan2( W • E1, W • E3)

其中(•)是点产品。

现在进行R的转置我们得到:

R^T = exp(b E3)^T exp(a E2)^T

将两侧乘以E2:

R^T E2 = exp(b E3)^T exp(a E2)^T E2
R^T E2 = exp(-b E3) exp(-a E2) E2
S = exp(-b E3) E2

其中s是vector e2由r^t旋转:s = r^t e2

b = - atan2( S • E1, S • E2)

我刚刚得出了这些方程式,因此未经测试,可能会有一些错误。按原样进行。

最新更新