У меня есть матрица вращения R:
R=[[-0.22247682, -0.32863132, -0.91788099],
[-0.01426572, -0.94027818, 0.34010798],
[-0.9748336 , 0.08876037, 0.20450194]]
и я хочу разложить это на три вращения, , где я рассматриваю повороты по часовой стрелке. Затем матрица вращения в терминах этих углов Эйлера определяется выражением
Затем я вычисляю , , и . В качестве двойной проверки я восстанавливаю матрицу R по этим углам Эйлера и нахожу следующее:
R'=[[ 0.22247682, 0.32863132, -0.91788099],
[ 0.01426572, 0.94027818, 0.34010798],
[ 0.9748336 , -0.08876037, 0.20450194]])
Все перепроверил, но не могу найти в чем проблема. Что я мог упустить?
Редактировать: оказывается, проблема с транспонированием была связана с тем, что в моем коде Python была проблема с индексацией. Однако проблемы со знаками все еще сохраняются. Я обновил матрицу R'
выше.
Я подтвердил выражение матрицы вращения, но я бы извлекал углы немного иначе, чем вы.
где atan2(dy,dx)
- арктангенс, охватывающий всю единичную окружность.
Реконструкция, таким образом,
R = RZ(1.2159450042115176)*RX(1.3648414591977873)*RZ(-1.4799948857740634)
1) Ваш расчет углов правильный, если не считать неопределенности в знаках.
От ты можешь вычесть . От ты можешь вычесть , и то же самое для .
Затем вы должны проверить предположения с другими элементами исходной матрицы.
Принимая затем и являются положительными. От и затем следует, что и оба будут отрицательными: поэтому .
Для признаки и верны.
2) Матрицы элементарного вращения, определенные в соответствии с этой статьей Википедии, поэтому предварительно умножаются, в частности, против часовой стрелки и вправо, являются
3) Применяя эти матрицы и скорректированные углы, я получаю, что
Результат, который вы получаете, помимо знаков, представляет собой транспонированную исходную матрицу, что означает, что, вероятно, вы используете неправильные элементарные матрицы.
Кабина G
нитрат натрия
амд
Джон Алексиу
нитрат натрия
Джон Алексиу
atan2(dx, dy)
и иногдаatan2(dy, dx)
.