2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Композиция трехмерных матриц поворота
Сообщение10.01.2018, 15:12 


12/10/11
68
Добрый день.
Столкнулся с задачей выписать выражение для композиции двух трехмерных вращений, выраженных в углах Эйлера. К сожалению, ответа в интернете и литературе мне найти не удалось, хотя казалось бы этот вопрос должен быть где-то обсужден... Выписав влоб произведение матриц $\mathbb{S}_1 \cdot \mathbb{S}_2$, получить хоть сколько-нибудь удобоваримые выражения для $\alpha_3, \beta_3, \gamma_3$ у меня не получилось:
$$
\mathbb{S}_3(\alpha_3, \beta_3, \gamma_3) = \mathbb{S}_1(\alpha_1, \beta_1, \gamma_1) \cdot \mathbb{S}_2(\alpha_2, \beta_2, \gamma_2)
$$

По поводу композиций вращений часто говорят в axis-angle представлении (извините, не встречал этот термин на русском). В этом представлении Родригес получил формулы, связыващие параметры составного поворота с параметрами исходных. Обозначим поворот, которому соотвествовала матрица Эйлера $\mathbb{S}_i(\alpha_i, \beta_i, \gamma_i)$, через $\mathbf{R}(\hat{\mathbf{n}}_i, \theta_i)$, $i = 1, 2, 3$.
$$
\cos \frac{\theta_3}{2} = \cos \frac{\theta_1}{2} \cos \frac{\theta_2}{2} - \sin \frac{\theta_1}{2} \sin \frac{\theta_2}{2} \cdot ( \hat{\mathbf{n}}_1, \hat{\mathbf{n}}_2 )
$$
$$
\sin \frac{\theta_3}{2} \hat{\mathbf{n}}_3 = \sin \frac{\theta_1}{2} \cos \frac{\theta_2}{2} \hat{\mathbf{n}}_1 + \cos \frac{\theta_1}{2} \sin \frac{\theta_2}{2} \hat{\mathbf{n}}_2 + \sin \frac{\theta_1}{2} \sin \frac{\theta_2}{2} \left[ \hat{\mathbf{n}}_1 \times \hat{\mathbf{n}}_2 \right]
$$

Поэтому у меня возникла идея попробовать выразить переписать первый и второй поворот из представления Эйлера в axis-angle представление, то есть выразить параметры $\hat{\mathbf{n}}_i, \theta_i$ через $\alpha_i, \beta_i, \gamma_i (i =1, 2)$. Затем подставить эти выражения в формулы Родригеса и затем вернуться в представление углов Эйлера.
Приведу формулы, которые позволяют получить параметры axis-angle представления с углами Эйлера:
$$
\cos \theta = -1 + 2 \cos^2 \frac{\beta}{2} \cos^2 \frac{1}{2} \left( \gamma + \alpha \right) 
$$
$$
\hat{\mathbf{n}} = \frac{\varepsilon}{\sqrt{\sin^2 \frac{\beta}{2} + \cos^2 \frac{\beta}{2} \sin^2 \frac{1}{2} \left( \gamma + \alpha \right)}} \times 
\begin{bmatrix}
\sin \frac{\beta}{2} \sin \frac{\gamma - \alpha}{2} \\
\sin \frac{\beta}{2} \cos \frac{\gamma - \alpha}{2} \\
\cos \frac{\beta}{2} \sin \frac{\gamma - \alpha}{2}
\end{bmatrix}
$$
$$
\varepsilon = sgn \left\{ \cos \frac{1}{2} \left( \gamma + \alpha \right) \cos \frac{\beta}{2} \right\}
$$

В итоге, до конца мне выкладки провести не удалось, я получил выражения для $\hat{\mathbf{n}}_3, \theta_3$ через углы Эйлера первого и второго поворотов. Но вот восстановить по ним углы Эйлера $\alpha_3, \beta_3, \gamma_3$ не получается. Если интересно, могу представить здесь полученные выражения, особой красотой они, правда, не отличаются..
Есть ли какой-то более изящный способ получить их?

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение10.01.2018, 16:23 
Заслуженный участник


