universidad autonoma metropolitana ...148.206.53.84/tesiuami/uam8261.pdfpara poder analizar y...

36
UNIVERSIDAD AUTONOMA METROPOLITANA IZTAPALAPA c AX’ PROYECTO TERMINAL I MANEJO DE GRAFICOS POR COMPUTADORA MAPEO DE TEXTURAS ’1 Responsable : Quiroz Burkiewicz Soledad Lucia. Asesor : Rene Mackinney Romero. Licenkiatura : Computación. Septiembre, 1992.

Upload: nguyenthu

Post on 21-Sep-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD AUTONOMA METROPOLITANA

IZTAPALAPA c A X ’

PROYECTO TERMINAL I

MANEJO DE GRAFICOS POR COMPUTADORA

MAPEO DE TEXTURAS ’1

Responsable : Quiroz Burkiewicz Soledad Lucia.

Asesor : Rene Mackinney Romero.

Licenkiatura : Computación.

Septiembre, 1992.

r/ Introducci6n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

Justificación Matemática y Definiciones . . . . . . . . . . . . . . . . . . . . 15

Descripción Funcional del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 28

Estructuras de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Notación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Bibliografla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

- 1 -

INTRODUCCION.

La graficación por computadora es una herramienta de la computación que sirve para representar y crear imágenes mediante el adecuado manejo de la información y de los recursos de cómputo.Sin embargo, esta definici6n no abarca el amplio campo de accidn que tiene y la aportación tan importante que a significado al campo de la computación en los últimos afios.

La historia de la graficación por computadora comenzó mucho después con respecto a la historia de la computacion en general.Las computadoras de la primera a la tercera generación contaban con muy pocas capacidades gráficas.la información se mandaba principalmente desde y hacia la computadora en forma de datos numéricos o alfabéticos. Existían dos razones primordiales que hacían de la utilizacidn de presentaciones gráficas algo impráctico y poco usual :

- Los ambientes de tiempo compartido de los años 7 0 ’ s no eran adecuados para la graficación.Los requerimientos de procesamiento simultáneo de varios usuarios de gráficas hubiera producido efectos catastr6ficos en los intervalos de respuesta de los demás usuarios de sistema.

- El costo de estos sistemas de presentación era exorbitante, al punto de que raras veces podía justificarse su adquisicibn.

Toda esta serie de inconvenientes se vieron solventados en los afios 80’s con la introducción de las microcomputadoras.Estas tienen varias ventajas : el bajo costo de los microprocesadores y las memorias y, principalmente, el dejar de ser una computadora compartida por varios usuarios.

Sin embargo, esto no significa que para realizar graficación por computadora,basta con adquirir un sistema de presentación gráfica.La realidad es más compleja.Existen sistemas, hardware y software, en los que se puede realizar graficación, pero a nivel relativamente sencillo y bastante econ6mico.Si se quieren ampliar estos sistemas, se requiere que un programador de aplicaciones realice programas gráficos adicionales .Por otra parte, existen estaciones de graficacibn,cuyo hardware y software están realizados con tecnología de punta,en extremo complejas y muy costosas.

Dentro de la categorfa de los sistemas sencillos para graficación, se pueden lograr cosas de bastante calidad y de suficiente complejidad corno para merecer que se les estudie detalladamente.Precisamente, el desarrollo de este proyecto se cimenta en los sistemas relativamente sencillos de graficación, teniendo como hardware a la IBM P C y como lenguaje de programaci6n C para el software gráfico a desarrollar.

- 2 -

- _I_* e- - -- ” _

Para poder analizar y entender las aplicaciones de la graficación por computadora, es conveniente que veamos cdmo surgid ésta.

Breve Historia de In Graficacidn por Computadora.

Hasta antes de 1950, nadie habfa pensado en utilizar un tubo de rayos catódicos (TRC) o presentación tipo televisión en una computadora.Esto surgió por la necesidad de agilizar la interacción de la entrada del usuario y la salida de la computadora, ya que antes del TRC, para examinar los resultados de la computadora, era necesario revisar largas pilas de papel con impresiones alfanum6ricas.La primera computadora en utilizar esta innovación fue la Whirlwind, contruida en el Instituto Tecnológico de Massachusetts (MIT).

El sistema para la defensa espacial SAGE de los años cincuenta convertía los sonidos de detección de un radar en rudimentarias imágenes generadas por computadora.Este sistema fue el primero en emplear un lápiz óptico.

I

A finales de los años cincuenta y principios de los sesentas, el MIT se dio activamente a la tarea de investigar y construir una computadora propia.De aquí surgió, en 1963,la influencia más importante en el mundo de la graficación por computadora : la tesis doctoral de Ivan Sutherland.Esta consistía en un sistema de trazado de rectas Sketchpad, el cual permitía al usuario dibujar. por medio de una indicación sobre la pantalla,con un lápiz 6ptico.Con este sistema se podían dibujar figuras poligonales complejas resultado de réplicas de objetos I

simples.Este sistema gráfico fue el precursor de los sistemas de graficación modernos.El trabajo de Ivan Sutherland en este campo, permite llamarlo el "padre" de la computacidn gráfica, tras haber diseñado algunos de los mejores algoritmos y estructuras de datos en los que se basa la graficación por computadora.

Los primeros TRC podían trazar lfnes rectas entre dos puntos en la pantalla.Pero como la línea se desvanecía rápidamente, era necesario redibujarla varias veces por segund0.A principios de los años sesenta esto era muy costoso, ya que eran necesarios tener dispositivos de memoria para almacenar los extremos de la recta y hardware para redibujarla de inmediato.El alto costo de estos dispositivos ocasionó que muchas instalaciones de computadoras se vieran imposibilitadas para incursionar en el campo de la graficación.

En 1968, Tektronix introdujo al mercado el TRC con tubo de almacenamiento, el cual retiene permanentemente un dibujo hasta que el usuario lo borra.Este hizo innecesaria la utilización de dispositivos costosos de memoria y hardware, haciendo la graficación más accesible a la economía del consumidor.

En la primera mitad de los setentas, con el surgimiento de la cuarta generacidn de computadoras, los costos de unidades lógicas, memoria y

hardware se redujeron notablemente. Esto permitió la actual proliferación de sistemas de presentación por barrido con memoria,en los cuales se pueden reproducir en un ambiente interactivo imágenes con una alta definición de color y un amplio rango de combinacidn de luces que permiten tener diferentes intensidades de sombreado lo que da como resultado una apariencia muy realista.

Toda esta serie de adelantos tecnológicos que mejoraron el hardware de las computadoras, se vio respaldado, como ya se mencionó, con los importantes trabajos de Ivan Sutherland. Otros trabajos precursores de gran importancia fueron l o s de Steven Coons (1966) y Pierre Bezier (1972). con superficies curvas, que zanjaron el camino para la generación interactiva en computadora de imágenes tridimensionales realistas.

En los íiltimos diez años,varias personas han trabajado intensamente en este campo.logrando una serie de adelantos muy significativos que han colocado a la graficacidn por computadora como una de las áreas de desarrollo más importantes de la computacidn.

Después de haber estudiado los antecedentes históricos de la graficaciOn por computadora, es clara la necesidad de estudiar un poco más a fondo algunos aspectos técnicos que van ligados estrechamente con el software.¿Cuáles son estos aspectos?.

Para poder representar una imágen en una computadora con la creación de un software de aplicación, es indispensable conocer las caractéristicas físicas que permiten la representación de imágenes y así aprovechar al 100% la capacidad del hardware con el que se está trabajando.

Siaternas Gráficos Interactivos

La forma de representar gráficas en l a computadora se divide en dos clasificaciones : gráficas pasivas o estáticas y gráficas dinámicas o interactivas-Las gráficas estdticas, son aquellas que se generan en un dispositivo de impresión; en estos casos es normal que el usuario tenga que esperar unos minutos mientras se forma la imagen en la impresora. Las gráficas interactivas, son aquellas que se generan en pantalla y que el usuario está modificando constantemente, dándole la impresión de que cambian en el momento en que acciona un dispositivo de contro1,el mouse; en estos casos el tiempo de respuesta que espera el usuario no puede ser largo, al contrario, tiene que ser casi inmediato.Las gráficas interactivas exigen un gran esfuerzo por parte de los sistemas gráficos.Entre más compleja y realista sea la imagen, más difícil es modificarla con rapidez.

