Преобразование вектора нормали объекта после линейного преобразования самого объекта
Первоисточник откуда была получена основа рассуждений, но рассуждения не повторяют этих выкладок
http://www.cs.uaf.edu/2007/spring/cs481/lecture/01_23_matrices.html
http://steps3d.narod.ru/tutorials/normal-transform-tutorial.html
Рассмотрим преобразование вектора нормали
после применения к объекту, содержащего эту нормаль, линейного оператора M.
Сделаем достаточно простое утверждение: если для изначального объекта выполнялось
, то данное равенство должно сохраниться для векторов после преобразования:
Где N - пока неизвестное нам преобразование вектора нормали. Можно потребовать равенству не только нулю, но и произвольной константе. В том смысле, что преобразование сохраняет значение скалярного произведения векторов.
Скалярное произведение можно рассматривать как операция умножения матрицы-вектора-строчки и матрицы-вектора-столбца. Операция умножения матриц является ассоциативной. Учитывая всё выше сказанное получим:
Какой бы не была бы матрица N дожно быть выолнено
Таким образом
Мы сохраняем значение скалярного произведения нормали в точке и вектора от одной точки объекта к другой. Если M сохраняет норму вектора то результирующий вектор нормали после воздействия оператором N нормализовывать не надо, но так бывает не всегда.
Хочется отметить, т.к.
=>
=>
Таким образом порядок вычисления обратной и транспонированной матрицы не имеет значения