Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Otro punto a tomar en cuenta cuando hablamos de matrices es el uso que se le da para las
transformaciones y la informática grafica donde el uso de las matrices es tan importante
como el uso de vectores y otras aplicaciones matemáticas.
En la estructura de datos para la programación, las matrices son de uso frecuente por lo que
podemos decir que son imprescindibles en la programación de muchos problemas.
Por ejemplo, las notas correspondientes a las distintas evaluaciones realizadas a cada uno de los
alumnos de un determinado curso forman una matriz, y la ficha que contiene los datos
personales de cada uno de estos alumnos es un ejemplo de registro (o estructura).
Esta disposición permitirá escribir código más simple, ya que será posible establecer bucles en
los que se recorra los elementos de una matriz mediante el número de índice.
A las matrices de una dimensión se les suele llamar también vectores o listas, y a las matrices de
dos dimensiones, tablas.
Es posible definir matrices de hasta 60 dimensiones en Visual Basic y de cualquier tipo de datos
(tipos fundamentales y estructuras definidas por el usuario).
La representación de las matrices se hace mediante variables con subíndices. Los subíndices son
números enteros consecutivos y, por defecto, el primer índice valdrá 0.
Una matriz de dos dimensiones se representa con una variable con dos subíndices (filas,
columnas). Una de tres con tres, etcétera.
Ejemplo de programación en C#
Puede almacenar distintas variables del mismo tipo en una estructura de datos de matriz. Para
declarar una matriz especifique el tipo de sus elementos.
type[] arrayName;
class PruebaMatriz
{
static void Main()
{
// Declarar una matriz simple
int[] array1 = new int[5];
// Sintaxis alternativa
int[] array3 = { 1, 2, 3, 4, 5, 6 };
// Set the values of the first array in the jagged array structure
jaggedArray[0] = new int[4] { 1, 2, 3, 4 };
}
}
Como vemos el uso de matrices en los lenguajes de programación es básico para la solución de
problemas, en este trabajo usaremos como ejemplo el lenguaje de programación C# que es
usado en la carrera de Ingenieria de Sistemas. Primero veremos la aplicación de las matrices en
objetos.
En C#, las matrices son de hecho objetos y no simplemente regiones direccionables de memoria
contigua como ocurre en C y C++. Array es el tipo base abstracto de todos los tipos de matrices.
Las propiedades y otros miembros de la clase Array se pueden utilizar cuando sea necesario.
Las matrices pueden tener varias dimensiones. Por ejemplo, la siguiente declaración crea una
matriz bidimensional de cuatro filas y dos columnas.
Como podemos ver La teoría de las matrices es ampliamente utilizada en la informática. Las
bibliotecas gráficas como por ejemplo OpenGL se valen de transformaciones espaciales y de las
matrices para representar gráficos 3D a 2D que luego se traducen a imagen en los monitores.
Para entender de mejor forma las transformaciones especiales y las matrices en OpenGL y el
uso de imágenes, hablaremos un poco de este.
La librería OpenGL intenta facilitar esta labor y conseguir el efecto deseado, OpenGL dispone
de un conjunto de primitivas que simplifican este proceso. En concreto, para aplicar una
transformación a un elemento, por ejemplo, un cubo, será necesario aplicar una transformación
a cada uno de los vértices que lo definen, multiplicando las coordenadas de dichos vértices por
la matriz de transformación adecuada.
Para conseguir los efectos perseguidos con la utilización de las transformaciones, se utilizan dos
matrices particulares, sobre las que se realizan modificaciones: la matriz del modelador y la
matriz de la proyección.
Supongamos un sistema definido por 26 vértices. En caso de trasladar cada uno de los vértices,
sería necesario realizar un total de 26 multiplicaciones, mientras que utilizando este método, tan
sólo se requeriría la traslación del sistema de coordenadas, manteniéndose constante la posición
de los 26 vértices de la figura. En este sentido, la matriz del modelador será una matriz
cuadrada (4x4) que se encargará de definir el nuevo sistema de coordenadas, que se utilizará
para representar los objetos que han sufrido una transformación. Al multiplicar dicha matriz por
la matriz columna que representa el vértice, se obtiene otra matriz columna, que representa las
nuevas coordenadas del vértice transformado.
Como se planteó en apartados anteriores, los efectos de las transformaciones son acumulativos,
con lo que, a menudo, será necesario reiniciar la matriz del modelador al estado inicial para
facilitar la comprensión de las mismas.
Sin embargo, no es necesario realizar siempre este proceso, ya que es posible mantener cada
uno de los efectos que las transformaciones tienen en el sistema de coordenadas. Esto es
especialmente útil en el caso de que se quieran recolocar objetos con respecto a estados
anteriores y volver al estado actual. Para ello se utiliza una pila de matrices como la que se
muestra en la figura, en la que se van almacenando de manera sucesiva las matrices que definen
el sistema de coordenadas en cada momento. De esta forma, se puede insertar la matriz actual
en la pila y aplicarle modificaciones, pudiendo recuperarla posteriormente, tal y como se
muestra:
Pila de matrices
En realidad, OpenGL dispone de una pila para matrices del modelador y de otra para matrices
de proyección, junto con una pila adicional para matrices de textura.
Las operaciones básicas que se pueden realizar sobre la pila de matrices son las siguientes:
Los sistemas de detección de rostros no podrían concebirse sin el aporte de las transformaciones
espaciales, vectoriales y de las matrices. Las técnica EigenFace se basa en los principios y
propiedades de las matrices cuadradas, de los autovalores, autovectores, matriz de covarianza, y
otros más para realizar los cálculos y predecir un rosto.
Esta técnica, EigenFace, puede incluso ser útil no sólo para rostros sino para cualquier objeto.
Lo fundamental es que todos los elementos que formen parte del conjunto de entrada tengan
cierta forma o patrón común. Por ejemplo, todos los rostros se caracterizan por tener una forma
más o menos normal: dos ojos, una boca, una nariz, etc. Si tú mezclas diferentes objetos no va a
saber diferenciar a uno de otro.
5. Conclusiones
Como pudimos ver, el uso de las matrices en la ingeniería informática es muy útil para
todo tipo de problemas, desde los más básicos como el ordenamiento o resolución de
ecuaciones simples, hasta el uso de las mismas en la trasformación de vectores y su uso
en librerías como OpenGL. Así como estos ejemplos existen otros programas y
problemas informáticos que requieren de todo tipo de matrices.
Para resolver sistemas de ecuaciones se emplean matrices, y gracias a ellas es como una
máquina puede resolver grandes operaciones y ecuaciones complejas en tiempo
relativamente cortos (dejando de lado los grandes sistemas de simulaciones)
En la programación lineal se emplea ampliamente los sistemas de ecuaciones e
inecuaciones. Estos, como ya he dicho se resuelven velozmente mediante matrices.
Esta misma técnica se emplea en los sistemas de tomas de decisiones o STD.
En los videos juegos y sistemas de simulación se emplean muchas veces para
representar de forma abstracta ciertas estructuras de datos que puedan representar
algunas entidades del dominio en estudio. Por ejemplo, se puede representar o concebir
el mapa de un terreno de un juego como una matriz.
6. Bibliografía
Informatica Grafica (Universidad de Salamanca) – OpenGL “Manipulación del
espacio: Transformaciones y proyecciones”
Estructura de Datos (Universidad de Vigo, departamento de Ingeniería
Informatica)
Representacion de Caras mediante EigenFaces – Luis Llorente Gimenez
http://es.wikipedia.org/wiki/Matriz#matriz_en_inform.C3.A1tica.