Rodrigues公式不正确?

问题描述 投票:0回答:1

Rodrigues公式仅对小角度有效吗?

我尝试使用维基百科((1,0,0))中的Rodrigues公式先绕着y轴旋转矢量https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula,然后绕着z轴旋转矢量。

围绕y轴的第一次10度旋转似乎可以(v_r1 = 0.984807753012208 0 -0.173648177666930)。但是,如果我将v_r1绕z轴旋转10度,那么我会假设v_r2的y和z分量相同。对于较小的alpha和beta角度就是这种情况。

但是请尝试将alpha和beta增加到例如60度然后v_r2不再有意义。

这使我想到:Rodrigues公式仅对小角度有效吗?罗德里格斯公式实际上是准确的还是仅是一种假设?

您可以直接在matlab命令窗口中复制和粘贴以下代码,以了解我的意思:

alpha = deg2rad(10);
beta = deg2rad(10);

% origin vector:
v = [1;0;0];

% 1: rotate vector around y-axis:
y_axis = [0;1;0];
c1 = cross(y_axis,v); %cross product between rotation axis and vector
v_r1 = v.*cos(alpha)+(c1)*sin(alpha)+y_axis.*(y_axis.*v)*(1-cos(alpha));

% 2: rotate vector around z-axis:
z_axis = [0;0;1];
c2 = cross(z_axis,v_r1);
v_r2 = v_r1.*cos(beta)+(c2)*sin(beta)+z_axis.*(z_axis.*v_r1)*(1-cos(beta));

vector_length = sqrt((v_r2(1)^2)+(v_r2(2)^2)+(v_r2(3)^2));

谢谢。

matlab rotation code-snippets euler-angles rotational-matrices
1个回答
0
投票

3D中的旋转不是可交换的。您认为y和z分量应该相同的直觉是不正确的。在小角度范围内,不可交换性很小。

考虑一下面向x的矢量并旋转90度。绕y旋转会产生与z平行的东西,然后绕z旋转不会改变矢量,因此您会得到与z平行的东西。相反,围绕z的第一个90度旋转会产生与y平行的东西,然后围绕y旋转不会对其产生影响。因此,您有一个与z平行的东西和另一个与y平行的东西。

© www.soinside.com 2019 - 2024. All rights reserved.