Действительно ли формула Родрига действительна только для малых углов?
Я пытался сначала повернуть вектор (1,0,0)
вокруг оси y, а затем вокруг оси z, используя формулу Родригеса из Википедии (https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula).
Первый поворот на 10 градусов вокруг оси y выглядит нормально (v_r1 = 0.984807753012208 0 -0.173648177666930
). Но если я поверну v_r1
10 градусов вокруг оси z, то я предполагаю, что компоненты y и z в v_r2
будут одинаковыми. Это касается небольших альфа- и бета-углов.
Но попробуйте увеличить альфа и бета до 60 градусов. Тогда v_r2
больше не имеет смысла.
Это заставляет меня задуматься: справедлива ли формула Родрига только для малых углов? И является ли формула Родригеса действительно точной или только предположительной?
Вы можете скопировать и вставить следующий код непосредственно в командное окно 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));
Спасибо вы.