Формула Родригеса не точна? - PullRequest
0 голосов
/ 05 марта 2020

Действительно ли формула Родрига действительна только для малых углов?

Я пытался сначала повернуть вектор (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));

Спасибо вы.

1 Ответ

0 голосов
/ 05 марта 2020

Вращения в 3D не коммутативны. Ваше представление о том, что компоненты y и z должны быть одинаковыми, неверно. В пределе малых углов некоммутативность мала.

Подумайте о своем x-ориентированном векторе и выполняйте повороты на 90 градусов. Вращение вокруг y дает нечто параллельное z, а затем вращение вокруг z не меняет вектор, поэтому вы получаете что-то параллельное z. Делая это наоборот, первое вращение на 90 градусов вокруг z дает что-то параллельное y, а затем вращение вокруг y не влияет на это. Таким образом, у вас есть что-то параллельное с z в одном порядке и что-то параллельное с y для другого порядка.

...