Преобразуйте матрицу вращения в углы Эйлера zyz (y zyz (y~zyz~ (y соглашение)) аналитически.

Матрица поворота угла Эйлера Z Д Z является:

р г 1 "=" [ потому что ( ψ ) , грех ( ψ ) , 0 ; грех ( ψ ) , потому что ( ψ ) , 0 ; 0 , 0 , 1 ] ;
р у "=" [ потому что ( θ ) , 0 , грех ( θ ) ; 0 , 1 , 0 ; грех ( θ ) , 0 , потому что ( θ ) ] ;
р г 2 "=" [ потому что ( ф ) , грех ( ф ) , 0 ; грех ( ф ) , потому что ( ф ) , 0 ; 0 , 0 , 1 ] ;
р "=" р г 1 * р у * р г 2   ;
р "=" [ потому что ф потому что θ потому что ψ грех ф грех ψ грех ф потому что θ потому что ψ + потому что ф грех ψ грех θ потому что ψ потому что ф потому что θ грех ψ грех ф потому что ψ грех ф потому что θ грех ψ + потому что ф потому что ψ грех θ грех ψ потому что ф грех θ грех ф грех θ потому что θ ]
Но если у меня есть матрица вращения R2, ​​и я хочу получить угол Эйлера в Z Д Z   ( Д соглашение ) Я не могу найти, как это сделать точно.

для других углов Эйлера есть решение, например, см.:

http://www.gregslabaugh.net/publications/euler.pdf

Почему следующее дает мне неправильный ответ при расчете в Matlab:

ф "=" загар ( р ( 3 , 2 ) р ( 3 , 1 ) ) ;     θ "=" акос ( р ( 3 , 3 ) ) ;     Ψ "=" загар ( р ( 2 , 3 ) р ( 1 , 3 ) )

Я начал с уравнений MathJax, пожалуйста, исправьте их, чтобы они были красивыми и понятными. После этого мы можем обсудить поиск решения.
В приведенной вами статье используется метод деления некоторых членов матрицы, чтобы сократить члены и получить удобные выражения для углов. Сможете ли вы найти такие деления для решения углов в этом случае?
да, я это сейчас написал, но если протестировать на матлабе, то не получится, не могу понять почему
Хорошо, вы нашли формулы! Помните, что обратные тригонометрические функции являются многозначными функциями, и поэтому программе может быть трудно решить, какое решение вам нужно. Хороший подход состоит в том, чтобы ограничить каждый угол 180 + 180 . Каковы были исходные углы, которые вы использовали, и какие углы вы получили?
Я взял извлеченные углы Эйлера и снова использовал их для создания матрицы вращения, но теперь эта новая матрица вращения поворачивает вектор v иначе, чем исходная матрица вращения, как это возможно?
Не видя вашего кода, невозможно сказать. Я думаю, что математика работает. То есть уравнения извлечения, которые вы написали, выглядят правильно. На вашем месте я бы проверил только математическую часть без каких-либо визуализаций. Попробуйте установить некоторые значения для углов, затем вычислите матрицу, а затем попробуйте извлечь углы. Вы получаете те же углы, с которых начали? Если нет, то исследуйте, где может быть ошибка.

Ответы (2)

Самый простой подход к правильному извлечению углов Эйлера из матрицы поворота для любой последовательности углов заключается в использовании а т а н 2 функция. В конце концов, это сделано так же (и, возможно, также объяснено, почему) в тексте, который вы связали. Обратите внимание, что по сравнению с другими обратными тригонометрическими функциями, а т а н 2 имеет диапазон ( π , π ] (полный круг).

В вашем случае о г - у - г вращение, если грех θ 0 , затем

ф "=" а т а н 2 ( р 32 , р 31 ) , ψ "=" а т а н 2 ( р 23 , р 13 ) .
Мы можем получить θ угол от последней строки или последнего столбца р . Например, рассматривая последнюю строку р , у нас есть
р 31 потому что ф + р 32 грех ф "=" грех θ ( потому что 2 ф + грех 2 ф ) "=" грех θ
так
θ "=" а т а н 2 ( р 31 потому что ф + р 32 грех ф , р 33 ) .

Чтобы эти углы Эйлера были корректно определены, условие грех θ 0 требуется (т. θ к π , к е Z ). В противном случае, например, если θ "=" 0 , два г -углы не определены однозначно.

Когда вы знаете тангенс угла, существует неопределенность полуоборота угла.

Я рекомендую избегать использования арккосинуса и предпочесть арктангенс, с

загар θ "=" ( потому что ф грех θ ) 2 + ( грех ф грех θ ) 2 потому что θ .
Остерегайтесь, что это опускает знак грех θ .

После получения углов подключите их обратно, чтобы сравнить с исходной матрицей и отрегулировать квадранты. (Извините, у меня нет времени заниматься полным обсуждением.)