¿Por qué utilizamos la transposición inversa de una matriz?

Si solo tiene traslación, rotación y escala uniforme, entonces no necesita la transposición inversa, puede usar la submatriz superior izquierda 3 × 3 de la matriz del modelo (o matriz de vista del modelo), ya que por definición será ortonormal . Aunque tendrá que normalizar lo normal, de todos modos debería hacerlo por píxel 😉

Sin embargo, si tiene una inclinación o inclinación no uniforme, esto arruinará sus valores normales:

Imagen tomada de: Transformación normal

Queremos las normales en la última figura, pero si ingenuamente usamos la misma matriz de modelo que usamos para transformar la geometría, las normales también se aplastarán y apuntarán en la dirección incorrecta.

La transposición inversa proviene de la definición de lo normal. Definimos que la normalidad es perpendicular a la (s) tangente (s) de la superficie, es decir, el producto de punto con ellas debe ser igual a cero.

Y así, usando un poco de álgebra lineal:

Imagen tomada de: ¿Cuál es la lógica detrás de la transformación de las normales con la transposición de la inversa de la matriz de vista del modelo?

Un uso típico de la matriz de Transposición Inversa es para transformar vectores normales en aplicaciones de gráficos por computadora.

La cuestión es que las normales no son solo vectores : representan planos en [math] \ mathbb {R} ^ 3 [/ math] o líneas tangentes en [math] \ mathbb {R} ^ 2 [/ math]. Y una normal se utiliza para representar una restricción en el espacio establecida por un producto de puntos. Puede comprobar fácilmente que los vectores normales no se transforman de la forma en que lo hacen los vectores regulares: tome un cuadrado con origen en [math] (0,0) \ in \ mathbb {R} ^ 2 [/ math] y cualquier longitud de lado. Dibuja el vector normal de la cara superior. Luego, aplique una transformación de corte [matemática] T (x, y) = (x, y + sx), s \ in \ mathbb {R} ^ + [/ math] a los vértices del cuadrado. Notará que la cara superior original normal [matemática] (0,1) [/ matemática] permanecerá sin cambios. Pero la cara superior estará inclinada con una inclinación del coeficiente angular de [matemática] [/ matemática] Entonces, necesitamos encontrar qué transformación se necesita para transformar nuestros planos mundiales, para que la transformación los transforme adecuadamente. Si solo obtenemos puntos en el avión, los transformamos y esperamos que permanezcan en el avión después de una transformación general, la mayoría de las veces nos decepcionaremos (hay excepciones, y le mostraré cuáles son).

Entonces, busquemos qué transformación necesitamos para nuestras normales . Dado nuestro vector normal de plano [math] n [/ math], (supongamos por simplicidad que el plano contiene el origen, los cálculos son los mismos para un plano general). Lo que sabemos es que los vectores no transformados que están en el plano satisfacen [matemática] \ izquierda = 0 [/ matemática], donde [matemática] v \ in \ mathbb {R} ^ 3 [/ matemáticas] es un vector arbitrario. Llamemos a [math] M [/ math] nuestra transformación normal desconocida y [math] T [/ math] a nuestra conocida transformación vectorial y puntual conocida. Entonces, queremos que, después de la transformación, todavía tengamos [math] \ left = 0 [/ math] (después de todo, eso es lo que queremos cuando decimos que queremos transformar los planos correctamente).

Ahora usamos una propiedad simple de las matrices: multiplicar un vector desde la derecha es lo mismo que multiplicar el vector desde la izquierda usando la transposición de la matriz. Entonces, [matemáticas] \ left = \ left = 0. [/ math] Ahora, sabemos que [matemáticas] \ left = 0 [/ math], para todos los vectores en el plano. Por lo tanto, hay infinitas soluciones para esta ecuación, ya que cualquier múltiplo distinto de cero del vector [matemática] T ^ {T} Mn [/ matemática] estadisticará [matemática] \ left = 0. [/ math] Entonces tenemos [math] T ^ {T} Mn = \ lambda n \ implica T ^ {T} M = I [/ math] (elegir [math] \ lambda = 1 [/ math] will hazlo).

Pero entonces [matemáticas] T ^ {T} M = I \ implica M = (T ^ {T}) ^ {- 1} = T ^ {- T}. [/ Matemáticas]

Entonces, la transformación necesaria para transformar las normales correctamente es la inversa de la transposición de las transformaciones que transforman puntos y vectores, [matemática] M = T ^ {- T} [/ matemática], y ese es un uso común de la inversa de la transposición matriz en gráficos por computadora .

¿Cuáles son los casos especiales? Si [matemática] T ^ {T} = T ^ {- 1} [/ matemática], entonces [matemática] T ^ {- T} = T. [/ Matemática] Entonces, si su transformación es una rotación, entonces usted no ‘ No es necesario usar la inversa de la transposición, simplemente porque la inversa de la transposición es la misma transformación (de forma más genérica, siempre puede usar con seguridad la inversa de la transposición para transformar las normales para una transformación genérica, incluso rotaciones. Para vectores y puntos , solo usa la transformación original).