Преобразование двумерной матрицы вращения в угол Эйлера - PullRequest
2 голосов
/ 23 марта 2012

Как преобразовать матрицу вращения 2x2 в угол Эйлера? Матрица вращения:

{{.46, .89}, {.89, -.46}}

Википедия указывает мне, что двумерная матрица вращения принимает форму:

{{cos(a), -sin(a)}, {sin(a), cos(a)}}

Зная, что

{{cos(a), -sin(a)}, {sin(a), cos(a)}} = {{.46, .89}, {.89, -.46}}

Я вычислил

{{inverseCos(a), -invereSin(a)}, {invereSin(a), inverseCos(a)}}

чтобы получить (эти значения были преобразованы в градусы)

{{62.3, -62.3}, {62.3, 117.8}}

Что мне делать с этими числами? Разве они не должны быть равны? Вселенная больше не имеет смысла для меня.

Ответы [ 3 ]

4 голосов
/ 23 марта 2012

Ваша матрица не является чистым вращением.Первая и последняя записи отрицательны друг от друга и поэтому не могут быть равны косинусу некоторого угла.

Похоже, у вас на самом деле есть масштабная матрица, тоже умноженная на форму

{{1, 0}, {0, -1}}

Редактировать:

Из Википедия :

В этом случае диагональная матрица Σ определяется однозначнона M (хотя матрицы U и V - нет).

В вашем примере wolfram и U, и V имеют масштабную матрицу {{1,0}, {0, -1}} в них, которые, конечно, отменяют, оставляя чистые матрицы вращения.Насколько я понимаю, это был бы правильный выбор U и V, то есть разложение не уникально.

2 голосов
/ 23 марта 2012

Обратные тригонометрические функции возвращают одно значение, но есть два таких значения.

cos(a) = cos(-a) 

sin(a) = sin(PI - a)

В радианах, конечно.

Первое, что вы должны сделать, это использовать знакзначения для определения квадранта, в котором вы находитесь. Затем вы можете вычислить реальные значения.

Тот факт, что cos положительный, а синус отрицательный, означает, что вы имеете дело с углами в четвертом квадранте;между 3PI / 2 (270) и 2PI (360).

1 голос
/ 23 марта 2012

Он получен из разложения по сингулярным числам, любезно предоставленного wolfram

SVD дает вам две ортогональные матрицы (и диагональную матрицу собственных значений, конечно)Матрицы вращения - не единственные ортогональные матрицы.Вращение и последующее «переворот» (масштаб на -1 по одной оси) также ортогональны.Если вы хотите получить матрицу вращения из SVD, вы должны проверить наличие переворота и перевернуть матрицу в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...