#opengl #graphics
Вопрос:
Если у меня есть 3 разные матрицы, одна для вращения (R), одна для перевода(T) и одна для масштабирования (S), как добиться обратного эффекта этих матриц, манипулируя той, которая их вызвала?
До сих пор я понял, что если я перенесу матрицу вращения, я достигну того, чего хочу (правильно ли это?). А как насчет двух других? И если есть общий способ, есть ли какие-то особые случаи, когда этих способов будет недостаточно?
Ответ №1:
Обратная матрица вращения R действительно является ее транспонированием R T.
Обратная матрица масштабирования S проста, так как содержит только диагональные элементы (первые три строки, так как последняя строка всегда равна (0 0 0 1)
).
Поэтому вы просто заменяете каждую диагональ s i на 1/s i.
Наконец, матрица перевода T является идентификационной матрицей с вектором перевода в последнем столбце. Обратное достигается заменой этих элементов на их отрицательные.
Также обратным произведению 3 матриц является обратное произведение
(S T R)-1 = R-1 T-1 S-1
Комментарии:
1. Спасибо за ваш ответ, а как насчет особых случаев, когда эти операции приведут не к обратному эффекту, а к другому странному эффекту. Я спрашиваю только потому, что нашел этот вопрос в листе упражнений.
2. Я не понимаю. О каком еще странном эффекте вы говорите?
3. я действительно не знаю , вопрос просто гласит: «как добиться обратного эффекта и каковы особые случаи, когда вашего решения будет недостаточно?