PavelK
@PavelK

Как разобрать матрицу трансформации на состовляющие?

Приветствую!
Есть матрица 3х3, в ней только поворот и перемещение,
как её разобрать на составляющие?
т.е. получить обратно угол поворота и на сколько переместили?
  • Вопрос задан
  • 254 просмотра
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
Как я понял, твоя матрица 3×3 — это однородные координаты в 2D? Я бы поступил так.
1. Убедиться, что элементы 3-1 и 3-2 нули (иначе — это не аффинное преобразование).
2. Элемент 3-3 превратить в единицу, соответственно увеличив остальные (на что — читай, что такое однородные координаты).
3. Элементы 1-3 и 2-3 — перенос. Отрежем их, получается матрица 2×2.
4. То, что осталось, должно быть вида (c, s), (-s, c). Если с какой-то погрешностью это не так и 2-норма строк не единица (тоже с какой-то погрешностью) — это не поворот (т.е. может быть масштабирование или наклон). Остаётся взять atan2(c, s) — получается угол.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
RiseOfDeath
@RiseOfDeath
Диванный эксперт.
0_o

Я конечно о 3D графике имею слабое представление, но в афинных преобразованиях матрицы вроде бы 4х4/ (хотя, поидее, для 2D можно из матрицы выкинуть третью строку и третий столбец)

Вот хорошая статья, все разжевано:
compgraph.tpu.ru/3d.htm
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы