Matrices
De IberOgre
Este texto corresponde al segundo artículo sobre matemáticas relacionadas con el desarrollo de videojuegos en 3D en IberOgre. Tras conocer los conceptos básicos como la representación de puntos en un espacio tridimensional y el papel que juegan los vectores en el modelado de mundos nos trasladamos hasta las matrices. En este artículo haremos un repaso por su definición, operaciones y aplicaciones directas. Se tratará de mostrar en todo momento la utilidad real y práctica de cada aspecto con el objetivo de ilustrar y amenizar la lectura.
Contenido |
Definición
Definimos una matriz como un vector rectangular de dimensión
cuyos elementos son números reales o escalares. Estos elementos se organizan
en filas (líneas horizontales) y columnas (líneas verticales). Se dice
que una matriz tiene dimensión
cuando consta de
filas y
columnas. Los elementos de la matriz son indexados
mediante su fila y su columna comenzando desde el número 1 (a pesar de que
varios lenguajes de programación comiencen por el 0). De esta manera,
es el elemento de la matriz
correspondiente
a la fila
y la columna
. Representamos a
las matrices con letras mayúsculas como
y mostramos su
contenido en una tabla rodeada por paréntesis.
Por ejemplo, sea la matriz
de dimensiones 3 x 3:
Aquellas matrices con mismo número de filas y columnas se las conoce como
matrices cuadradas. Decimos que
es una matriz cuadrada
de orden 3 cuando cuenta con 3 filas y 3 columnas.
Las matrices de orden 4, es decir, de tamañó 4 x 4 son las más útiles dentro del mundo del videojuego ya que son capaces de representar transformaciones lineales. Una matriz 4 x 4 puede contener información sobre el desplazamiento con respecto al origen, la escala y la rotación de un objeto en tres dimensiones. No es común que los usuarios de una biblioteca gráfica de alto nivel como Ogre trabajen con matrices de transformación pero es necesario saber que el propio motor hace un uso intensivo de las mismas. Las utiliza para renderizar objetos, hacer cálculos de iluminación, obtener la proyección de la cámara y un largo etcétera. No obstante, tampoco es extraño que el usuario se vea obligado a trabajar con estos conceptos en más de una ocasión, de ahí la importancia de comprenderlos.
Operaciones
En esta sección haremos un repaso por las operaciones más representativas de las matrices. En cada apartado trataremos de comentar alguna aplicación directa aunque muchas operaciones sirven como auxiliares de otras de mayor nivel. Deberías de recordar estos conceptos del instituto pero haremos la revisión en cualquier caso.
Suma de matrices
Para sumar dos matrices de dimensión
y
sumamos todos sus elementos de la forma
.
Nótese que ambas matrices deben tener las mismas dimensiones. Sean las matrices
cuadradas de orden 3
y
definimos su suma como:
La suma y resta de matrices cuenta con las siguientes propiedades:
- Asociatividad:
- Conmutatividad:
- Elemento neutro:
- Elemento opuesto:
Producto por un escalar
Dada una matriz
y un número escalar
se define
el producto de una matriz por un escalar como:
Esta operación consta de las siguientes propiedades:
- Clausura:
es una matriz.
- Asociatividad:
- Elemento neutro:
- Conmutatividad:
- Distributividad:
y
Si tenemos una matriz que representa una transformación de escala, podemos multiplicarla por un número real para aumentar o disminuir dicha escala.
Producto de matrices
Dadas dos matrices
y
se define su producto
matricial como una nueva matriz
tal que:
y
sólo pueden multiplicarse si el número
de colunas de
es igual al número de filas de
.
El producto matricial cuenta con las siguientes propiedades:
- Clausura:
es una nueva matriz.
- Elemento neutro:
siendo
la matriz identidad que veremos en la siguiente sección.
- Asociatividad:
- Distributividad con respecto a la suma: por la derecha
y por la izquierda
Como ya hemos mencionado anteriormente y veremos en detalle más adelante, una matriz puede representar una transformación (desplazamiento, escala y rotación). Podemos considerar el producto de matrices de transformación como la aplicación de dichas transformaciones en cadena. Podemos tener una escala a la que le aplicamos una rotación o un desplazamiento. De hecho, el resultado de esa operación se puede encadenar con una nueva transformación. Nótese que el producto matricial no es conmutativo, esto implica que el orden al aplicar las transformaciones es importante y altera el resultado.
Matriz identidad
La matriz identidad se la conoce y representa como
. Es una
matriz cuadrada de orden
cuyos elementos de la diagonal
principal (descendente de izquierda a derecha) son iguales a 1 y el resto
vale 0. Sea la matriz identidad de orden 3:
La matriz identidad destaca porque al ser multiplicada por otra, no altera
sus valores (elemento neutro para el producto matricial).
Matriz inversa
La inversa de una matriz
es una nueva matriz llamada
que deshace los efectos de
. Su propiedad más destacable es
que
. Esto significa que si tenemos una matriz
representando una rotación de 90 grados con respecto al eje x, podemos deshacer
sus efectos multiplicándola por su inversa. Incluso podemos deshacer una
serie de transformaciones multiplicando por las inversas de las matrices
que forman la secuencia en orden opuesto:
Es importante recalcar que no todas las matrices cuentan con inversas. No
obstante, todas aquellas que representan transformaciones (desplazamientos,
escalas y rotaciones) sí las tienen. No entraremos en los detalles de su
cálculo y demostraciones de sus propiedades, las bibliotecas matemáticas
que usarás ya incorporan dichos mecanismos.
Matriz transpuesta
La transpuesta de una matriz
es una nueva matriz denotada
por
cuyas filas corresponden a las columnas de la original
y viceversa. La operación se define como:
La propiedad más reseñable de la transpuesta de una matriz en relación
con el desarrollo de videojuegos es que la inversa de una matriz de
rotación (que no contenga otra transformación) es igual a su transpuesta.
Calcular la transpuesta es mucho más barato en tiempo computacional que
la inversa así que podemos utilizar esta operación en lugar de la inversa
cuando pueda aplicarse. De hecho, podemos deshacer un encadenamiento
de rotaciones utilizando la matriz transpuesta de la siguiente forma:
Transformaciones
Como ya hemos mencionado anteriormente, una matriz cuadrada de orden 4 puede representar una tranformación pura o producto de la concatenación de varias. Una transformación consta de un desplazamiento con respecto al origen de coordenadas, una escala (para aumentar o disminuir de tamaño) y una rotación con respecto a unos ejes de coordenadas arbitrarios. Todos los objetos de un videojuego tienen una transformación para localizarlos en el mundo que estamos representando. Cuando movemos un elemento, en realidad le estamos aplicando una transformación (producto de matrices). Esto indica la importancia de las transformaciones y las matrices en el desarrollo de videojuegos.
Las matrices de transformación pueden ser particionadas en los siguientes componentes:
- La matriz cuadrada de orden 3
representa la rotación y/o la escala.
- El vector
corresponde a la traslación (desplazamiento con respecto al origen).
- El vector nulo de tres elementos en vertical
corresponde a una zona de la matriz no utilizada.
- El escalar 1 en la esquina inferior derecha de la matriz tampoco es utilizado.
Desplazamiento
El desplazamiento viene dado por el vector
. En el siguiente
ejemplo, desplazaremos un punto
por
empleando
una matriz de transformación pura, es decir, representando sólo el desplazamiento,
sin rotación ni escala.
Podemos verlo de una forma esquematica siguiendo el ejemplo de particionado
anterior:
Para hacer la inversa de una transformación de desplazamiento pura, simplemente
invertimos el vector
.
Rotación
Todas las matrices de transformación de orden 4 que sólo contengan una rotación vienen dadas de la siguiente forma:
El vector de translación es nulo y la matriz superior izquierda de orden 3
contiene los cosenos y senos del ángulo de la rotación medidos
en radianes.
A continuación se muestra un ejemplo de rotación de
radianes
alrededor del eje
:
La siguiente matriz representa una rotación sobre el eje
en un ángulo
. Esta matriz es la transpuesta con respecto
a las demás, el seno positivo y negativo están reflejados con respecto a la
diagonal.
La última matrix representa una rotación de
radianes
alrededor del eje
:
Sobre las matrices de rotaciones cabe realizar varias observaciones:
- El 1 situado en la matriz 3x3 superior aparece en el eje sobre el que rotamos.
- Las rotaciones positivas van de
a
cuando giramos alrededor de
; de
a
cuando rotamos alrededor de
y de
a
cuando lo hacemos alrededor de
.
- Para rotar por un ángulo negativo, utilizamos la matriz transpuesta, esto nos sirve también para deshacer rotaciones. Recordemos que
y
.
Escala
La siguiente matriz se muestra como ejemplo de escala de un punto
por factores
de forma respectiva a los tres
ejes:
En su forma particionada:
De esto obtenemos varias observaciones:
- Para invertir una operación de escalado la realizamos de nuevo con la inversa de los componentes de
, es decir:
.
- A la operación de escalado que emplea el mismo factor en los tres ejes se la conoce como uniforme.
- Cuando combinamos rotación con escala, el orden de las operaciones importa a menos que el escalado sea uniforme.
Conclusiones
En este artículo hemos hecho un breve repaso por la definición y las operaciones más importantes que poseen las matrices. Así mismo, hemos visto la aplicación más evidente de las mismas en el mundo del videojuego, las transformaciones. Tras haber leído este artículo, debes mostrar cierta soltura a la hora de abordar documentación técnica al respecto. En los artículos de Ogre comprenderás los mecanismos y principios matemáticos que existen debajo de la interfaz de varias clases.