27/04/09
28128
Вряд ли. Они будут явно страшные, :-( так что какой способ ни выбрать, где-то это страшнота должна появляться.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение10.01.2018, 17:29 
Заслуженный участник
Аватара пользователя


27/05/11
871
Задача о композиции 3-мерных вращений легко и красиво решается с помощью кватернионов или матриц Паули. Попробуйте использовать формулы перехода от кватернионов к углам Эйлера и обратно.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение15.01.2018, 01:03 


12/10/11
68
lek, спасибо за совет. Пришлось помучиться, но до обозримых выражений удалось дойти. Посмотрите, пожалуйста, документ, я уж не стану переписывать это все в местный Tex, надеюсь это не будет нарушением правил форума.
https://github.com/artfin/trajpdf/blob/ ... rnions.pdf

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение15.01.2018, 12:55 
Заслуженный участник
Аватара пользователя


27/05/11
871
Вычисления не проверял, но идейно все так. Итоговое выражение можно проверить с помощью Maple, например.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение15.01.2018, 18:14 


12/10/11
68
lek, как раз попытался максимально проделать эти вычисления в Maple, нашлось несколько ошибок в моих выкладках по ходу дела :oops: Выражения в документе обновил, проверил численно, все верно. А как следует двигаться, если набор углов 1 ($\alpha_1, \beta_1, \gamma_1$) определен не относительно изначальной системы, а относительно промежуточной системы, которая получается в результате действия $\mathbb{S}_2$ на изначальную систему?

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение15.01.2018, 19:48 
Заслуженный участник
Аватара пользователя


27/05/11
871
Если алгоритм не ясен, то упростите задачу. Рссмотрите вращения относительно одной фиксированной оси (например, оси $z$). Если подводных камней не будет, то этот же алгоритм можно будет использовать в общем (пространственном) случае.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 18:25 


12/10/11
68
Рассмотрим следующую схему. Пусть есть три системы координат $o_0 x_0 y_0 z_0$, $o_1 x_1 y_1 z_1$, $o_2 x_2 y_2 z_2$. Пусть есть некоторый вектор $p$, координаты которого в системах обозначаются $p^0$, $p^1$, $p^2$, соответственно. Пусть матрица $\mathbb{S}^0_1$ принимает координаты вектора в системе 1 и возвращает их в системе 0 (нижний индекс -- принимаемая система, верхний индекс -- возвращаемая система):
$$
p^0 = \mathbb{S}^0_1 p^1
$$
Аналогично, матрица $\mathbb{S}^1_2$ принимает координаты вектора в системе 2, возвращает их в системе 1:
$$
p^1 = \mathbb{S}^1_2 p^2
$$
Подставляя последнее уравнение в предыдущее:
$$
p^0 = \mathbb{S}^0_1 \mathbb{S}^1_2 p^2
$$
Произведение матриц получается действует как матрица $\mathbb{S}_0^2$ (в смысле переводит координаты вектора из 2ой системы в 0ую):
$$
\mathbb{S}_0^2 = \mathbb{S}_1^0 \mathbb{S}^1_2
$$
Приходим к уравнению, с которого был начат текущий пост, если каждую из матриц считать определенной набором эйлеровых углов. Считаем, что углы Эйлера $\mathbb{S}_1^2$ определены в системе 1, углы $\mathbb{S}_1^0$ -- в системе 0, а углы $\mathbb{S}_0^2$ -- также в системе 0, и связаны с двумя наборами углов при помощи полученных мною формул.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 18:34 
Заслуженный участник


27/04/09
28128
Только зря вы обозначили начала координат $o_1,o_2,o_3$ — они обязаны будут совпадать. (Можно включить параллельные переносы в матричное представление, но придётся брать матрицы 4×4, потому что по смыслу это будут матрицы операторов, сохраняющих некоторую аффинную гиперплоскость четырёхмерного линейного пространства, которая и будет предметом интереса вместо прежнего трёхмерного линейного пространства.)

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 18:39 
Заслуженный участник
Аватара пользователя


30/01/06
72407
artfin в сообщении #1284136 писал(а):

У меня вопрос к вашим соотношениям (5), (6), (7), которые производят обратный переход от компонентов кватерниона к углам Эйлера. Это, очевидно, не единственный возможный вариант. Может быть, стоит поискать способы попроще? Особенно с вычислительной точки зрения.

Например, мне кажется, что можно записать $\tg((\alpha-\gamma)/2)=q^1/q^0,$ $\tg((\alpha+\gamma)/2)=q^2/q^3,$ взять арктангенсы (следя за четвертью), и потом выразить углы из их полусуммы и полуразности.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 20:25 


12/10/11
68
Munin, а откуда берутся формулы $\displaystyle\tg \frac{\alpha -\gamma}{2} = \frac{q^1}{q^0}, \tg \frac{\alpha + \gamma}{2} = \frac{q^2}{q^3}$?
Из выписанных мною формул мне удалось получить:
$$
\tg (\alpha - \gamma) = \frac{2 q^1 q^2}{(q^1)^2 - (q^2)^2}, \quad \tg (\alpha + \gamma) = \frac{2 q^0 q^3}{(q^0)^2 - (q^3)^2}
$$
Воспользовался бы ими, если знал бы про них :-(
arseniiv, да, действительно, поправить, правда, уже не могу.

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 20:38 
Заслуженный участник
Аватара пользователя


30/01/06
72407
artfin в сообщении #1284750 писал(а):
а откуда берутся формулы $\displaystyle\tg \frac{\alpha -\gamma}{2} = \frac{q^1}{q^0}, \tg \frac{\alpha + \gamma}{2} = \frac{q^2}{q^3}$?

Из формул (2), выражающих компоненты кватерниона через углы Эйлера, обращением этих формул. А что, так нельзя было?

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 22:38 


12/10/11
68
Ой, да, не обратил внимание, что их можно напрямую получить из (2)..
Но ведь это сильно ничего не упростит.. Выпишу формулы для тангенсов полусуммы и полуразности $\alpha_3$ и $\gamma_3$:
$$
\tg \frac{\alpha_3 - \gamma_3}{2} = \frac{q^1}{q^0} = \dfrac{\sin \frac{\beta_1}{2} \sin \frac{\beta_2}{2}\cos \left( \frac{\alpha_1 - \gamma_1}{2} + \frac{\alpha_2 - \gamma_2}{2} \right) - \cos \frac{\beta_1}{2} \cos \frac{\beta_2}{2} \cos \left( \frac{\alpha_1 + \gamma_1}{2} - \frac{\alpha_2 + \gamma_2}{2} \right)}{\sin \frac{\beta_1}{2} \sin \frac{\beta_2}{2} \sin \left( \frac{\alpha_1 - \gamma_1}{2} + \frac{\alpha_2 - \gamma_2}{2} \right) + \cos \frac{\beta_1}{2} \cos \frac{\beta_2}{2} \sin \left( \frac{\alpha_1 + \gamma_1}{2} - \frac{\alpha_2 + \gamma_2}{2} \right)}
$$
$$
\tg \frac{\alpha_3 + \gamma_3}{2} = \frac{q^2}{q^3} = \frac{\sin \frac{\beta_1}{2} \cos \frac{\beta_2}{2} \sin \left( \frac{\alpha_2 + \gamma_2}{2} - \frac{\alpha_1 - \gamma_1}{2} \right) + \cos \frac{\beta_1}{2} \sin \frac{\beta_2}{2} \sin \left( \frac{\alpha_1 + \gamma_1}{2} + \frac{\alpha_2 - \gamma_2}{2} \right)}{\sin \frac{\beta_1}{2} \cos \frac{\beta_2}{2} \cos \left( \frac{\alpha_1 - \gamma_1}{2} - \frac{\alpha_2 + \gamma_2}{2} \right) + \cos \frac{\beta_1}{2} \sin \frac{\beta_2}{2} \cos \left( \frac{\alpha_1 + \gamma_1}{2} + \frac{\alpha_2 - \gamma_2}{2} \right)}
$$

Получаем выражение для $\alpha_3$, практически то самое, что я использовал. (Вот нашлась ошибка в самом начале...) Так вот откуда оно берется :D
$$
\alpha_3 = \arctg \frac{q^1}{q^0} + \arctg \frac{q^2}{q^3} = \arctg \frac{\frac{q^1}{q^0} + \frac{q^2}{q^3}}{1 - \frac{q^1}{q^0} \frac{q^2}{q^3}} = \arctg \frac{q^1 q^3 + q^0 q^2}{q^0 q^3 - q^1 q^2}
$$

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 22:41 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Так не надо сводить всё под знак одного арктангенса!

 Профиль  
                  
 
 Re: Композиция трехмерных матриц поворота
Сообщение16.01.2018, 22:49 


12/10/11
68
А что делать, если отдельные арктангенсы не расписать?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: ihq.pl


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group