Un sistema gráfico interactivo clásico, consta de cuatro componentes:

- La computadora. - El subsistema de generación de video para la pantalla. - Los dipositivos de entrada del usuario. - Los dispositivos de salida de impresión.

- 4 -

Obviamente, la computadora es la parte esencial de estos componentes A continuación se describirán : el subsistema de generacidn de video para la pantalla y l o s dispositivos de entrada del usuario.Sdl0 se tratarán estos ya que son l o s de más interés para los objetivos del proyecto.

Generacidn de Video para l a Presentación

La mayoría de las pantallas de video son del tipo TRC.El cafidn de electrones contiene un cátodo que, a l ser calentado, emite un haz de electrones cargados negativamente a través de una pantalla cubierta de fósforo cargada positivamente.En su trayectoria el haz de electrones pasa por un sistema de desviación y enfoque,el cual no es otra cosa que un campo electroestático o magnético.

El sistema de enfoque concentra el haz para que,en el instante en que los electrones alcancen la pantalla,converjan en un pequeño punto.El sistema de desviaci6n.que consta de dos pares de placas (horizontal y vertical1,dirige el haz de electrones a cualquier punto de la pantalla. Ambos pares de placas tienen niveles de tensidn iguales,pero de signos opuestos;esto es,uno tiene una carga positiva, y el otro una carga negativa.Cuando el electrón cargado negativamente penetra en las placas,es atraído a la placa cargada positivamente, causando la desviación del electr6n.El grado de desviacidn depende de la magnitud de la tensi6n en las placas.variando la tensi6n en las placas horizontales y verticales, el haz de electrones puede tocar cualquier punto de la pantalla.

Cuando este haz de electrones enfocado toca la pantalla,el fdsforo emite un destello de luz visible cuya intensidad depende del número de electrones contenidos en el haz.Un destello blanco en l a pantalla corresponde a una ausencia de, o muy pocos, electrones enviados a esa zona.La luz de la pantalla empieza a languidecer tan pronto como el haz se translada a otro punto.La duración de esta luz depende del tipo de f6sforo que envuelve la pantalla.Por lo comÚn,la luz visible dura s610 una fraccidn de segundo.8 fin de dar la apariencia de una imagen sin parapadeo,cada punto iluminado en la pantalla debe ser intensificado muchas veces por segundo.Este tipo de pantalla de video se conoce como TRC con mantenimiento.Existen dos tipos de mantenimiento : por barrido y por vectores aieatorios.El sistema por barrido es el más utilizado para la mayorfa de las microcomputadoras y para aplicaciones que requieren color y sombras.

Un TRC de color tiene tres cañones de electrones,uno para cada color que representa en la computadora a cada uno de los colores primarios, amaril10,rojo y verde, es tos colores son :rojo,verde y azul (RGB).Un sistema de cañones en delta dispone l o s tres cañones en un patrón triangular con una rejilla perforada de metal, o mdscara de sombras, colocada entre l o s cañones y la cara de l a pantalla de presentación. Cada pixel se compone a partir de un patrón triangular de puntos en rojo, varde y azul.Los orificios de la máscara de sombras se encuentran alineados para que cada cañón de electrones encienda el punto de fósforo correspondiente.

- 5 -

- _ * &I_ II_._.'

Mantenimiento por Barrido

La mayoría de las pantallas se dividen en una serie de pequeños puntos llamados pixeles (del inglés picture elements) o elementos de la imagen. El TRC es una rejilla de líneas verticales y horizontales en la que cada linea horizontal se compone de pixeles.Estas líneas se canocen como líneas de barrido y la presentaci61-1 de video se conoce como presentación por barrido.

La calidad de una presentación por barrido suele describirse de acuerdo a su resolucidn.La resolucibn se refiere a el número de líneas de barrido y al número de pixeles por línea,esto es,el número de puntos por unidad de área.Entre mayor sea la resolución, más detallada será la imagen resultante.Una alta resolución se refiere al menos a 1000 líneas de barrido con mds de 1000 pixeles por línea.

El sistema de barrido presenta la imagen en el TRC por medio de una secuencia predefinida.Al principio, las placas de desviación horizontal y vertical presentan un pixel en la esquina superior izquierda de la pantalla.Luego la. tensión de las placas horizontales cambia de manera continua, guiando el haz de electrones sobre la línea de barrido.Cuando el haz llega al final de la línea, el cafidn de electrones se apaga (sin haz visible) y ambos pares de placas de desviación envfan el haz al pixel de la extrema izquierda, en la segunda línea de barrido.La desaparicidn de l a señal de video se conoce como retorno horizontal. Esto continúa hasta que el haz de electrones alcanza la esquina inferior izquierda de la pantalla.En ese momento,el haz se apaga y es dirigido hacia la esquina superior izquierda de la pantalla, en un proceso llamado retorno vertical.

Como un punto de fbsforo iluminado emite luz sdlo durante una fracción de segundo, este patrón de barrido de izquierda a derecha y de arriba hacia abajo debe ejecutarse varias veces por segundo . La velocidad de mantenimiento es el número de imágenes completas en una pantalla durante un segundo.El tiempo transcurrido entre cada barrido se conoce como tiempo de cuadro.

Siempre que una imagen se despliega en pantalla, es necesario iluminar l o s pixeles apropiados.para que el hardware de presentación ilumine los pixeles apropiados, debe constar de tres partes : memoria de imagen,controlador de presentacidn y algoritmos de conversión por barrido.

Memoria de Imagen 147648 Cada pixel en pantalla corresponde a una entrada particular en una

matriz residente en memoria, esta se llama memoria de imagen o mapa de bits.Algunos sistemas gráficos cuentan con una memoria de imagen diferente de la memoria principal.El número de renglones de esta matriz corresponde al número de líneas de barrido en la pantalla y el número

de columnas corresponde al número de pixeles.Para poder accesar cada una de las entradas de la matriz, se utiliza un par coordenado entero ( x , y ) donde x es la columna y y el renglón.El origen de este par de coordenadas es en la esquina inferior izquierda de la pantalla.

Cada pixel en el arreglo en memoria consta de cierto número de bits.una imagen blanco y negro que sólo tiene dos niveles de intensidad, encendido .y apagado,tiene una memoria con un plano de un solo bit.Si se quiere desplegar una buena imagen de color o blanco y negro se necesitan planos adicionales de bits.una imagen blanco y negro con la calidad que se requiere en televisión necesita 8 planos de un bit, lo que da 2r',con n=8, o 256 niveles de intensidad.Los sistemas de color de alta calidad cuentan con memoria de imagen de hasta 24 planos. Cada uno de los tres colores primarios (RGB) utiliza 8 planos para dirigir su cañón de electrones,produciendo un total de 2"-16777216 colores,donde n-24.Una memoria de imagen a todo color con resolución de 512 X 512 requiere 512 X 512 X 24 = 6291456 bits de memoria (aproximadamente 787 Kbytes).

Conversi6n por Barrido

Es raro que una imagen se describa tal y como están los pixeles en memoria, sin nungún proceso intermedio.Por lo general para representar los pixeles en la pantalla se utilizan ecuaciones o descripciones gráficas, como "trazar una linea del punto A al B".La conversión por barrido es el proceso que convierte esta representación abstracta de una imagen en el valor apropiado para cada pixel en la memoria de imagen.Los sistemas gráficos complejos tienen un procesador de presentación que se encarga de esto.Los sistemas gráficos en microcomputadoras económicas utilizan la CPU y un conjunto de rutinas de software para realizar la conversión por barrido.Estos dltimos son más lentos y por consiguiente originan dificultades en la creación de un ambiente de tiempo real para el usuario.

Controlador de Video

Este dispositivo de hardware lee el contenido de la memoria de imagen y lo deposita en un buffer de video,para luego convertir la representación digital de una cadena de valores de pixeles en señales analógicas de tensidn que se envían en serie a la pantalla de video.El controlador de video realiza una iteración secuencia1 a lo largo de la memoria de imagen,satisfaciendo la velocidad de mantenimiento.

Diepositivoa de Entrada

El usuario de un sistema interactivo, utiliza ciertos dispositivos de entrada para hacer más natural y amigable,, el diálogo usuario - programa. Los dispositivos que existen son:

!

- 7 -

- -.--

- El teclado.Usado principalmente para introducir programas y datos a la computadora.Al oprimir una tecla se transmite un código único a la computadora.Existen varios tipos de código, pero los de utilización más general son los 128 códigos ASCII y 256 EBCDIC, los cuales se pueden utilizar para emitir respuestas diferentes en un programa gráfico.

- La peril1a.E~ un dispositivo para posicionarse en la pantalla.La perilla está conectada a un potenciómetro.Cuando la perilla gira,el potenciómetro envía una tensión a un convertidor analógico/digital (codificador),el cual transforma la tensión en un valor entero que se usa como valor de entrada en la computadora.Las perillas tienen un botón que al ser oprimido cambian un bit lógico de O a 1 para confirmar la operación realizada en la pantalla.

- La palanca de mando (joystick).Existen diferentes tipos de joystick, algunos son sencillos, tan solo van en dos direcciones, estos son los que se utilizan para juegos; a los que se hace referencia aquí son a los más complejos.Estos constan de una palanca conectada a dos potenciómetros y puede accionarse en cualquier dirección rotacional.Los potenciómetros proporcionan las coordenadas de un punto en la pantalla.

- El lápiz 6ptico.E~ un dispositivo con fotocelda que,cuando se activa oprimiendo la punta contra la pantalla,devuelve a la computadora la posición del pixel iluminado en ese campo visual.Lo que en realidad se envía a la computadora es el tiempo de duración del ciclo de mantenimiento del controlador de video cuando el pixel es desplegado.De esta información, la computadora puede determonar la posición del pixel en pantalla.

- El mouse.Es un dipositivo de uso manual que explota la coordinación natural entre los ojos y las manos, pues permite escoger los objetos de manera cómoda en la pantalla.El mouse tiene dos ruedas perpendiculares en aparte de abajo conectadas a dos potenciómetros respectivamente.El movimiento en pantal la del cursor de mouse, devuelve las respectivas coordenadas de donde se encuentre y los botones de selección introducen valores binarios de 1 o O para confirmar o cancelar una operación respectivamente.

- La tableta gráfica.Es una superficie plana conectada a un cursor manual o plumilla.La superficie de la tableta presenta un sistema de coordenadas similar al de la pantalla.Con el cursor o plumilla se traza sobre la tableta de manera similar como el lápiz en el papel.Las coordenadas se transmiten cuando el usuario ejerce presión sobre la tableta con la plumilla.

_I Digitalización de imágenes. En muchas ocasiones los usuarios de sistemas grdficos requieren realizar su trabajo basándose en una imagen real, es decir, necesitan aplicar tratamientos gráficos mediante computadora a imágenes tomadas del mundo real (la fotografía de una persona por ejemplo).Para lograr esto, algunos paquetes de software de pintura y diseño, ofrecen entre sus opciones, la de poder digitalizar una imagen ya sea directamente de una cámara de video o de una cinta de video.Digitalizar significa codificar una señal analógica, es decir, convertir una señal continua a una representacidn discreta, a bits.

- 8 -

Obviamente, para lograr esto, es necesario disponer también del hardware necesario para convertir la señal analógica que manda la cámara o la máquina de video en una señal digital la cuál es captada y guardada por la computadora.

De este modo ya se tiene almacenada en la computadora la imagen y se le puede tratar como si fuera una pintura creada originalmente en la computadora por el usuario.Resulta natural, que del mismo modo como se puede captar una imagen real en la computadora, se puede mandar cualquier tipo de imagen de la computadora a una cinta de video.Este tipo de dispositivos de entrada salida, son especialmente Útiles para los usuarios cuya aplicación gráfica está encaminada hacia la animación de objetos y personas, ya que se pueden crear o tratar en la computadora cada una de las imágenes pertenecientes a una secuencia animada para después ser transferidas una por una a la máquina de video; al correr la cinta de video ya grabada lo que resulta es una animacidn en tiempo real de las imágenes que originalmente fueron digitalizadas y tratadas o creadas en la computadora.Por ejemplo.Para poder realizar un segundo de animación en televisión, es necesario real izar 30 imágenes ,más comunmente 1 lamadas "cuadros", que describan la secuencia deseada en ese segundo.De este modo, si quisiéramos tratar las imágenes en computadora, se tendrían que dibujar o digitalizar y retocar 30 cuadros para posteriormente mandarlos a la máquina de video y asf obtener un segundo de secuencia animada.Hay que aclarar que existe una gran diversidad de software que proporcionando los parámetros y la imagen inicial necesarios,son capaces de generar toda una secuencia de animación al gusto del usuario.Esto se va a ver con detalle más adelante.

Aplicaciones de In Graficacidn por Computadora

Como es de imaginarse, después de leer todos los antecedentes la graficación y su situación actual, las aplicaciones son realmente variadas y diversas.

A continuación, se mencionan algunas de las aplicaciones más significativas :

- Diseño asistido por computadora(CAD).Es un término general que se le da a todos los sistemas que ayudan al diseño de un producto.Los sistemas CAD tienen varias aplicaciones : ayudan a los ingenieros de diseño a crear y modificar aeronaves y automóviles,se utilizan para cintas animadas,anuncios de televisi6n y efectos especiales en películas.En este tipo de sistemas, primero se realiza un esbozo del dibujo, como un alambrado (wireframe) y luego se va detallando (darle color y sombras) la figura hasta que queda en la forma deseada.Este tipo de sistemas son de una gran complejidad, requieren un estudio muy amplio del tipo de hardware para el cual se va a diseñar el sistema (la tarjeta gráfica a la cual va dirigido, el tipo de computadora en la que va interactuar dicha tarjeta) además de una serie de estudios teóricos que involucran principalmente a las matemáticas y a la física (con diversos grados de complejidad) as1 como el dominio de algún lenguaje computacional de alto nivel propio para el desarrollo de software

- 9 -

gráfico.Actualmente, este tipo de sistemas están en su "época de oro", los requerimientos de efectos especiales por computadora para películas y para cualquier tipo de publicidad son, hoy en día, los más solicitados, tanto, que se a declarado una franca competencia por hacer cada día mejores sistemas que ofrezcan al usuario imágenes más realistas y de mayor complejidad.

- Sistemas de Diseño Gráfico y pintura.Proporcionan tabletas gráficas que reproducen de manera aproximada la superficie de dibujo y pintado, al igual que una plumilla.Se le ofrece al usuario funciones que hacen las veces de pinceles y una paleta de color, para que pueda combinar y manipular los colores como s i lo estuviera haciendo de manera natural.

- Sistemas simu1adores.Existen varios tipos de simuladores según el campo de aplicación para el que estén diseñados.Hay simuladores, por ejemplo, que reproducen las ondas de choque de terremotos o explosiones para que se puedan establecer pronósticos acerca de las consecuencias de vivir una situación así y tomar las medidas de seguridad necesarias. Otro tipo de simuladores muy demandados son los simuladores de vuelo. Estos sistemas ayudan para que los pilotos de aeroplanos y astronautas sean entrenados.los simuladores de tiempo real utilizan varios procesadores de propósito especial y múltiples pantallas a fin de proporcionar al entrenado una perspectiva real de 180 grados.los simuladores reproducen aeropuertos, pistas, condiciones atmosférica, aterrizajes, despegues, etc.

- Instrucción asistida por computadora (CAI).Utilizan secuencias animadas para ilustrar conceptos educacionales.El software desarrollado para la educación, se auxilia de la graficación por computadora para ilustrar ejemplos de una manera mds tangible para el usuario permitiéndole a este una mejor comprensión de lo que está aprendiendo.

- 1nterfaces.Con el surgimiento de los gráficos,ya de un modo más accesible,las presentaciones y manejo del software, en general, es mucho más sencillo y vistoso, proporcionando así un método más natural para el aprendizaje de paquetes y sistemas.

- Otras aplicaciones importantes consisten en el uso de la graficación por computadora para que mediante imágenes se puedan estudiar y visualizar situaciones que no estan al alcance de los ojos humanos, por ejemplo : en biomédica , medicina, geografía, geología, antropología, etc.Estas ramas de la ciencia han podido ver y recontruir imágenes antes inalcanzables gracias a la graficación por computadora.

Es importante mencionar que alguno sistemas de diseño gráfico proveen ayuda para el procesamiento de imágenes. El procesamiento de imágenes es la técnica de graficacidn que se usa para producir despliegues visuales a partir de fotografías o exploraciones de TV.Los métodos de procesamiento de imágenes difieren de los métodos convencionales de

gráficas de computadora.En las gráficas de computadora tradicionales, una computadora se usa para crear la imagen.Las técnicas de procesamiento de imágenes, usan una computadora para digitalizar los

- 10 -

modelos de sombreado y color a partir de una imagen ya existente.Esta técnica sirve para poder visualizar más a detalle los aspectos de las imágenes e imprimirles más rea1ismo.E~ así, como algunos sistemas de diseño gráfico y pintura entre sus opciones para relizar dibujos, ofrecen la opción de digitalizar la imagen, para que posteriormente el mismo pintor o diseñador realice con el mismo sistema modificaciones y mejoras a la imagen ya digitalizada.

Software de Sistemas Grdfícos

El software que se ha desarrollado para sistemas gráficos juega, indudablemente, un papel fundamental en los avances-realizados en la graficacidn por computadora.Conforme ha pasado el tiempo existe software más sofisticado y eficiente a costos más bajos; esto ha permitido que el campo de los gráficos por computadora este cada vez al alcance de más personas.

Pero como en todos los casos en que surge alguna innovación tecnológica o científica que se empieza a utilizar a nivel mundia1,es necesario establecer una serie de estándares para tratar de lograr un avance ordenado.En un campo como el de la computación es dificil establecer estándares en ciertos aspectos.En 1979 el Graphics Standard Committee (GSPC),en un intento por normar el software de graficación en Estados Unidos, diseñó el Core Graphics System, con el objeto de proporcionar las capacidades necesarias para lograr sistemas de despliegue gráfico tridimencionales interactivos de alto rendimiento. Actualmente existen más de 200 O00 usuarios de sistemas de tipo CORE.Pero cada sistema difiere de los demás dificultando, entre otras cosas, la portabilidad de l o s programas.

Al mismo tiempo en - la antigua - Alemania Occidental, la organización de estándares de ese país, cred su estádar para graficación conocido como Graphical Kernel System (GKS).El GKS cuenta con excelentes posibilidades para graficación bidimencional, pero carece de capacidades para imágenes tridimencionales.Actualmente, se trata de unificar el CORE y el GKS en un estándar único.

Lo cierto es que, estandarizado o no, el software gráfico crece y seguirá creciendo a un paso acelerado.Pero ¿Quiénes logran este crecimiento?.Existen varios factores:

- La creciente demanda de las diversas áreas de aplicacidn y el surgimiento de otras nuevas.

- El acelerado desarrollo de hardware más eficiente y económico asf como de software de base que facilita el desarrollo de aplicaciones de alto nivel cuya complejidad cada vez es mayor.

- La utilización y creación de modelos matemáticos apropiados, algoritmos y estructuras de datos que hacen posible la construcción de aplicaciones con el nivel de sofisticación que el mercado demanda.

- 11 -

__ -

Descripcidn del Proyecto

Después de esta serie de antecedentes y aclaraciones, se esta en posibilidad de proveer una descripción más detallada del proyecto. ¿Qué es un mapeo de textura?.

De una manera sencilla, puede definirse como la función de acoplar a una superficie cualquiera una textura determinada.Por ejemplo,se podría pensar en una superficie cilíndrica plana (sin color y sin relieves), un mapeo de textura sería "forrar" esa superficie con un papel decorativo,aquí se podría decir que se mapeo a la superficie cilíndrica una textura de papel decorativo.

Transladando este ejemplo a términos de gráficos por computadora:la idea es mapear una imagen plana (bidimensional) arbitraria,que ocupa toda la pantalla o parte de ella, ya sea video real (imagen digitalizada , por ejemplo la fotograffa de alguien) o una imagen creada en la computadora; a una imagen gráfica en la computadora, bidimensional o tridimensional, cuya superficie puede ser cualquiera (cilíndrica, circular, senoida1,etc.).

El proyecto consiste en crear un sistema para que un usuario sin conocimientos de programación de cualquiera de las áreas de aplicación, pueda crear superficies arbitrarias mapeadas con texturas arbitrarias que a la vez también puedan ser animadas, es decir, realizar el mapeo en varios pasos, no tener s610 dos imágenes la inicial (sin mapeo) y la final (con mapeo), sino, tener una serie de imágenes intermedias donde se pueda ir apreciando el cambio paulatino de la imagen original a la mapeada. Crear estas imágenes intermedias y verlas luego en forma secuencia1 de la original a la final, es lo que crea el efecto de animación.

La imagen original con la textura no tiene que ser necesariamente plana, se puede partir de una superficie arbitraria a otra animando el mapeo de textura a través de los cambios de superficie.

Para lograr este efecto animado se va a utilizar como base matemática el método de interpolación de spline.Más adelante se detallará en qué consiste este método y por qué se decidió utilizar para el desarrollo del proyecto.

Aplicaciones Específícaa del Proyecto

Las aplicaciones son muy diversas, a continuación s e mencionan algunas :

- Publicidad. Es un sistema que va a proporcionar un tipo de efecto visual que bien se puede usar para fines publicitarios o para el complemento de efectos especiales en televisión.

- Educación. Se puede emplear como complemento de las gráficas que utilizan los softwares educativos para explicar el comportamiento de algunos fendmenos ffsicos o el comportamiento de algunas funciones

- 12 -

matemáticas o simplemente para darle más lucimiento al software.

- Arquitectura e Ing. Civil. Para la realización de maquetas más

- Medicina. Para poder describir visualmente tipos de superficies complejas y como se forman, por ejemplo, la reproducción celular.

- Geografía. Para describir con mejor exactitud la formación de cordilleras, montañas, islas, continentes, etc.

La aplicación principal del proyecto es que un experto en alguna área específica de aplicación pueda utilizar este sistema en un momento dado como auxiliar para hacer llegar el modelo mental de lo que está concibiendo a alguien que no necesariamente domine el área de este experto (a un neófito en el tema1.E~ decir, el sistema será un auxiliar para la creación de imágenes que pretendan describir un modelo en particular o como un efecto de animación complementario en alguna secuencia animada la cual puede tener fines publicitarios o educacionales , principalmente.

reales.

Software y Hardware

- El software que se va a utilizar, es un paquete de diseño gráfico y pintura llamado TIPS32.Este paquete va a servir de auxiliar en la creación de las imágenes originales que se van a mapear y para digitalizar imágenes de video real (TV) que también serán utilizadas para el mapeo.Este es un software especial diseñado para funcionar sobre la tarjeta gráfica TARGA.

Con respecto a el software que se utilizará para la implementación del sistema,se aplicará un lenguaje de alto nivel : C .Las razones por las que se decidió trabajar en este lenguaje son:

- Algunas de las primitivas para la interfaz con la tarjeta ya han sido programadas previamente : manejo del mapa de bits de memoria, interfaz con el digitalizador, colocar un pixel en pantalla, cargar una imagen en pantalla, limpiar la pantalla, etc.

- Por tratarse de un lenguaje funcional y lo suficientemente completo para poder realizar varias acciones con el máximo aprovechamiento de la optimización de cbdigo.

- Por tener una infraestructura de tres años en el manejo del lenguaje.

- Dentro del hardware figura principalmente el uso de la tarjeta gráfica TARGA.Esta una tarjeta gráfica que es utilizada para crear imágenes cuya resolución satisfaga los requerimientos de las imágenes televisivas.TARGA maneja 16 777 216 colores utilizando monitores de una

- 13 -

. -

resolución de 511 columnas por 481 renglones, es decir un total de 245791 pixeles en los que se encuentra subdividida toda la pantalla.La computadora a la que se le va a anexar la tarjeta gráfica, es una PC AT procesador 286 que tiene una velocidad de 16 MHz, 1 Mb de memoria RAM y una capacidad en disco duro de 300 Mb.El dispositivo de entrada es una tableta gráfica con cursor manual.

- 14 -

-

JUSTIFICACION MATEMATICA Y

Interpolacidn

DEFINICIONES

A lo largo de la descripción del proyecto se a mencionado que uno de los papeles principales en el funcionamiento del mismo está a cargo del método de interpolación de spline.Pero ¿Por qué spline?.Para entender el por que de la selección de éste método es necesario realizar un breve estudio de los métodos de interpolación existentes.

1nterpolación.En su definición matemática interpolar es : "asignar a una cantidad un valor intermedio entre dos valores directamente calculados u observados".De un modo más simple, interpolar es obtener una función que ajuste datos dados.

Los métodos más comunes para realizar esta estimacidn de valores intermedios entre valores conocidos utilizan polinomios aproximantes.

Hay que recordar que la fórmula general de un polinomio de n-ésimo orden es :

f(x) = a0 + alx + aSxz + . . . + aNxn (1)

Donde n es un entero no negativo y aO, . . . , aN son constantes reales.la importancia de este tipo de polinomios es que aproximan uniformemente funciones continuas;esto es,dada una función definida y continua en un intervalo cerrado, existe un polinomio que está tan "cerca" de la función dada como se desee.Este resultado se expresa con exactitud en el siguiente teorema:

Teorema de Aproximaci6n de Weieratrasa.Si f está definida y es continua en [a,bl, dado epsilon > 0,existe un polinomio P, definido en [a,bl, con la propiedad de que

If(x)-P(x)l < epsilon para toda x E [a,bl

Otro aspecto importante para considerar la clase de polinomios en la aproximación de funciones es que es sencillo determinar la derivada y la integral indefinida de cualquier polinomio y el resultado es otra vez un polinomio.

Ahora bien,el teorema de Weierstrass es muy bueno desde el punto de vista teórico pero no sirve mucho para fines computacionales ya aplicados.para esto, existen diferentes tipos de métodos para obtener polinomios aproxímantea :

- Métodos que incluyen sólo la información de un punto.

- Métodos que incluyen la información de más de un punto. Los polinomios aproximantes que coinciden con una función dada y con

algunas de sus derivadas en un único punto,son útiles sobre intervalos pequeños, para funciones cuyas derivadas existen y son fáciles de evaluar, este es el caso de los polinomios de Taylor :

-. 15 -

el cual tiene un residuo o término de error,

para algún número 7 ( x ) entre x y x0. Este polinomio P coincidirá con una función f en el punto x0

precisamente cuando P(x0) = f(xO).El polinomio tendrá también la misma "dirección" que la función f en (xO,f(xO)) si P'(x0) = f'(xO).De manera similar, el polinomio de enésimo grado que mejor aproxima a la función f cerca de x0 tendrá tantas derivadas en x0 como sea posible que coincidan con las de f.

Se podría pensar que para obtener mejores aproximaciones bastaría con utilizar polinomios de Taylor de grado mayor,esto no siempre es el caso.La razón por la que esta técnica de aproximación falla es que el término del error,

crece en valor absoluto conforme n crece para l o s Casos en que la x calculada no está "lo suficientemente cerca" de x0.

Despues de haber analizado lo anterior, existen dos razones poderosas por las que no se utilizarán polinomios de Taylor o polinomios que se basan en la información de un punto :

- El grado de error es muy susceptible a crecer. - Para los fines del proyecto, es necesario que la aproximación que

se calcule tome en cuenta todos los puntos que intervienen en la curva y no sólo un punto, ya que las imágenes a mapear necesitan adaptarse completamente (pixel por pixel) a la malla que describe la superficie.

Es claro entonces, que ahora hay que centrar nuestra atención en los métodos que incluyen la información de más de un punto para el cálculo de l o s polinomios aproximantes.

Si tenemos la f6rmula general de un polinomio de n-ésimo orden :

f ( x ) = a0 + al x + a2 x2 + . . . + an xn

Para n+l puntos, existe uno y a610 un polinomio de n-bsimo orden o menor que pasa a traves de todos los puntos.Por ejemplo,hay sólo una línea recta (es decir, un polinomio de primer orden) que conecta dos

- 16 -

puntos.De manera similar hay sólo una parábola que conecta a tres puntos.En este caso el polinomio de aproximacidn consiste en determinar el único polinomio de n-ésimo orden que se ajusta a los n+l puntos dados.Este polinomio proporciona una fórmula para calcular las valores intermedios.

Entre los métodos más eficientes y que se pueden adaptar en una computadora, se encuentran dos : el de Newton y el de Lagrange.

Polinomios de Interpolacidn con Diferencias Divididas de Newton

Los métodos para determinar la representación explícita de un polinomio interpolante a partir de datos tabulados se conocen como métodos de diferencia dividida.

El polinomio de interpolación (aproximación) con diferencias divididas de Newton,entre otros, es la forma más útil y popular de expresar un polinomio de interpolaci6n.Con el fin de entender mejor la ecuación general, antes de presentarla, se van a mostrar las versiones de primero y segundo orden.

Interpolacidn Lineal

La forma más simple de interpolación es la de conectar dos puntos con una línea recta.Este método llamado interpolación lineal, tiene la siguiente fórmula :

La notación fl(x) indica que se trata de un polinomio de interpolación de primer orden.Además de representar la pendiente de la línea que conecta los dos puntos, el término [f(xl)-f(xO)]/(x1-~0) es una aproximaci6n de diferencias divididas finitas a la primera derivada. En general, entre más pequeño sea el intervalo entre los puntos, más exacta será la aproximación.

Interpolaci6n Cuadrática

Si se disponen de tres datos, se puede llevar a cabo una aproximación con um polinomio de segundo orden.La ecuacion es :

Donde los coeficientes se calculan como :

Se evalúa fZ(x) con x=xO y se obtiene

- 17 -

Se sustituye bO en f2(x) y se evalúa con x=xl

f(x1) - f(x0)

xl - xo bl =

Se sustituyen bo y bl en f2(x) con x=x2

f (x2)-f (xl) f(Xl)-f(XO)

x2 - xl xl - xo

x2 - xo

- b2 =

Forma General de los polinomioa de Interpolacidn de Newton

Después de lo que se ha visto, es fácil entender que el polinomio de n-ésimo orden es :

fn(x) = bO + bl(x - x0) + . . . + bn(x - xO)(x - xl) . . . (x - xn-1)

Donde los coeficientes se obtienen de igual manera que en caso anterior :

bl = f[xl,xOl

b2 = f[xS,Xl,XOI

bn = f[xn,xn-1, . . . , x1,xOl en donde las evaluaciones de la función entre corchetes son diferencias divididas finitas.por ejemplo,la primera diferencia dividida finita s e representa generalmente como :

f(xi) - f(xj)

xi - xj f[xi,xjl =

La segunda diferencia dividida como :

f[xi,xjl - f[xj,xkl

xi - xk f [xi,xj,xkl =

- 18 -

,

La n-ésima diferencia dividida finita es :

f[xn,xn-1, . . . , xl] - f[xn-1,xn-2, . . . , x01 xn - x0

f[xn,xn-1, . . . , x1,xOI =

Estas diferencias se utilizan para calcular los coeficientes desde bo hasta bn, los cuales se sustituyen en la ecuación fn(x) para obtener el polinomio de interpolación :

fn(x) = f(x0) + (x-x0)f [xl,xOl + (x-x0) (x-xllf [x2,xl,xOl + . . . + (x-xO)(x-xl) . . . (x-xn-l)f[xn,xn-1, . . . , x01

Se debe hacer incapié en que no es necesario que los datos usados en la ecuación están igualmente espaciados o que l o s valores de la abscisa necesariamente se encuentren en orden ascendente.

Al igual que el polinomio de Taylor, en Newton se puede calcular el error, pero como aquí por lo general no se va a tener una fórmula de la función conocida y diferenciable, se tiene una forma alternativa de calcular el error.Se usa una diferencia dividida finita que aproxima la (n+l)-ésima derivada.De este modo se puede obtener una aproximaci6n del error como :

Rn = f[xn+l,xn,xn-1, . . . , xOl(x-xO)(x-xl) . . . (x-xn)

Polinomios de Interpolaci6n de Lagrange

El polinomio de interpolacidn de Lagrange,simplemente es una reformulación del polinomio de Newton que evita los cálculos de las diferencias divididas.Éste se puede representar concretamente c6mo :

en donde : n x - x j

j-O xi - xj j f i

Li(x) = T

en donde a denota el "producto de".

Al igual que el método de Newton, la versión de Lagrange tiene un error aproximado, dado por:

- 19 -

n

i-O Rn = f[x,xn,xn-1, . . . , x0l a (x-xi)

La razón fundamental de la formulación de Lagrange se puede comprender directamente notando que cada término Li(x) será 1 en x = xi y O en todos l o s demás puntos.por lo tanto, cada producto Li(x)f(xi) toma un valor de f(xi) en el punto xi.Por consiguiente la sumatoria de todos los productos, dada por la ecuación 2 es el único polinomio de n-ésimo orden que pasa exactamente por los n + 1 puntos.

Lagrange al igual que Newton no necesita sus datos igualmente espaciados.

En resumen para los casos en donde el orden del polinomio se desconozca, el método de Newton tiene ventajas debido a que profundiza en el comportamiento de las diferentes fórmulas de orden superior.Desde el punto de vista cálculo a menudo se prefiere el método de Newton.

Cuando se va a llevar a cabo una sóla interpolación, ambos métodos, el de Newton y el de Lagrange requieren de un esfuerzo de cálculo similar.Sin embargo, la versión de Lagrange es más fácil de programar.También existen casos en donde l a forma de Newton es más susceptible a los errores de redondeo.Debido a esto y a que no requiere calcular y almacenar diferencias divididas, la forma de Lagrange se usa, a menudo, cuando el orden del polinomio se conoce a

Sin embargo, y a pesar de todas las maravillas que pueden representar l o s métodos de Newton y Lagrange,ei ajuste de curvas que se necesita en este caso en particular para lograr un delineamiento fiel y suave de la superficie representada por la malla, requiere todavía de mayor exactitud.Es obvio que en el momento de mapear la textura a una superficie se requiere que la imagen conserve toda la naturalidad y plasticidad que se espera de una secuencia animada.Para conservar esa fluidez, no se puede estar expuesto a cambios abruptos en las curvaturas que no tengan nada que ver con la animación.Este es el problema principal.Lograr la exactitud y l a suavidad necesarias. Es aquí donde se recurre a un método de interpolacidn que ofrece ese grado de seguridad :

Interpolación Segmentaria (Spline)

Con los métodos anteriores se usaron polinomios de n-ésimo orden para interpolar entre n + 1 puntos.Por ejemplo,en ocho puntos.se deriva un polinomio perfecto de séptimo orden.Esta curva captura todos los serpenteos (al menos considera hasta derivadas de séptimo orden) sugeridos por los puntos.sin embargo, existen casos en donde estas funciones pueden llevar a resultados err6neos.Una alternativa es la de aplicar polinomios de orden inferior a subconjuntos de datos.Estos

- 20 -

I

polinomios conectados se llaman funciones de interpolación segmentaria (en ingles spline functions).

las curvas de tercer orden empleadas para conectar cada par de datos se llaman funcionesde interpolación cúbica segmentaria (cubic spline).Estas funciones tienen la propiedad adicional de que las conexiones entre eciaciones cúbicas adyacentes son visualmente suaves. Superficialmente parece que la aproximación segmentaria de tercer orden es inferior a la expresión de séptimo orden.Entonces ¿Por qué la interpolación segmentaria siempre es preferible?.

Con los métodos anteriores los polinomios de orden anterior tienden a balancearse a través de oscilaciones bruscas en la vecindad de un cambio abrupto.En contraste la interpolación segmentaria también conecta a los puntos, pero como está limitada a cambios de tercer orden, las oscilaciones se mantienen mínimas.De ahí que la interpolación segmentaria proporcione una aproximación superior del comportamiento de las funciones que tienen cambios locales abruptos.

El concepto de interpolación segmentaria se originó de la técnica de uso de una lámina de plástico delgada (llamada curvígrafo, en inglés spline) en el trazo de curvas suaves a través de un conjunto de puntos.En esta técnica, coloca papel sobre un tablero de madera y clava tachuelas en el papel (y en el tablero) en la posición de los datos.Al pasar un hilo entre las tachuelas resulta una curva cúbica suave.De ahí que se halla adoptado el nombre de "interpolación segmentaria" (en inglés "cubic spline" 1 para polinomios de este tipo.

Antes de entrar de lleno a io que es l a interpolacidn cúbica segmentaria, se van a mostrar primero funciones lineales simples para introducir algunos conceptos, después se va a derivar un algoritmo para ajustar polinomios de segundo orden a los datos.Al final se entra en detalle con la interpolación cúbica segmentaria, la cual es la versión más común y Útil en la práctica de la ingeniería, y en este caso, del mapeo de texturas en particular.

Por ejemplo,

Interpolación Segmentaria Lineal

Como ya se sabe, la conexión más simple entre un par de puntos es una línea recta.Se pueden definir los polinomios interpolantes de primer orden mediante un conjunto de puntos ordenados y definirse como un conjunto de funciones lineales que unen a los puntos :

147648

- 21 -

~

xo i x L xl

xl 1. x L x2

en donde mi es la pendiente de la línea recta que une a los puntos:

f(xi+l) - f(xi)

xi+l - xi mi =

Estas ecuaciones se usan en la evalución de funciones de cualquier punto entre x0 y xn localizando primero el intervalo dentro del que se encuentra el punto.Después se usa l a ecuación apropiada y se determina el valor funcional dentro del intervalo.0bviamente el método es idéntico a la interpolación lineal.

La principal desventaja de los polinomios de primer orden es que no son uniforme.En esencia, en los puntos donde coinciden los polinomios (llamados nodos), la pendiente cambia abruptamente.En términos formales, la primera derivada de la funcidn es discontinua en estos puntos.Esta de deficiencia se supera con el uso de polinomios de orden superior, que aseguran uniformidad en los nodos igualando derivadas en esos puntos, esto lo veremos a continuación.

Interpolacidn Cuadrática Segmentaria

Este tipo de ”polinomios cudráticos” tienen la primera derivada continua en los nodos.Aunque los polinomios cuadrdticos no garantizan segundas derivadas iguales en los nodos,sirven muy bien para demostrar el procedimiento general en el desarrollo de polinomios interpolantes segmentarios de orden superior.

El objetivo de los polinomios cudráticos es el de obtener un polinomio de segundo orden para cada uno de los intervalos entre los puntos.El polinomio para cada uno de los intervalos se representa generalmente como :

fi(x) = ai x2 + bi x + ci ( 3 )

Para los n + 1 puntos ( i = Ci.1.2,. . .,n), existen n intervalos, y por lo tanto, 3n incdgnitas constantes por evaluar (las a, las b y l a s c).Por lo tanto, se requieren 3n ecuaciones o condiciones para evaluar las incógnitas.Estas son :

- 22 -

1.Los valores de las funciones deben ser iguales en 10s nodos interiores.Esta condición se representa mediante :

ai-1 xi-12 + bi-1 xi-1 + ci-1 = f(xi-1)

para i=2 hasta n.Cóm0 se usan s610 los nodos interiores, las ecuaciones anteriores proporcionan cada una n -1 condiciones, con un total de 2n - 2.

2. La primera y la última función deben pasar a través de los puntos finales.Esto agrega dos ecuaciones adicionales: I

I an xn2 + bn xn + cn = f(xn)

con un total de 2n -2 + 2 = 2n condiciones.

3.Las primeras derivadas de l o s nodos interiores deben ser iguales. La primera derivada en la ecuación 3 es :

f ' ( x ) = 2ax + b

Por lo tanto, la condición se representa generalmente cómo :

2ai-1 x i + bi-1 = 2ai xi + bi

para i-2 hasta n.Esto proporciona otras n - 1 condiciones con un total de 2n + n - 1 = 3n - 1.Debido a uqe hay 3n incognitas, se tiene una condición men0s.A menos que exista una información adicional en relación a las funciones o sus derivadas, se debe escoger arbitrariamente una condición para calcular eficientemente las constantes.Existen diferentes alternativas, aquí se propone una :

4. Se supone que la segunda derivada es cero en el primer punto.Ya que la segunda derivada de la ecuación 3 es 2ai esta condición se expresa matemáticamente cómo :

al = O

La interpretación visual de esta condición es que los primeros dos puntos se conectarán mediante una línea recta.

Interpolacidn Cñbica Segmentaria (Interpolación Cúbica de Trazador)

El objetivo de este tipo de interpolación, es obtener polinomios de tercer orden para cada uno de los intervalos entre nodos, de la forma :

fi(x) = ai x"3 + bi x2 + ci x + di

- 23 -

_-

Por lo tanto, para los n + 1 puntos (i = 0,1,2,. . .,XI), existen n intervalos y, por 10 tanto, 4n incógnitas constantes por evaluar.Cóm0 hay 4 constantes, existe la suficiente flexibilidad en el procedimiento de la interpolción cúbica para garantizar no solamente que la interpolante sea continuamente diferenciable en el intervalo, sino que tenga también una segunda derivada continua.En este caso se requieren 4n condiciones para evaluar las incógnitas :

1. Los valores de la función deben ser iguales en los nodos interiores (2n - 2 condiciones).

2. La primera y l a última funciones deben pasar a través de los puntos finales (2 condiciones).

3. Las primeras derivadas en los nodos interiores deben ser iguales (n - 1 condiciones).

4. Las segundas derivadas en los nodos interiores deben ser iguales (n - 1 condiciones).

5. Las segundas derivadas en los nodos finales son cero ( 2 condiciones).

Hay que hacer una importante explicación en el quinto punto.Las 2 condiciones que aquí se mencionan, son llamadas condiciones de frontera.Cuando estas condiciones son igual a cero, se dice que se tienen condicione8 de frontera libre y la interpolación se llama interpolaci6n segmentaria natural.Se llama así debido a que la interpretación visual de estas condiciones es que la función sea una línea recta en los nodos finales, es decir, el polinomio se comporta de una manera natural en estas partes.si estas condiciones no son cero, se dice que se tienen condiciones de frontera sujeta.

En general,, las condiciones de frontera sujeta llevan a aproximaciones más exactas ya que incluyen más informacidn acerca de la función; sin embargo, para que este tipo de condición a la frontera se implemente, es necesario tener, ya sea los valores de la derivada en los extremos, o una aproximación precisa de estos valores.lomo en nuestra aplicación en particular se desconocen estos valores, todas las implementaciones de este método se harán con condiciones de frontera libre.

A continuación, se muestran con una definición y notacibn matemática más formal las condiciones arriba planteadas.

Def. Dada una funcidn f definida en [a,bl y un conjunto de nUneros, llamado8 nodos, a = x0 < x l < . . . < xn = b, un interpolante cúbico segmentario , S, para f es una funcidn que satisface las siguientes condiciones :

- 24 -

P..

a) S es un polinomio cúbico, denotado Sj, en el subintervalo [xj,xj+ll para cada j = O,l, . . . , n-1;

b) S(xj)=f(xj) para cada j=O,l , . . . , n;

d) S'j+i(xj+l)=S'j(xj+l) para cada j=O,l, . . . , n-2;

f ) se satisface una del siguiente conjunto de condiciones de frontera :

( i ) S" (x0 1 =S" (xn) =O (frontera libre)

(ii) S'(xO)=f'(xO) y S'(xn)=f'(xn) (frontera sujeta)

Es importante para estar seguros de lo que se esta aplicando, mencionar el siguiente Toerema.

Si f ea una función definida en [a,b], entonces f tiene un Qnico interpolante cQbico segmentario natural, o eea un unico interpolante cQbico segmentario que satisface las condiciones de frontera libre S"(a) - S"(b) - O.

De este modo,, el problema de encontrar un polinomio que defina una serie de curvaturas suaves a través de un conjunto de puntos,queda resuelto con este método de interpolación cúbica segmentaria (o simplemente spline ) ; y no sólo eso, sino con la seguridad de que el polinomio que se encuentre es únic0.A continuación se describe el algoritmo de interpolaci6n cúbica segmentaria natural :

Algoritmo de Spline

Para construir el interpolante cúbico de segmentación S para la funci6n f, definida en los números x0 < xl < . . . < xn, y que satisface S " (x0) =S" (xn) =O :

ENTRADA n:xO,xl, . . . , xn; ya sea generar ai=f(xi) para i = O,l, . . . , n o dar ai para i = O , l , . . . , n.

SALIDA aj,bj,cj,dj, (los coeficientes de la ec.) para

( Nota:S(x)=Sj(x)=aj + bj(x-xj) + cJ(x-xj)"2 + dj(x-xj)"3 para j = O,l, . . . , n-1.

xj 2 x <. xj+l 1

Paso 1 Para i = O,l, . . . , n-1 tomar hi = xi+l - xi

- 2s -

Paso 2 Para i = 1,2, . . . , n-1 tomar

3[ai+l hi-1 - ai(xi+l - xi-1) + ai-1 hi1 hi-1 hi

ai =

Paso 3 Tomar LO = 1; (en los pasos 3,4,5 y parte del 6 hay que resolver hay que resolver un sistema lineal tridiagonal)

u0 = o; 20 = o.

Paso 4 Para i = 1,2 , . . . , n-1 tomar Li = 2(xi+l - xi-1) - hi-1 ui-1;

ui = hi/Li; zi = (ai - hi-1 zi-l)/Li.

Paso 5 Tomar Ln = 1; zn = O; cn = O.

Paso 6 Para j = n-1,n-2, . . . , 0 tomar cj = zj - uj cj+l;

bj = (aj+l - aj)/hj-hi(cj+l + 2cJ)/3; dj = (cj+l - cj)/(3hj).

Paso 7 SALIDA (aj,bj,cj,dj para j = O , l , . . . , n-1); PARAR

A continuación, para que no existan confuciones con el manejo del lenguaje, se dan las siguientes definiciones:

- Disolvencia . En su forma más simple, una disolvencia es pasar de un estado a otro "diluyendo" el primero para dar paso al segundo.En terminos de imdgenes una disolvencia es una interpolación de color pixel a pixel de una imagen a otra.

- Punto y Recta . Matemáticamente . El plano euclidiano (analítico), denotado por R2, es el espacio vectorial bidimensional V2 donde :

1) Los elementos ( x , y ) de V2 son los puntos de R2

2 ) Un conjunto L de puntos de R2 se llama recta si hay un punto PO = (x0,yO) E R2 y un vector no nulo a=(al,a2) E V2 tales que

L = { P O + t a ( t E R )

3) La distancia, escrita d(P1,PZ). desde P1 = (x1,yl) hasta P2=(x2,y2) es la longitud del vector de P1 a P2, es decir

d(Pl,P2) = (P2 - PI/ = <(X2-X1)2+(y2-y1)2 147648

I

- Superficie . De un modo simple, una superficie es la parte exterior de un cuerpo.No se considera conveniente ahondar en definiciones matemáticas ya que existen varias según el tipo de superficie de la que se esté hablando.Para nuestros fines esta definición un tanto intuitiva es suficiente.En caso de que no quedara claro, con el manejo del término a lo largo del desarrollo del proyecto es seguro que se comprenderd.

DESCRIPCION FUNCIONAL DEL PROYECTO

El sistema va contar con las siguientes opciones :

a) Mapear una sola imagen de una superficie inicial a una superficie final determinadas por el usuario.

E l usuario tendrá que proporcionar :

1) La imagen a tratar guardada en formato expandido,es decir la textura a mapear.

2) Se le van a presentar al usuario dos tipos de malla a escoger en el monitor : Homogénea (con el cuadriculado proporcional) Arbitraria (con el cuadriculado no proporcional).En la que escoja podrá modificar los puntos que corresponden a los

vértices del cuadriculado de la malla.Los puntos los podrán "estirar" segun sus necesidades para que forme la superficie que desea, esto lo podrá hacer interactivamente utilizando el mouse del digitalizador .De este modo proporciona la forma de la superficie inicial.

3) Igual que en el punto anterior, pero ahora debe proporcionar la forma de la superficie final.

4 ) El número de cuadros en el que desea que se realice la animación del mapeo con la superficie.

El sistema proporcionará :

Después de que el usuario haya definido lo anterior, el sistema le proporcionará ( si así lo desea ) una animacidn previa en wireframe del movimiento de la malla que va a contener la imagen a mapear, para que verifique si el movimiento resultante es el deseado.

b) Mapear una imagen inicial a otra u otras imágenes de una superficie inicial a una superficie final determinadas por el usuario.

El usuario proporcionará :

1) En orden de aparición, cada una de las imágenes (texturas) que van a intervenir en el mapeo, en formato expandido.

2) La forma de cada una de las superficies correspondientes a cada imagen (la malla de cada imagen).

3) El número de cuadros de transicien entre una imagen y otra; este número de cuadros sirve para dos cosas:

i) Es el número de cuadros para realizar la disolvencia entre una imagen y otra.

- 28 -

ii) Es el número de cuadros en el que se llega de una malla a otra.

El sistema proporcionará :

En caso de que el usuario lo desee, una animación previa en wireframe del movimiento conjunto de todas las mallas que intervienen en la animación.

La idea para lograr el mapeo, es trazar curvas que pasen por l o s vértices de las retículas, donde cada curva representa la fracción de imagen correspondiente a esa posicidn en la retícula.Precisamente para calcular estas curvas es que se va a utilizar el método de interpolación de spline.

ESTRUCTURAS DE DATOS

- Malla . Matriz que contiene l o s puntos de interseccion de la

- Barrspline . Arreglo que representa el barrido de la reticula (de arriba hacia abajo) donde de cada posición del arreglo cuelga una lista ligada que representa todos l o s puntos de la curva correspondientes a ese rengión de la retícula.Cada una de las retículas que se definan tiene su correspondiente Barrspline.

reticula que forma la malla.

- MallaAni . Arreglo que contiene cada uno de los vértices de la malla y de cada posición cuelga una lista ligada que contiene l a posicion de cada punto (verticel en cada uno de los cuadros de l a animación.

- Llaves-Img . Arreglo de registros, donde cada registro corresponde a cada una de las imágenes a tratar y cada registro guarda la siguiente información :

Nombre de la Imagen : Arreglo de caracteres. Mal la : apuntador a Malla. Num. de cuadros : entero. Barrspline : apuntador a Barrspline Ma 1 1 aAni : tipo MallaAni.

- 30 -

ALGORITMOS

Despues de la serie de explicaciones dadas, se está en condiciones de esbozar como se pretende que funcionen algunos de los algoritmos principales que intervienen en el sistema.

Spline

Como se analizó anteriormente, spline funciona bajo la condición de que los puntos que de finen la funcidn a aproximar son crecientes en x , es decir, x0 C xl < , . . . ,< xn.Esto puede representar un problema en el caso práctico del mapeo, ya que como los puntos se definen en orden arbitrario, no siempre se puede asegurar que xn > x0.

Una forma de solucionar este inconveniente es ”forzar“ a que las x ’ s sean siempre crecientes, sin alterar por eso la definición inicial de los puntos.para lograr esto se pens6 en introducir un “factor de tiempo“.Este factor se va a manejar como una información adicional de cada punto, es decir, si se tiene :

f(v,w) entoces a lo largo de la curva se tendrán una serie de

vl v2 v3 . . . vn wl w2 w3 . . . wn

donde cada uno va a tener asociado un tiempo

vl v2 v3 . . . vn tl t2 t3 . . . tn

wl w2 w3 . . . wn tl t2 t3 . . . tn

De este modo, para obtener la definición de la superficie delimitada por la curva, va a ser necesario aplicar spline tantas veces como varibles de f se tengan, para este ejemplo :

Spline se aplica dos veces por cada punto

el resultado se suma para obtener el punto.

spline de (t1,vl)

spline de (t1,wl)

Este factor de tiempo se va a manejar dentro del procedimiennto spline dependiendo la manera más conveniente (por ejemplo, podría ser un número que aumente de 5 en 5, el factor en que se va incrementar t dependerá de los resultados que se obtengan en la practica cuando se someta el algoritmo ya programado a diversas pruebas).

La implementación de spline que se va a realizar, estará basada en el análisis matemático que se desarrolló en la parte de “Interpolación” Se pretende que spline reciba los siguientes parámetros :

- 31 -

El arreglo de Puntos Clave de Entrada, son los puntos sobre la malla que se toman para delinear la curva (los puntos de los vérices que modifica el usuario),los Puntos de Interpolación de Salida es el conjunto de puntos que definen toda la curva, entre mayor sea el número de puntos más “cerrado” resultará el tejido de la malla.Este número de puntos se especifica en FacDe, que representa el ”factor de densidad”. De este modo, el usuario puede definir su animacidn sobre una malla que conste. por ejemplo, de 8 retículas (ya sea igualmente espaciadas o arbitrariamente) y se puede manejar internamente en el sistema la densidad del barrido y el ajuste de las curvas conservando el movimiento especificado por el usuari0.E~ claro que por más alta que se defina la densidad en spline, en la pantalla no se lograrán dibujar *

curvas propiamente.La forma de hacer esto es construir un procedimiento auxiliar que una mediante líneas las pequeñas separaciones que existen entre los puntos de interpolación de salida que devuelve spline, dando como resultado la delineación de una curva.

Basados en estos planteamientos, a continuacl6n se describen dos de los principales algoritmos del sistema :

Mapeo ( Numllave 1 / * llave en turno que se está tratando * /

comienza

/ * Cuando se utiliza este procedimiento, ya se debe tener definida la malla, es decir, la matriz malla ya contiene la informacidn de los puntos a interpolar * /

Para i=l hasta último reglón de Llaves-img[Numllave] .malla

comienza

Para j-1 hasta última columna de Llaves~img[Numllavel.malla

arreglo-temporal[i,jl <-- Llaves-img[Numllavel.malla[i,jl Spline(arreglo~temporal,Llaves_img[Numllavel.Barrspline(il,

Facde)

/ * ya que Barrspline[i] contiene todos los puntos que describen l a curva del renglón i-ésimo de la malla,se unen los puntos mediante lineas rectas las cuales van a estar formadas por l o s pixeles correspondientes a la imagen que se está mapeando * /

Mientras la lista ligada de Barrspline[il no se acabe haz

c omi 8 nza

puntoA < - elemento contenido en el nodo que se esta apuntando

puntoB < - elemento contenido en el nodo inmediato siguiente

termina

termina

termina

MovimientoMalla (llaveini,llavefin)

comienza

/ * para poder calcular el movimiento de la malla, se deben tener ya definidas las mallas así como el niimero de cuadros de movimiento que hay entre una y otra * /

k < - 1

Para i=l hasta último rengldn de la malla

Para j=l haata tiltima columna de la malla

comienza

arreglo-temporalS[l] < - Llaves~img[llaveinil.malla[i,jl

arreglo-temporalS[Sl <-- Llaves-img[llavefin].malla[i,j]

spline(arreglo~temporal2,Llaves~img[llaveinil.mallaAni[k], Llaves-img[llaveinil.#cuadros)

k++

/ * en este caso, s e coloca como factor de densidad el número de cuadros que hay entre una y otra malla, ya que es el niunero de puntos intermedios que queremos obtener que van a delimitar la posicidn de cada punto en cada cuadro de la animación (ahora el seguimiento de la animación hace las veces de “la curva” en los casos anteriores) */

termina

termina

- 33 -

De este modo, se concluye el planteamiento e investigaci6n de todas las bases teóricas necesarias para la adecuada comprensión del proyecto, tanto en su aspecto funcional como los alcances que tiene.

Esta investigacibn no es mas que la panacea para la realización del proyecto de una manera práctica, en la cual, el usuario pueda disponer de un sistema que de una manera sencilla y amigable le permita realizar mapeos de texturas en una secuencia animada.Esta implementación del sistema es el objetivo a cubrir en el Proyecto Terminal II.E1 tiempo que se estima para l a realizacidn de este sistema es de tres meses a partir del mes de Octubre de 1992.

NOTACION

XU . . . . Xn

aü . . . . an

mi

Se refiere a x sublndice O hasta x subíndice n.

Se refiere a a subíndice O hasta a subíndice n.

Significa m subíndice i.

Indica elevar a alguna potencia.