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  След.

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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