bezier_computacion grafica

353
Introducci¶o n a la Computaci¶on Gra¯ca Claudio Delr ie ux Depart ame nto de Ingenier¶³a E lectr ica U nive rsidad Nac ional del Sur cl a ud i o @ ac m . o rg

Upload: saul-inca-najarro

Post on 26-Jan-2016

221 views

Category:

Documents


1 download

DESCRIPTION

saul

TRANSCRIPT

http://www.memi.umss.edu.bo/~mscinfo/cursos/graficos/apunte.pdf

Introduccion a laComputacion GracaClaudio Delrie ux Departame nto de Ingeniera Electrica Unive rsidad Nac ional del [email protected] objetivo de este texto es servir de apoyo al curso introductorio a la Computacion Graca a dictarse para el Postgrado en Informtica de la UMSS durante Agosto y Septiembre de 2000. El curso busca proveer un fundamento rme en el tema, tanto en la teora como en los aspectos de implementacion de sistemas gracos. La revolucion cultural producida por la aparicion de la Mac y la PC ha acelerado enormemente el contacto de estos temas al gran publico. En la actualidad es posible encontrar sistemas de Computacion Graca en aplicaciones de una gran diversidad, to dos los cuales tienen una base conceptual com un, la cual tratamos de cubrir aqu. Tambien se incluyen algunos tem as avanzados para orientar a los lectores inquietos hacia la bibliografa especializada.Hemos buscado adaptar los temas a un auditorio lo mas am plio posible. Cualquier graduado o alum no avanzado de Ingeniera, C iencias de la C omputacion o disciplinas anes debera poder abor- dar este texto sin inconvenientes. En particular, se requiere una base adecuada en program acionen alg

n lenguaje estructurado (hemos elegido Pascal) y conocimientos elementales de GeometraAnaltica. Los ejercicios sugeridos al nal de cada C aptulo tienen como objetivo orientar en la secuencia de construccion y uso de los distintos componentes de un sistema graco. L a resolucion de cada ejercicio, ademas, sirve de apoyo a la com prension de los temas teoricos.Agradecimient osEste texto es el resultado del esfuerzo y la colaboracion de m uchas personas desde que, en 1985, el Profesor Daniel Magni, del Departam ento de Ingeniera Electrica de la Universidad Nacional del Sur, propone y dicta por primera vez la materia optativa Sistemas de Programacion III, con un program a destinado especcamente al dictado de temas de Computacion Graca. Dicha materia ha sido dictada todos los a~nos desde entonces, y fue por mucho tiempo la unica materia de grado de Computacion Graca dictada en las Universidades de Argentina. En aquel entonces curse lamateria como alum no, al a

o siguiente colabore com o do cente alum no, y desde 1990 estoy a cargo

de su dictado. El crecimiento y mejora del grupo docente se debe fundamentalmente al esfuerzo y capacidad de los alumnos, que con su iniciativa y talento obligaron a~no tras a~no a una superacion constante de quienes estuvimos a cargo del dictado y de los traba jos practicos. De todos los docentes q ue aportaron con su paso por SPIII q uisiera agradecer especialm ente a Daniel Formica, Fernando Caba y Andres Repetto.Tambien deseo agradecer a quienes aportaron su colaboracion material q ue ay udo a mejorar la calidad y presentacion de este texto, en particular a Miguel Danzi, Silvia Castro, Andrea Silvetti y Gustavo Patow. Tambien se incluyen como ejemplos ilustrativos algunas guras realizadas a partir de im plem entaciones de Sebastian Urbicain Mario Carro y Jorge Anchuv idart. Se incluyen grandes partes de las notas de cursos dados en la Primera Escuela Internacional de Computacion (durante el CACiC'97, La Plata), la Escuela de Ciencias Informaticas (en la UBA, 1998), y en R IO 1999.Baha Blanca, Julio de 2000

Indice122.4.1 Discretizacion de circunferencias por DDA . . . . . . . . . . . . . . . . . . . 26

2.4.2 Discretizacion de Bressenham para circunferencias . . . . . . . . . . . . . . 29

2.5Discretizacion de Polgonos . .... .... .... ..................30

2.6Ejercicios . . . . . . . . . . . .... .... .... ..................33

2.7Bibliografa recomendada . . .... .... .... ..................34

34

566.6.1 Elim inacion de lneas ocultas en supercies funcionales . . . . . . . . . . . . 127

6.6.2 Clasicacion de los metodos generales . . . . . . . . . . . . . . . . . . . . . 129

6.6.3 El algoritm o SPIII.. .... ..........................131

6.7Ejercicios . . . . . . . . ... .... ..........................135

6.8Bibliografa recomendada.. .... ..........................136

7

89 Temas Avanzados 1759.1 Modelos de refraccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

9.2 Animacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

9.3 Visualizacion Cientca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

9.4 Modelos no Determ insticos y Fractales . . . . . . . . . . . . . . . . . . . . . . . . 183

A Notacion 185B El eme ntos Matematicos de la C omputacion Grac a 187B.1 A lgebra de Matrices . . . . . . . .... .... ....................187

B.2 A lgebra de vectores . . . . . . . . .... .... ....................188

B.3 Transform aciones Lineales y Anes... .... ....................189

Refe re ncias191

1 Introduccion

Com putacion Graca 7

1.1 Motivac ionLa Com putacion Graca ha sido una de las ram as de las Ciencias de la C omputacion de m ayor impacto social y acercamiento al pu blico en general. La gracacion esta casi siem pre asociada con la interactiv idad, por lo que actualmente casi todo sistem a o programa interactivo tiene una interfase graca. Esto es as no solo en aplicaciones especcas de gracacion matem atica y estadstica, sino tambien com o medio de producir metaforas visuales para otros sistemas informaticos, como ocurre actualmente en los lengua jes de programacion v isual, las interfases gracas con sistemas de ventanas y la metafora del desktop, y en los sistem as de disen~o asistido. En la actualidad, para cualq uier persona, el acceso a Internet sin posibilidades gracas es considerado una antiguedad. Aun las personas que no utilizan computadoras en su vida diaria encuentran gracos computacionales en casi to dos los aspectos de la cultura.Tambien se han popularizado los sistemas que traducen modelos abstractos a im agenes v isua- lizables, como sucede con las simulaciones ingenieriles q ue representan gracamente los resultados provenientes de mo delos matem aticos para auxiliar su comprension, o con los datos obtenidos por sensores (satelites, tom ografos o telemetros en general) q ue se representan visualm ente en los boletines meteorologicos o en las pantallas de los medicos.To dos estos sistemas, utilizados para nes tan diversos, tienen un fundam ento subyacente que consiste en una serie de tecnicas derivadas de la aplicacion computacional de la Geom etra Analtica. En este texto presentam os los fundam entos teoricos y los detalles de implementacion de los temas que constituyen el nucleo de la Com putacion Graca en tres dimensiones. El estudio de estos tem as es indispensable para comprender la idiosincracia de la disciplina, y de todos los sistemas que, como m encionam os, se basan de una u otra forma en la gracacion.1.2 Aplicaciones de la Comput ac ion GracaLos gracos proveen uno de los medios m as naturales y potentes de comunicarse. El procesamiento cerebral del aparato v isual esta altamente desarrollado, y por lo tanto es capaz de reconstruir, pro cesar, interpetar, recordar y cotejar una enorme cantidad de inform acion en un tiem po ape- nas perceptible. Por su parte, la evolucion tecnologica y la rapida difusion de las computadoras determina que en la actualidad la Com putacion Graca es el medio de pro duccion de imagenes mas importante en la actualidad, superando a la fotografa, disen~o y artes gracas en general, y com pitiendo con el cine y la television. Tiene la ventaja adicional de poder reproducir imagenes\virtuales", q ue no necesariam ente ex isten o se pueden ver en la realidad.Entre las numerosas aplicaciones, po demos dar una breve descripcion representativa, la cual es sin duda cada da m enos com pleta:Interfase s Actualm ente la mayora de los sistem as operativos, utilitarios, pro cesadores de tex to, etc. tienen una interfase graca basada en la metafora visual del escritorio, con conos, menues descolgables, barras deslizantes y muchas otras facilidades. De esa manera, el uso del teclado se vuelve necesario solamente para el ingreso de tex to.Industria del e ntrete nimiento Aqu po dem os contar tanto la produccion de video- juegos, pelculas y cortos de dibujos anim ados, posproduccion y efectos especiales de peliculas, publi- cidad, y tambien el desarrollo de programas utilitarios destinados a la creacion de productos en estos rubros.Aplicacione s come rci ale s Son cada vez mas comunes los sistemas para elaboracion de pre- sentaciones comerciales, incluyendo cartillas gracas, diagramacion automatica, y publicacion1.3. Desarrollo Historico de la C omputacion Gracaelectronica en general. Con el advenim iento de Internet y HTML, el desarrollo del comercio y las ocinas virtuales ha sido dramatico, y el uso de gracos es el medio indispensable para agregar distincion y atractivo a los sitios en la WW W.Disen~o asistido El C AD en general, desde el dibujo de planos hasta el desarrollo de chips VLSI pasando por cientos de otras aplicaciones, tambien tiene un gran auge en la actualidad. En todos los casos la representacion graca de la inform acion es la clave del funcionamiento.Apl icaci ones C ientcas Aqu podemos contar desde los sistem as de simulacion (cinem atica, por elemento nito, etc.) hasta la visualizacion de fenomenos abstractos y su representacion graca por m edio de metaforas visuales adecuadas.C artografa y GIS Los gracos por computadora son actualmente utilizados como soporte para los sistem as de informacion geograca (GIS) y todas las aplicaciones relacionadas (turism o, geologa, m inera, clima, urbanismo, etc.).1.3 Desarrollo Histo rico de la Com putacion GracaHasta hace aproximadamente 20 a~nos, la Computacion Graca era un campo peque~no y espe- cializado, dado el costo de los equipos necesarios para la implementacion de sistem as gracos. Para el publico en general, el tema consista en desarrollar aplicaciones en sistemas mainframe sobre paqetes gracos built in, los cuales pro ducan una salida visual para program as cientcos o comerciales en los que se necesitaban elaborar gracos estadsticos como histogram as, diagram as o trazado de funciones. El traba jo de investigacion en Computacion Graca, como es entendido en la actualidad, pareca entonces una tarea futil orientada a obj etivos pretensiosos y de escasa utilidad. Desde entonces, la Computacion Graca experimento dos grandes cambios de paradigma en sus objetivos, pasando de los gracos estadsticos a la sntesis realista de im agenes tridimensionales (a m ediados de los 70) y luego a la representacion graca de datos u objetos abstractos, en lo que hoy se cono ce como Vis ualizacion Cientca (a mediados de los 80). Actualmente es posible arm ar q ue el cam po esta atravesando un nuevo cambio paradigm atico, producido esencialm ente por el desarrollo de la Realidad Virtual, junto con la tecnologa de sensores y actuadores cinematicos, y por supuesto Internet con acceso a alta velocidad. Conectarse desde el hogar a una simulacion graca del Pathnder y recorrer un M arte virtual es una posibilidad casi rutinaria, aun para el no experto.Podemos armar que la Com putacion Graca quedo denida en el traba jo do ctoral de Ivan Sutherland en el MIT en 1963 [80]. Su desarrollo del sistem a interactivo de gracacion Sketch- pad fue el fundamento sobre el cual se apoyaron las ideas de la mayor parte de las ideas de la Computacion Graca 2D y 3D (por ejemplo, los Captulos 3 y 6 de este texto). Por su parte, a m ediados de la decada del '60 comenzaron a desarrollarse en Francia los metodos de dise~no asistido

de curvas y supercies. En unos pocos an~os comenz

a existir una disciplina cientca, la cual se

plasma con la creacion de Sociedades Profesionales como el ACM SIGGRAPH en 1969. La decada del 70 fue esencialmente de cambios tecnologicos. El descenso del costo de la m emoria volatil produjo el reemplazo de los costosos equipos basados en display de vectores, por los dispositivos de la tecnologa de raster que actualmente se utiliza. Basicamente, cada \pixel", pict ure cell o celda de pantalla, tiene un respaldo en un conjunto de memoria dedicada. Ello m otiv o el desarrollo de los algoritmos de digitalizacion de primitivas gracas como los que se resen~an en el Captulo 2.Asociado al cambio tecnologico en los m onitores, surgieron los nuevos dispositivos de entrada (m ouse, tablas digitalizadoras) y tambien de im presion en blanco y negro o color de alta calidad y precios razonables. Por lo tanto, los meto dos de dise~no de curvas y supercies com enzaron a tener una salida visual que antes era im posible con los displays de vectores. La mayora de los metodos fundam entales para dise~no de curvas y supercies, presentados en los Captulos 4 y 8,Com putacion Graca 9

fueron desarrollados y perf eccionados durante esta decada. Otra de las posibilidades originada con el cambio tecnologico fue la representacion de colores. Esto motivo el desarrollo de modelos y espacios cromaticos adecuados para la relacion costo-perform ance de los m onitores (ver Captulo

5). C on la posiblidad del color, el primer cambio de paradigm a, la busq ueda de la sntesis de imagenes con realismo, llego a su max im a expresion con el desarrollo de mo delos em pricos de iluminacion y sombreado (ver Captulo 7). Estos m odelos perm iten la representacion de escenas en las cuales se simulan los fenomenos optico-fsicos con un costo computacional bastante bajo para los resultados obtenidos. Tambien en los 70 comienzan a establecerse estandares, dado que las aplicaciones gracas se difundieron en medio de una diversidad de cambios y evolucion, y una gran cantidad de proovedores, fabricantes y dise~nadores.Sin duda la decada de cambios mas vertiginosos fue la de 1980. El surgimiento de las maquinas PC, aunque con capacidades gracas lim itadas, permitio la popularizacion de sistemas y aplica- ciones que crearon un mercado ex igente y com petitivo (por ejemplo con el Autocad). Tambien com enzaron a disen~arse herram ientas gracas de interfase hombre maquina, como por ejemplo el sistema operativo de la Macintosh II, los lengua jes de program acion visual y el hipertexto. El rol que no alcanzaron a cumplir los Com ites de estandarizacion (por ejemplo, el GSK fue aprobado recien en 1985, cuando haca varios anos que ya era obsoleto) fue cubierto por las com pa~nas com er- ciales q ue al crear una aplicacion novedosa se transformaban en estandares de facto en el mercado (por ejemplo el Poscript, el OpenGL y X Windows).Tambien esta decada marco el segundo cambio de paradigm a, porq ue la evolucion de los mo delos gracos, junto con la capacidad de representacion de los monitores y la integracion de los sistemas gracos a otro tipo de aplicaciones (simulaciones en ingeniera, sensores rem otos, datos de satelites, etc.) permitieron desarrollar herramientas para la representacion graca de conjuntos enormemente com plejos de datos. Estas ideas, que con el tiem po fueron el fundamento de la Visualizaci on Cientca, apelan a la enorm e capacidad de com prension visual humana (ver Seccion 9.3). De esa manera es posible representar, por ejemplo, millones de datos meteorologicos en un unico \graco" que permite comprender a golpe de vista las caractersticas esenciales de una determinada situacion climatica.La popularizacion de la Com putacion graca signico, adem as, el surgimiento y desarrollo de aplicaciones en las areas mas diversas. Durante los `80 comenzaron a utilizarse herramientas gracas para el disen~o en Ingeniera en to das sus actividades, desde aviones y barcos hasta circuitos integrados. En Arq uitectura e Ingeniera C iv il se utilizan sistemas para la simulacion, el disen~o y la elaboracion y analisis de modelos. En Medicina podemos mencionar desde el diagnostico por imagenes hasta la simulacion y planeam iento de operaciones quirurgicas o el desarrollo de implantes. En animacion y v ideo juegos se dio un desarrollo espectacular en la calidad e ima- ginacion con los que surgieron universos de fantasa. Cada uno recordara pelculas famosas de Hollywoo d videoclips, publicidades, video juegos para Sega, etc.En la actualidad, el desarrollo tecnologico perm ite integrar multimedios con acceso directo a redes, adquirir datos a traves de guantes y sensores y actuadores cinematicos, y procesar en tiempo real la simulacion de un observador sumergido en una realidad v irtual. Las posibilidades de los browsers para Internet estan resultando cada vez mas obsoletas, por lo q ue no es aventurado pensar que la integracion de estas tecnologas signicara un nuevo cambio de paradigm a en un futuro cercano.To do este vasto cam po de aplicacion de la Computacion Graca es im posible de cubrir en un libro intro ductorio. Sin em bargo, para cualquiera que desee especializarse en algun tema especco, la base comu n es aproximadamente la presentada aq u. Esperam os cum plir con las expectativas del lector al acercarle los fundamentos de la Computacion Graca de una manera clara y precisa, con el deseo de brindarle la m ayor motivacion y entusiasmo para seguir recorriendo este cam ino.2 Co

Algoritmos y nceptos Basicos

Computacion Graca 11

2.1 Disposit ivos GracosLos resultados gracos de una aplicacion pueden m ostrarse en una gran variedad de dispositivos de salida. Norm alm ente estos dispositivos son o bien de pantalla o bien de impresion. Sin embargo, desde el punto de vista de la Computacion Graca, es importante otra clasicacion, referida al mo do en que los mismos son manejados por la computadora. De esa m anera, podem os ver que ex isten dispositivos de los siguientes tipos: Disposi tivos de vectores, los cuales reciben de la com putadora la informacion geometrica de la lo calizacion y tama~no de las primitivas q ue soportan, de las cuales pro ducen una reproduccion \caligraca". Disposi tivos de raste r, los cuales reciben de la computadora la informacion de una serie de pix els, los cuales son posicionados en form a contigua.Los dispositivos de vectores fueron los primeros en desarrollarse, pero luego del vertiginoso descenso en el costo de la memoria volatil, a partir de la decada del 70 se hicieron mas baratos los dispositivos de raster. C omo verem os en este C aptulo, esto im plica un cambio en la manera de representar las primitivas gracas (usualmente dichas primitivas son el punto, el segmento de recta y la circunferencia o el crculo).2.1.1 Dispositivos de vectoresActualmente estos dispositivos son mas caros, pero tienen ciertas ventajas que los hacen unicos. Por ejemplo, tienen mucha mejor resolucion y precision que los dispositivos de raster, y req uieren un ancho de banda de comunicacion mucho menor dado q ue no reciben la discretizacion com pleta de las prim itivas sino solam ente su posicion.Plotters: Gracan en una hoja (que en algunos casos puede ser de gran tam a~no) sobre la cual se desliza una pluma movida por motores de pasos de gran precision. En los plotters de tambor, la plum a se desliza en sentido horizontal y el papel en sentido vertical. En los plotters planos (mas economicos), el papel esta jo y la pluma realiza todos los m ov im ientos. Son usuales las resoluciones del orden de los 10000 10000. Es posible utilizar colores por medio de varias plumas. Son ideales para la gracacion rapida y precisa de planos.Displays de almacenamiento: Al igual que televisores y m onitores, estos dispositivos son pantallas de rayos catodicos, pero dieren en ciertos aspectos tecnologicos. Esencialm ente, la pantalla tiene cierta \mem oria" electrostatica que mantiene visibles los elementos gracados con muy alta precision y sin la necesidad de refresco. Por lo tanto, una imagen muy compleja a la cual se van agregando elementos en orden es idealm ente representada por estos dispositivos. Un elem ento se representa \pintandolo" por medio de una serie de recorridas del ca~non electronico. El borrado, sin embargo, no puede hacerse en forma selectiva, por lo que no se puede alterar la posicion de un elem ento sin tener que borrar y redibujar to dos los dem as. Sin embargo, su precision y velocidad sin necesidad de memoria volatil los hace ideales para la representacion de imagenes de radares.

2.1.2 Disposit ivos de rasterImpre soras de matriz: Era hasta hace poco el dispositivo de im presion mas comun. Recibe de la computadora la inform acion graca com o una secuencia de lneas, las cuales va reproduciendo con una cabeza impresora (por m edio del golpe de martillos o el ro co de tinta).I mp re soras Laser: Recibe de la computadora la informacion graca como una secuencia de lneas, las cuales alm acena en una m emoria local. Dicha mem oria es utilizada para com andar la intensidad de un haz laser q ue recorre lnea por lnea el papel, mientras es expuesto al contacto del toner. Donde el haz incide con gran intensidad, el papel se dilata por el calor y absorbe el toner.Monitore s: Se han popularizado enormem ente a partir del descenso en el precio de la memoria volatil y el incremento constante en la calidad de las prestaciones (resolucion, color, precision). Esencialmente se comportan de una manera similar a un receptor de telev ision, excepto por el hecho de que reciben la sen~al de video y sincronism o en form a directa de la computadora y no a traves de una portadora de radio. Al igual que con las impresoras de matriz, la imagen se construye lnea por lnea, en sentido horizontal primero (de izquierda a derecha) y vertical despues (de arriba aba jo). Debe existir un refresco de la imagen en m em oria, la cual es recorrida por la tarjeta graca de la computadora para producir las lneas de barrido. Por lo tanto, el elem ento esencial en estos dispositivos es la tarjeta graca, la cual verem os en detalle mas adelante. Los monitores mas poulares pueden tener resoluciones de hasta1200 1024 (aunq ue este lm ite avanza da a da), con una cantidad de colores limitada por las prestaciones de la tarjeta graca. Esto representa una calidad m as que aceptable para la m ayor parte de las aplicaciones.2.1.3 Hardware graco para m onitoresL os dispositivos de raster requieren un refresco permanente de la discretizacion de la salida graca. En el caso de los m onitores, dicho refresco se realiza en un segmento de la memoria volatil de la com putadora denominada frame buer o buer de pantalla, que usualmente se implementa por medio de m em oria R AM de alta velo cidad localizada dentro de la tarjeta graca. El buer de pantalla es accedido en forma rtmica por el generador de v ideo, que es el encargado de \componer" la sen~ al de v ideo que va hacia el monitor. Al mismo tiempo, al producirse una salida graca por parte de la CPU de la computadora, la m ism a debe ser discretizada y almacenada en el buer de pantalla. Este acceso debe ser permitido solamente en los m omentos en los que el generador de v ideo no esta accediendo al buer, y por lo tanto se requiere el uso de un arbitro que m antenga abierto el acceso al buer solo en esos casos (ver Figura 2.1).El temporizado es crtico en el m anejo del buer de pantalla, por lo que se requiere memoria R AM de alta velocidad, mucho m ayor q ue la velo cidad requerida para la R AM de la CPU. Por ejem plo, en una norma de v ideo de 1024 pixels por lnea, la pantalla es ref rescada 35 veces por segundo a una tasa de aproxim adamente un millon de pixels por pantalla. Esto signica que en promedio el buer de pantalla es accedido 35 millones de veces por segundo por el generador de v ideo, lo cual req uiere una velocidad de acceso a memoria de aproximadamente 30ns para cum plir solo con el refresco de pantalla. En una situacion como esta, utilizar memoria de 25ns. para el buer de pantalla perm ite utilizar solamente un pico de 5 m illones de accesos por segundo para la C PU, lo cual en muchos casos es insuciente si se tiene en cuenta que el acceso entre la C PU y la tarjeta graca por el bus ISA debe cumplir cierto protocolo q ue hace mas lenta la comunicacion.Otro esquem a posible para manejar la mem oria de pantalla es utilizar la tecnologa de bus local (difundida alrededor de 1993 con las motherboard 486 y tarjetas Vesa Local Bus). Basicam ente la idea es ev itar el uso del bus de datos ISA para interconectar la tarjeta graca con la CPU. De ese

Tar jeta Graf icaCPU

Ar- bi -tro

Frame Bu er6 6?Generador de Video

- Monitor

Figura 2.1 Componentes basicos d e una tarjeta gra ca de raster.mo do se utiliza un segundo bus (llamado bus lo cal), norm alm ente de 32 bits en vez de 16, con la velocidad del relo j externo del m icropro cesador (50M hz. en vez de 8.33) y con capacidad de acceso directo a memoria (ver Figura 2.2). Este tipo de conguraciones permite una mejor utilizacion del ancho de banda marginal de la memoria del frame buer, y por lo tanto, en determinadas aplicaciones, como por ejemplo animaciones, la prestacion de un mismo hardware aum enta en un orden de magnitud solam ente al mo dicar la conguracion de acceso.La evolucion del hardware graco en PC siguio esq uemas sim ilares, utilizandose prim ero el port PCI y actualmente el AGP. Las tarjetas gracas PCI tienen una conguracion similar a las tarjetas ISA dado que el port esta pensado para dispositivos genericos. Sin embargo, el acceso es en 32 bits, a frecuencia de relo j externo, y en algunos casos con posiblidades de acceso directo a memoria. El port AGP, por su parte, permite un acceso en 64 bits a frecuencia interna del m icro (400Mhz. en algunos casos) directamente al bus interno y al cach/'e. Por lo tanto es esperable un rendimiento cientos de veces mayor que con las tarjetas ISA.Por otra parte, como veremos a lo largo de los distintos captulos, muchas de las operaciones matematicas necesarias dentro de la Computacion Graca siguen un procesamiento disciplinado que puede en muchos casos implementarse directamente en el hardware de la tarjeta. Es por dicha razon q ue han surgido tarjetas aceleradoras por hardware (PC I o AGP) que perm iten que una aplicacion se deslinde del trabaj o de ef ectuar las transformaciones geometricas, pintado de polgonos, el m apeo de texturas, etc.Recapitulando, la clave del funcionam iento de la tarjeta graca no esta en los requisitos de memoria, sino en la estructura del generador de video. El generador de video debe recorrer la memoria del buer de pantalla y entregar las lneas de barrido al monitor dentro de una determinada norm a de video. Dicha norma puede ser una norma de telev ision (PAL o NTSC) o de monitorCPU R AM @ @@ @ @@@@ Bus Loc al @ @@ @ Frame buer

M o nGenerador - ide Video t o

r

Ta rjet a Gr aficaFigur a 2.2 Tarjeta graca basada en tecnologa local bu s.(1024768, 800600, etc.). Entonces, el barrido es producido por un generador de barrido cuyas frecuencias horizontal y vertical son programables en f uncion de la norm a que se utiliza.L as sen~ales de barrido son enviadas al monitor, pero tambien se utilizan para encontrar la posicion de memoria en la cual esta almacenada la inform acion graca de cada pixel q ue constituye una lnea de barrido. Esto se realiza por medio de una unidad aritmetica que encuentra una direccion lineal a partir de los valores de la sen~ al de barrido horizontal y vertical. La direccion lineal habilita la salida del valor alm acenado en un lugar de la m emoria del buer de pantalla. Dicho valor es transformado en informacion graca por medio de una tabla de color (ver Figura2.3), ex cepto en el mo do true color que se ex plicara m as adelante.En las tarjetas gracas se representa el color por m edio del espacio cromatico R GB (ver el Captulo 5). Esto signica q ue el color de cada pixel se representa por medio de una terna de valores de las com ponentes en rojo, verde y azul, respectivam ente, que tiene dicho color. Norm alm ente es innecesario almacenar dicha terna para cada pixel. En cambio se utiliza una tabla de colores predenidos para lograr un uso mas ecaz del buer de pantalla, dado que en el mismo no se almacena el color del pixel sino el ndice al color correspondiente en la tabla de colores. Por ejemplo, si se utilizan solamente 256 colores simultaneos, entonces es necesario almacenar solamente 1 byte de ndice para cada pixel (ver Figura 2.4).En dicho modelo se utiliza la sentencia pu tpix el(x, y,c) para acceder al buer de pantalla y setear el pixel en la posicion (x, y) con el ndice de color c , con x, y , c de tipo wor d. Para setear la tabla de colores se utiliza la sentencia setr gbpa lett e(c,r ,g,b ), donde c es el ndice delGen erad or d e Vid eoArbitro

Generador de Barridoireccion

Direccion

Vert. Hor. r -LinealM e m o

r

r

- S incro 9 M>= o- i

V id eo >; tria Datos

-

Tabla g - o de Color b - r

Figura 2.3 Estructura del ge nerador de video.color a setear, y r, g, b son las componentes en el m odelo RGB del color. En los m odos gracos VGA y super VGA, los parametros r, g, b son de tipo w ord, pero se truncan los dos bit menos signicativos, dado que el rango ef ectivo de cada componente es de 0 a 63. Esto perm ite denir256 colores simultaneos de entre 256K colores denibles. Por lo tanto es conveniente utilizar una aritmetica dentro de dicho rango para representar los colores, y multiplicar por 4 en el mom ento de la llamada.El manejo se simplica en el modelo true color, en el cual cada pix el tiene alocada la mem oria para representar las com ponentes en RGB del color en q ue esta seteado (ver Figura 2.5). Esto representa triplicar el taman~o del buer de pantalla y el ancho de banda de la mem oria aso ciada, lo cual tiene un costo bastante elevado, pero perm ite representar 16.7M colores simultaneos Como ya se dijo, en algunos casos puede ser necesario el costo, pero norm alm ente un m odelo com o el de la Figura 2.4 puede ser suciente.2.2 Tec nicas de D iscretizacionA partir de este punto, y en lo que resta del Captulo, nos vamos a comprom eter con el modelo de dispositivo de raster. Para conseguir independencia de dispositivo, entonces, es necesario adoptar un conjunto de prim itivas y establecer una serie de metodos q ue permitan representar dichas prim itivas en nuestro dispositivo de raster satisfaciendo un conj unto de especicaciones.

1 byte/pix elframe bu er Tabla de C olores0

ic

n 1

n pixel = n by tes 28=256 colores sim ultaneos(ej: 10241024 pixel = 1M) 218 =256K colores deniblesp utpix el(x ,y,c ); se trgb pale tte(c ,r,g ,b);Figur a 2.4 Mode lo de memoria y tabla d e colores a 1 byte/p ixel.True Color9=>pixel i

;>n pixel = 3n bytes(ej: 10241024 pix el = 3M bytes)224 =16.7M colores simultaneosFigur a 2.5 Mode lo de memoria true c olor.

0 X max x0 t - y

Y x; ytmax y?xFigura 2.6 Sistema de coordenad as fsic o junto al espacio de la escena.2.2.1 El sist ema de coordenadas fsicoEl primer paso para conseguir una representacion adecuada de las primitivas es caracterizar matematicamente el m edio que nos permite representarlas. L as primitivas gracas independien- tes de dispositivo (en la \im agen" mental del usuario) norm alm ente se representan en un espa- cio Eucldeo de una determinada dim ension. En dichas condiciones un punto es una entidad matematica p = (x; y), donde (x; y) 2 R2.En el soporte aritmetico de la computadora, dicha representacion se efectu a con los tipos de datos provistos, q ue pueden ser numeros reales con punto otante de simple o doble precision. Este espacio se denom ina espacio de la escena y es uno de los muchos espacios q ue se utilizaran para factorizar adecuadamente las diversas tareas de un sistem a graco.Por ultimo, en el soporte graco del buer de pantalla, un punto se representa con un pixel, y dicha representacion se efectua seteando una posicion de memoria con un contenido dado. Este espacio se denom ina espacio de pantalla y se direcciona a partir del sistem a de co ordenadas fsico, cuyo origen es el vertice superior izquierdo. Es posible encontrar varias correspondencias posibles entre el sistem a de co ordenadas fsico y un sistem a de co ordenadas arbitrario en el espacio de la escena. En la literatura normalmente se considera que un pixel es un \punto con extension" en el espacio de la escena, y por lo tanto el origen de dicho espacio coincide con el vertice superior izquierdo del pixel (0,0 ) (ver por ejem plo [33, 40, 66, 84]). Desde nuestro punto de v ista, esto no es del todo correcto, y parece mas adecuado pensar q ue el origen del sistem a de co ordenadas de la escena esta en el centro del pix el (0 ,0) (ver Figura 2.6).De esa manera, el espacio de pantalla es un espacio discreto y acotado

[ 0 .. max x][0 .. m axy] , con maxx , ma xy2 N , el cual esta

en correspondenciacon el espacio de la escena (eucldeo) (x; y) 2 R2 a traves de las operacionesX := r ound (x); y Y : = ro und(y ); Por dicha razon es q ue la operacion de llevar una primitiva del espacio de la escena al espacio de pantalla se denomina d iscretizacion.2.2.2 P rimitivas gracasEs muy difcil escoger un conjunto de prim itivas gracas que sea adecuado para la representacion de todo tipo de entidades gracas. Sin embargo, el siguiente subconjunto en la practica resulta suciente:Puntos: Se especican a partir de su lo calizacion y color. Su discretizacion es directa, com o se m enciono mas arriba.Segmentos de recta: Son esenciales para la m ayor parte de las entidades. Se especican a partir de un par de puntos que representan sus extrem os.C ircunferenc ias: En algunos casos representar entidades curvadas con segmentos poligonales puede ser indadecuado o costoso, por lo q ue en la practica las circunferencias o crculos se adoptan com o prim itivas. Se especican con la posicion de su centro y su radio.Polgonos: Son indispensables para representar entidades solidas. Se representan a partir de la secuencia de puntos que determ ina la poligonal de su perm etro.2.2.3 Espe cicaciones de una discret izacionEn el m omento de escoger un metodo de discretizacion para una primitiva graca, es indispensable contar con criterios q ue perm itan evaluar y com parar las venta jas y desventaj as de las distintas alternativas. Entre todas las especicaciones posibles, podemos mencionar las siguientes:Aparienc ia: Es la especicacion mas obvia, aunque no es facil describirla en terminos form ales.Normalmente se espera q ue un segm ento de recta tenga una \apariencia recta" m as alla de que se hallan escogido los pixels m atematicam ente mas adecuados. Tam po co debe tener discontinuidades o puntos espureos. Debe pasar por la discretizacion del primer y ultim o punto del segmento. Debe ser uniforme, etc.Sime tra e invariancia geometrica: Esta especicacion se reere a que un metodo de discretizacion debe producir resultados equivalentes si se modican algunas propiedades geometricas de la primitiva que se esta discretizando. Por ejemplo, la discretizacion de un segmento no debe variar si dicho segmento se traslada a otra lo calizacion en el espacio, o si es rotado, etc.Simplicidad y velocidad de computo: Com o los metodos tradicionales de discretizacion de prim itivas se desarrollaron hace tres decadas, en momentos en que las posibilidades del hardware y software eran muy lim itadas, los resultados eran muy sensibles al uso de memoria u operaciones aritmeticas complejas. Por lo tanto, los metodos tienden a no depender de estructuras complejas y a ser directam ente im plem entables en hardware especco de ba ja complejidad.2.2.4 Metodos de discre tizacionDada una primitiva graca a discretizar, debemos encontrar los pix els que la representen de la manera mas correcta posible. Para ello, lo m as adecuado es caracterizar matematicamente a dicha prim itiva, de modo que su discretizacion pueda efectuarse en forma sencilla. Entre los diversos metodos que pueden plantearse destacamos los dos siguientes:Eval uar su e cuacion diferencial a diferencias nitas: Este metodo, denominado DDA (discrete diference analyzer) consiste en plantear la ecuacion diferencial de la prim itiva a discretizar, y luego evaluar dicha expresion a intervalos adecuados.Analisi s del error: Estos metodos fueron desarrollados por Bressenham [18] y se basan en analizar, dado un pixel que pertenece a la discretizacion de la primitiva, cual es el proximo pixel q ue minimiza una determinada expresion que evalua el error q ue comete la dis- cretizacion.2.3 Discretizacion de Segm ent os de RectasEl analisis de los metodos de discretizacion de rectas parte de considerar el comportamiento es- perado en determinados casos particulares. Dichos casos surgen de suposiciones especcas que simplican el problema, pero que al mismo tiem po se pueden generalizar a todos los dem as casos por medio de sim etras. Dado un segmento de recta q ue va de (x0; y0 ) a (x1; y1), se supone q ue

x = (x1 x0 ) 0, y = (y1 y0) 0, y x y .Esto equivale a traba jar en el \octavo" del espacio de pantalla sombreado en la Figura 2.7, donde el origen es el pix el que corresponde a la discretizacion del punto (x0 ; y0 ) y la zona sombreada a los lugares donde puede ubicarse el punto (x1 ; y1 ).2.3.1 Segm entos de rect a DDAComo ya se mencionara, los meto dos DDA evaluan la ecuacion diferencial de la primitiva a inter- valos nitos. En el caso particular de los segmentos de recta, la ecuacion diferencial es@y = y

= m:@x xEl metodo busca encontrar una secuencia de n + 1 puntos tales q ue (x0 ; y0 ) = (x0;y 0); (x1 ; y1 ); ; (xn ; yn ) = (x1 ; y1 ). L a discretizacion de cada uno de ellos son los pixels de la discretizacion del segmento. Esta propiedad, si bien es trivial, es de gran importancia porque determina que la discretizacion de un segmento de recta es invariante frente a transformaciones anes. Esto signica que es eq uivalente transformar los extremos del segmento y discretizar el segm ento transform ado, o discretizar primero y transformar cada punto obtenido. Sin embargo, la prim era alternativa es mucho m as eciente.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Figur a 2.7 Situacion particular p ara derivar los algoritmos de discretizacion de se gmentos d e recta.Dada la ecuacion diferencial y un increm ento nito arbitrario " =pixel dado de la secuencia al siguiente por m edio de la ex presion xk+1 = xk + "xyk +1 = y k + " y

1, podem os pasar de unn" determina la \frecuencia" de muestreo del segmento. Un valor muy pequen~o determina q ue muchas muestras produciran puntos que seran discretizados al mismo pix el. Por el contrario, un valor muy grande determinara que el segm ento aparezca \punteado" en vez de ser continuo com o corresponde. Un valor practico es elegir "x = 1 y por lo tanto n = x, es decir, la discretizacion tiene tantos pixels com o longitud tiene el segmento en la variable q ue m as vara (mas uno, dado q ue la secuencia tiene n + 1 puntos). Al m ism o tiempo es facil ver que

y" y = x

= m:

En la Figura 2.8 es posible ver el resultado de discretizar un segmento particular por el metodo DDA. Observese que los puntos ex tremos (x0; y0) a (x1; y1 ) son en efecto puntos y por lo tanto estan ubicados en cualquier lugar dentro del pixel q ue corresponde a su discretizacion. Un algoritm o sencillo que computa la discretizacion de un segm ento de recta por el meto do DDA se muestra en la Figura 2.9. Observese q ue es necesario computar las variables en punto otante, y que adem as se req uiere una division en punto otante.Para poder discretizar un segmento de recta en cualq uiera de las posibilidades es necesario considerar las simetras que se aplican. Si por ejemplo no se cum ple q ue y = (y1 y0 ) 0, entonces hay que considerar pendientes negativas (simetria A), caso que el algoritmo de la Figura2.9 realiza autom aticamente. En cambio, si x = (x1 x0 ) 0, entonces es necesario decrementara x en el ciclo e iterar mientras no sea menor q ue x1 (simetra B). Por ultimo, si no se cumple q ue

x y, entonces es necesario intercambiar los roles de las variables x e y (simetra C). Cualquiercombinacion de situaciones se puede resolver con combinaciones de sim etras (ver Figura 2.10).(x0; y0)Hu H H

H H H

H H H

H H H 1 -H H H6?mH H H

H H H

H H H

H H HH H H

H H H

H HH

u (x1 ; y1 )Figura 2.8 La disc retizacion de un segmento p or DDA.pro cedu re l inea( x0,x 1,y0 ,y1:r eal; col: integ er);var x,y ,m:r eal;beg inend ;

m := (y1-y 0)/( x1-x 0);x := x0; y := y0;w hile x 0:5 entonces el segmento de recta pasa mas cerca del pixel D, y si no, pasa m as cerca del pixel E (ver Figura 2.13).Una de las economas de com puto del metodo proviene de poder testear el error preguntando por cero. Es facil ver q ue si se inicializa el error eneo = m 0:5;entonces en cada paso hay que chequear e > 0 para elegir D. L a otra economa prov iene de realizar m anipulaciones algebraicas para ef ectuar un computo equivalente pero en aritmetica entera. Com o se testea el error por cero, multiplicar el error por una constante no afecta el resultado. Por lo tanto, multiplicamos el error por 2 x. A partir de dicho cambio, se constatan las siguientes igualdades:y eo = 2x( x 0:5) = 2y x. Paso Ee := e + 2y. Paso De := e + 2(y x).Todas las operaciones, entonces, se efectuan en aritmetica entera.

pro cedu re l inea( x0,x 1,y0 ,y1,c ol:i nteg er);var x,y ,dx, dy,e, ix,i y:in teger ;beg indx := x1 - x0; dy : = y1 - y0 ;ix := 2*dx; iy := 2 *dy;y := y0; e := iy - dx;fo r x := x0 to x1 d o beg in put pixel (x,y ,col );e : = e+i y;if e>0 the n do beg iny := y +1;e := e -ix;end ;en d;end ;Figura 2.14 Algoritmo de Bressenham para segmentos de re cta.La im plem entacion del algoritmo de Bressenham para segmentos de recta se muestra en la Figura 2.14. Teniendo en cuenta que los productos por 2 en aritmetica entera se efectuan con un desplazamiento a izquierda, es posible observar que el mismo utiliza operaciones elem entales e implementables con hardware especco muy sencillo.2.4 Discretizacion de Circ unferenciasComo en el caso de los segm entos de recta, en la discretizacion de circunferencias o crculos tra- bajarem os solam ente en una parte de la misma, y obteniendo las demas partes por simetra. Supongam os que la circunferencia a discretizar esta centrada en el origen, y q ue p = (x; y ) es un pix el de su discretizacion tal que

x 0, y 0, x y.Dicha situacion describe un octavo de la circunferencia, pero las partes faltantes pueden encontrarse por medio de las sim etras mostradas en la Figura 2.15.2.4.1 Discretizacion de circunferencias por DDASea una circunferencia de radio r centrada en el origen y sea p = (x; y ) un punto que pertenece a la m ism a. Entonces, la ecuacion diferencial de la circunferencia en dicho punto (ver Figura 2.16)es@y x@x = y :(y; x)t

(y; x)t(x; y) t

t(x; y)@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@(x; y)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@(x@; y)t @ t @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@t(y; x)

t(y; x)

@@@@@@@@@@@@@@@@@@@Figur a 2.15 Simetras para la discretizacion de circunferen cias.L a evaluacion de la ecuacion diferencial por diferencias nitas, com o en el caso de los segmen- tos de recta, consiste en encontrar una secuencia de valores, de modo que dado un pixel de la discretizacion (xk ; yk ), el proximo pixel se encuentra con xk+1 = xk "ykyk +1 = yk + "xk (2.1)" determ ina la \frecuencia" de muestreo de la circunferencia. Valores pequen~os determinan un computo redundante, y valores muy grandes determinan un cubrimiento desparejo. Un valorpractico es elegir "x = 1 y por lo tanto "y = y x

(ver Figura 2.17). El prim er pixel de la secuenciaes p0 = (r; 0), el cual pertenece a la discretizacion de la circunferencia y ademas se com puta enform a directa.Es importante tener en cuenta que el sistema de ecuaciones 2.1 puede representarse como una transform acion: xk +1yk+1

1 " " 1

xk yk ;la cual tiene determinante 1 + "2 . Esto signica q ue la discretizacion es levemente espiralada hacia afuera. Una forma de solucionar este problema es utilizar una recurrencia cuya transform acion sea 1 " :" 1 "2Esta transformacion representa en realidad una elipse y no una circunferencia, pero la ex centricidad de la m ism a es del orden de "2 y por lo tanto la diferencia es mas reducida. Utilizar dicha expresionX X X X X

X X X

t(x; y)(y; x)Figura 2.16 Interpretacion geometrica de la ecuacion dife rencial de la c ircunferencia centrada en el origen .pro cedu re c irc(r adio :rea l;col :int eger );var x,y :int eger;rx: real ;beg inrx: =rad io;x:= roun d(rx) ; y: =0;whi le ( yEra (x 0,x 1,y 0,y 1) o (x0,y0,x1,y1)?). Pero el procedim iento gra fica r linea recibe un segmento de lnea especicado por dos puntos, y entonces no hay error posible. Por otra parte, si el punto o la linea se van fuera del area gracable, la estructura de tipos nos avisa en tiempo de ejecucion sin q ue se genere un error por invadir areas de m emoria no asignadas. L a form a de manejar estos problem as sin producir un error de tipo sera expuesta en la seccion 3.4.3.2 Transform aciones y Co ordenadas HomogeneasUna de las tecnicas mas poderosas de m odelado de entidades gracas consiste en descomponer ingeniosam ente las mismas en terminos de primitivas. Por ejem plo, la escena mostrada en la Figura 3.1 esta compuesta exclusivam ente por cuadrados, cada uno ubicado en un lugar especco y con una escala (taman~o) adecuada.Sin embargo, describir la escena como un conjunto de instancias de cuadrados es quedarse en la supercie del fenomeno. Lo verdaderamente importante es que hay una descomposicion jerarquica q ue es mas rica y versatil. Podemos pensar que la escena esta com puesta por un suelo y dos instancias de casa. Cada casa esta compuesta por un techo, un frente, una puerta y una ventana, etc. De esa m anera, las entidades gracas son jerarquas de estructuras, que se denen como la composicion de instancias de estructuras m as simples, hasta terminar en el cuadrado. Es necesario, entonces, denir una unica vez cada estructura.Figura 3.1 Una escena compuesta exclusivamente de instancias de cuadrados.3.2.1 Transform aciones anesPara utilizar una entidad varias veces, es decir, para que ocurran varias instancias de una entidad, es necesario hacerla \aparecer" varias veces con distintas transformaciones. Por ejemplo, en la Figura3.1 aparecen dos instancias de casa, cada una con una traslacion distinta. C ada elemento de lacasa esta denido tambien con transformaciones de otros elementos, las cuales deben concatenar se con la transformacion correspondiente a cada casa para obtener el resultado nal. Por lo tanto, las transformaciones desempen~an un papel decisivo en los modelos de la Com putacion Graca, en particular las transformaciones rgidas o lineales.Como es sabido, la traslacion, rotacion (alrededor del origen) y escalam iento, conforman una base funcio nal para las transformaciones rgidas en un espacio lineal. Es decir, toda transform acion afn o lineal puede ponerse en terminos de una aplicacion de estas tres operaciones. xUtilizarem os por un m omento la notacion p = y

para referirnos a un punto en un espacio

de dos dimensiones (ver Apendices A y B). El resultado de aplicar a p una transformacion deescalamiento, por ejemplo, es un punto p0 =

x0y0

tal que

x0 = ex x; y 0 = ey y:Es mas conveniente una notacion matricial:p0 = E p, es decir,

x0y0

= ex 00 ey

x y :Del mismo modo puede representarse para rotar un angulo alrededor del origen:p0 = R p, es decir,

x0 y0 =

cos sensen cos

x y :

Es un inconveniente q ue no pueda representarse la traslacion com o preproducto por una matriz:x0 = tx + x; y 0 = ty + y:De esa manera se pierden dos propiedades convenientes:1. To da transformacion de un punto es su preproducto por una matriz cuadrada.2. La concat enacion de transformaciones es el preproducto de las m atrices respectivas.3.2.2 Coordenadas homogeneasEs necesario tener en cuenta que los espacios lineales (Eucldeos) son conjuntos de valores vecto- riales cerrados ba jo sum a y multiplicacion escalar (ver Apendice B). Por lo tanto, los puntos en estos espacios no tienen una representacion que los distinga. Una de las confusiones mas no civas en la Computacion Graca se debe a q ue la representacion de un pu nto y un vector en un espacio Eucldeo de n dimensiones puede hacerse con una n-upla de reales, en particular, representando a un punto p con un vector que va del origen a p. Uno de los problemas de esta confusion es que, si bien la sum a de vectores es independiente del sistema de coordenadas (al estar los vectores \libres" en el espacio), la \suma" de puntos pasa a depender de la eleccion particular del origen (ver Figura3.2).rp0 + q0 BM B B

p + q

y y0

BBB B

r 6 r BM

6 B qB B* r

B B B

r

B Bx B B B B - x0rFigur a 3.2 La \suma" de puntos esta mal d enid a en un espacio vectorial dado qu e depend e de la ele ccion particular de un sistema de coordenadas.Sin embargo, en un espacio vectorial de n dimensiones no afn, es posible encontrar subespacios anes de n 1 dimensiones, es decir, subespacios en los cuales la combinacion afn de elementos esta bien denida. Por ejemplo, en un plano, dados dos puntos p y q, la recta que pasa por dichos puntos es un espacio an unidim ensional que contiene todas las combinaciones anes de p y q. L a proyeccion (interseccion) de la suma vectorial de p y q con dicha recta es un punto que esta a m itad de camino entre dichos puntos, independientemente del sistema de co ordenadas elegido (ver Figura 3.3). Si realizamos la suma vectorial p + 9q y proyectamos, se obtiene un punto que esta a un 10% de distancia de q y a 90% de p sobre la recta.Todos los puntos de la recta, como dijim os, pueden representarse como combinacion afn de p

y q, es decir:r = sp + tq;donde s + t = 1. Si adem as tanto t com o s son no negativos, entonces la combinacion afn se denomina convexa porque el punto resultante pertenece al segmento de recta que va de p a q. Unasp0 + q0 BMB B B

p + q

B B B

* s B B B 6 p s BMB B

6 s

B qB B s

Recta Afn

B

B B

B B

s

- B B B B B -sFigura 3.3 La combin acion afn de puntos esta bien den ida e n un subespacio afn del espacio vectorial.inspeccion mas detallada nos permite ex presar el resultado de una combinacion afn del siguiente mo do:r = sp + tq = (1 t)p + tq = p + t(q p);la cual es una expresion conocida para representar un segmento en forma parametrica.Recpro camente, todo espacio E de n dimensiones puede hacerse afn dentro de un espacio vectorial V de n + 1 dimensiones por medio de un procedim iento denominado hom ogenizacion. Para ello se considera q ue E esta \inmerso" dentro de V como un hiperplano para un valor no trivial (distinto de cero) de una nueva variable h llamada variable de homogenizacion. En la Figura3.4 se muestra la hom ogenizacion del espacio R2 com o (hiper)plano h = 1 de un espacio vectorialR3. Todo elem ento del espacio hom ogeneo debe considerarse proyectado sobre el plano h = 1. De esa manera, la sum a de puntos se transforma en una combinacion afn.Es importante observar q ue en un espacio afn de estas caractersticas la representacion de un punto pasa a ser2 x 3p = 4

y 5 ;

1

6h

ysp + q [0; 0; 1] s

3 sq p s

h = 1 x -sFigur a 3.4 Homoge nizacion d el espacio R2.y la representacion de un vector (como resta de puntos) es2 a 3v = 4 b 5 :0

Por lo tanto, se supera la confusion entre puntos y vectores. Tambien es importante destacar la equivalencia entre puntos para cualquier valor no negativo de h, dado q ue todos los puntos que se proyectan al mismo lugar en el plano h = 1 son equivalentes:2 xh1 3

2 xh2 3

2 x 34 yh1h1

5 4

y h2h2

5 4 y 51

Para pasar del espacio hom ogeneo n + 1-dim ensional al lineal n-dimensional es necesario div idir las primeras n componentes por la ultima:2 x 3

2 x 3h4 y 5 ; 4 :hEste costo adicional de dos cocientes, sin embargo, permite el benecio de una representacion uniforme de las transformaciones. Adem as, en 3D es necesaria la div ision para realizar la trans- form acion perspectiva, por lo que el costo en realidad no existe (ver Seccion 6.3).3.2.3 Transform aciones revisitadasPodemos solucionar el inconveniente mencionado en la subseccion 3.2.1 por m edio del uso de co ordendadas homogeneas. De esa manera, una m atriz de escalamiento es:2 x0 3

2 ex 0 0 3 2 x 3p0 = E p, es decir, 4 y01

5 = 4

0 ey 0 5 4 y 50 0 1 1

Del mismo modo puede representarse la rotacion2 x0 3

2 cos sen 0 3 2 x 3p0 = R p, es decir, 4 y01

5 = 4

sen cos 0 5 4 y 5 ;0 0 1 1

y tambien la traslacion x0 = tx + x; y 0 = ty + y:

2 x0 3

2 1 0 tx

3 2 x 3p0 = T p, es decir, 4 y01

5 = 4

0 1 ty0 0 1

5 4 y 5 :1

Observar que la concatenacion no conmuta en general, es decir, es importante el orden en el que se aplican (premultiplican) cada una de las transformaciones.3.3 Represent ac ion Est ructuradaPodemos ahora retornar a nuestro ejem plo de escena m ostrado en la Figura 3.1. La representacion de objetos se realiza por m edio de una estructuracion jerarquica en forma de grafo, de modo tal que cada objeto se com pone de una denicion y una transformacion \de instancia" (es decir, donde debe aparecer el ob jeto denido), y cada denicion es una coleccion de objetos. En la Figura 3.5 es posible ver parte de la estructura necesaria para denir la escena de la Figura 3.1.Es im portante tener en cuenta q ue si bien las estructuras son recursivas (un objeto es un par denicion- transformacion, y una denicion es una coleccion de objetos), las m ism as terminan indefectiblemente en objetos primitivos, en este caso, cuadrados. Para gracar la escena, entonces, es necesario recorrer la estructura esc ena. Para cada objeto apuntado por la m ism a, se guarda la transformacion en una pila y se recorre recursivam ente. La recursion termina cuando la denicion no es una estructura de objetos sino un cu ad, en cuyo caso se transforman los cuatro vertices del mismo por el preproducto de todas las matrices apiladas y se gracan los segm entos de recta que los unen.En la Figura 3.6 se observan las declaraciones de tipos y los procedim ientos q ue implementan estos algoritmos. Es importante notar que la denicion de un objeto se realiza por medio de registros variantes, de m anera de poder guiar la recursion.Una forma de hacer este computo mas eciente es utilizar una matriz de \transform acion corriente", a la cual se multiplica cada una de las matrices que se van apilando. Cuando se agota una rama de la recursion es necesario desapilar la ultima transformacion y recalcular la transformacion corriente. El trozo de codigo de la Figura 3.6 ilustra una implementacion posible de estas ideas, m ientras que en la Figura 3.7 se muestra parte de la inicializacion de la estructura de informacion para representar una escena com o la de la Figura 3.8.e scenasue lou - u?T

u - cuadcas a1

c asa pu erta-

- - cua du - u?Tcas a2- u

u - u - u u?Tu -u

uu - cua du te cho

?

- cua d-T?Figur a 3.5 Estructuras de datos que repre sentan la escena de la Figura 3.1.Es m uy importante destacar la exibilidad que tiene este esq uem a para el manejo de las escenas. Mo dicar la transformacion de una de las instancias de ca sa m odica todo lo q ue se graca para dicha casa, y m odicar la transformacion que dene uno de los elementos de la casa mo dica com o se graca el mismo en tod as las casas (ver Figura 3.8).Es necesario tener en cuenta que las matrices homogeneas de transformacion norm alm ente son inversibles en forma muy sencilla (la inversa de la escala es escalar por la inversa, la inversa de la rotacion es rotar por el angulo inverso, y la inversa de la traslacion es trasladar por la distancia invertida). Esto hace que la actualizacion de la transform acion corriente pueda hacerse posmultiplicando por la inversa de la matriz q ue se saca de la pila.3.4 Windowing y ClippingL a representacion estructurada de entidades gracas perm ite una cierta abstraccion del dispositivo graco de salida, independizandonos del tipo de primitivas q ue soporta y de la tecnologa del m ism o. Sin embargo, aun q ueda por resolver el problema del rango de valores de los pixels representables. Puede suceder que los gracos que se acomodaban bien a la salida en una situacion particular, al cambiar de resolucion se vean de m anera inadecuada. Esto puede empeorar aun mas si nuestra aplicacion pro duce una salida graca sin utilizar la pantalla com pleta, por ejem plo en un sistem a cuya interfase trabaja por medio de ventanas.

typ e en tida des = (cu ads, defis );c uad = arr ay [ 0..3] or punt o;tra nsf = arr ay [ 0..2] of arra y [0. .2] of r eal;d efi = arr ay[0 ..9] of ^ obje to;obj eto = rec ord t:^ tran sf;ca se t ipo:e ntid ades ofdefis :(d: ^def i);cuads :(c: ^cua d);en d;pro cedu re g raf_c uad( o:ob jeto; at: tran sf);var t,t 1:tr ansf;cu: cuad ;beg int :=o. t^; cu:= o.c^ ;p rod_ matr iz(t, at,t 1);t rans form ar(cu ,t1) ;l inea (cu[ 0],cu [1]) ; line a(cu [1], cu[2] );l inea (cu[ 2],cu [3]) ; line a(cu [3], cu[0] );end ;pro cedu re g raf_o bj(o :obj eto;a t:tr ansf );var t,t 1:tr ansf;d:d efi;i:i nteg er;beg inc ase o.ti po ofcuad s : graf_ cuad (o,a t);defi s : begint:= o.t^ ; d :=o. d^;whi le d [i]< >nil do b egin p rod_ matr iz(t, at,t 1);g raf_ obj( d[i]^ ,t1) ;end ;e nd;end;end ;Figura 3.6 Estructu ras de datos y procedimientos para recorrer u na re presentacion estruc- tu rada de escenas.

procedure graficar;var cu:cuad;t1, ... :transf; o1, ... :objeto; casa,sitio,puerta,escena:defi;begin{inicializacion del cuadrado}cu[0].x := -1; cu[0].y := -1; cu[0].w := 1;...{inicializacion objeto 1}o1.t:=@t1; o1.c:=@cu;t1[0][0]:=2.2; t1[0][1]:=0; t1[0][2]:=0;...{inicializacion objeto 2}o2.t:=@t2; o2.c:=@cu;t2[0][0]:=2.2; t2[0][1]:=0; t2[0][2]:=0;...{definicion de sitio como conteniendo objetos 1 y 2}sitio[0]:=@o1; sitio[1]:=@o2; sitio[2]:=nil;{inicializacion objeto 3: sitio con su transformacion}o3.t:=@t3; o3.d:=@sitio;t3[0][0]:=1; t3[0][1]:=0; t3[0][2]:=0;...{inicializacion objeto 4}o4.t:=@t4;o4.c:=@cu;

t4[0][0]:=1;...t4[0][1]:=0;t4[0][2]:=0;

{idem objetos 5 y 6}{definicion de puerta como conteniendo objetos 4, 5 y 6}puerta[0]:=@o4; puerta[1]:=@o5; puerta[2]:=@o6; puerta[3]:=nil;{inicializacion objeto 7: puerta con su transformacion}o7.t:=@t7; o7.d:=@puerta;t7[0][0]:=1; t7[0][1]:=0; t7[0][2]:=0;...{idem para definicion de ventana}{definicion de casa como conteniendo objetos 3, 7 y 9}casa[0]:=@o3; casa[1]:=@o7; casa[2]:=@o9; casa[3]:=nil;{inicializacion objeto 10: casa con su transformacion}o10.t:=@t10; o10.d:=@casa;t10[0][0]:=100; t10[0][1]:=0; t10[0][2]:=300;...{inicializacion objeto 11: casa con otra transformacion}o11.t:=@t11; o10.d:=@casa;...{definicion de escena como conteniendo objetos 10 y 11}escena[0]:=@o10; escena[1]:=@o11; escena[2]:=nil;{inicializacion objeto 12: escena con su transformacion}o12.t:=@t12; o12.d:=@escena;... graf_obj(o11,identidad); end;Figur a 3.7 Parte d e la inic ializacion de las estruc turas nec esarias p ara representar la escena de la Figura 3.8.

Figura 3.8 Efecto de modicar una instancia de c asa y parte d e la denicion d e la ventana.Para solucionar este problema se dene un nuevo sistema de coordenadas, denominado sistema de coordenadas del mundo, del cual se representara gracamente un segmento denom inado ventana o window. Dicho segm ento es puesto en correspondencia con un sector de la pantalla (subconjunto del sistem a de coordenadas fsico) denominado viewport. L a operacion de transform ar las entidades gracas del window al v iewport se denomina windowing, y la de elim inar la gracacion de entidades que caen fuera del v iewport se denomina clippi ng.3.4.1 WindowingLas aplicaciones en Computacion Graca trabajan en sistem as de coordenadas adecuados para cada caso particular. Por ejempo, un histogram a meteorologico puede estar en un sistem a de co ordenadas en milmetros de lluvia vs. tiem po. El dispositivo de salida, por su parte, traba ja en su propio sistema de coordenadas fsico. Para lograr una independencia de dispositivo, es necesario traba jar en un espacio que tenga un sistema de co ordenadas norm alizado. Por dicha razon se dene el sistema de coordenadas del mundo, dentro del cual la porcion visible de la escena es la contenida en la ventana (en algunos casos se sugiere utilizar una ventana normalizada 0.0|1.0 en x e y, denom inada NDC, Normalised Device Coordinate, garantizando un estandar graco).Sean xwi y xwd los lmites en x (izq uierdo y derecho respectivam ente), y ywa y ywb los lmites en y (superior e inf erior respectivamente) del window. Dicha ventana debe ser mapeada al subcon- junto de la imagen denominado viewpor t denido en el sistem a de co ordenadas de la pantalla (ver Figura 3.9), cuyos lm ites son xvi y xvd para x (izquierdo y derecho respectivamente), y yva y yvb para y (superior e inferior respectivamente). Por lo tanto, es necesario encontrar los parametros de una transformacion de windowing que lleva un punto pw del window a un punto pv del v iewport.Po demos encontrar dichos param etros planteando semejanzas entre segmentos. Por ejemplo, para la coordenada x de un punto pw en el w indow es posible encontrar xw xwi = xv xvi ;xw d xw i

xv d xvixv i xv d -6yw a

window

yv a

viewp ortpvpw @@r

@ u @

yw b

xw i

-xwd

yv b ?Figur a 3.9 Elementos que denen la tran sformacion de win dowing.de donde se sigue

(xw xwi) xv = (x

wd

(xvd xvi)+ xvi:wiL lam ando a al factor constante

(xvd xvi) (xw d xw i)

obtenemosdonde b = xvi axw i.

xv = (xw xw i)a + xv i = a xw + b;

De haber utilizado el sistema NDC, la ex presion se simplica axv = xw(xvd xvi)+ xvi:Por ultim o, es necesario discretizar el punto obtenido para transformarlo en pixel (por m edio delr ound de xv ).Es necesario enfatizar un punto de gran im portancia en el analisis de la eciencia de los algorit- m os utilizados en Com putacion Graca. Todas las primitivas que hem os utilizado son invariantes frente a las transform aciones que se utilizan. Esto garantiza que es posible aplicar to das las trans- form aciones (w indowing includa) a los puntos que denen a una entidad graca, y luego aplicar la discretizacion sobre los puntos transformados. Es decir, conmutan las operaciones de transform ar y de discretizar. De no haber sucedido as, no hubiesemos tenido otro remedio que discretizar en el espacio de la escena, y luego transform ar cada punto de la discretizacion, lo cual es evidentem ente de un costo totalmente inaceptable.3.4.2 ClippingComo ya m encionaram os, al aplicar windowing es necesario \recortar" la gracacion de aquellas partes de la escena que son transformadas a lugares que quedan fuera del viewport. La manera m as1001

p 5 1000

1010

B t

A

rp30001

t 0000

0010

p4

p r prr 0 1

0101

0100

0110

pr

Figura 3.10 Como se etiquetan los extremos de los segmentos en el algoritmo Cohen- Sutherland para clipping de segmentos.directa de realizar esta tarea es modicar los algoritm os de discretizacion de primitivas para que utilizen las coordenadas del viewport (por ejem plo, denidas con variables globales) y graq uen un pixel solo si esta dentro del m ism o.pro cedu re l inea cl ip(p 0,p1 :punt o;c: col) ;...if (xvi 1, la idea general es encontrar una familia de bases N k (u) con soporte local, respetando la form ulacion de la curva com o producto de una base funcional por un conjunto de puntos. La derivacion de la familia N k (u) es relativamente compleja. Puede hacerse por integracion sucesiva, lo cual lleva a una expresion recursiva, bastante similar a la encontrada en la Seccion anterior para de Casteljau-Bezier:N k u ti

k 1

ti+k u

k 1i (u) = t

i+k1

N (u)+ ti i t

i+k

ti+1

Ni+1 (u); (4.5)con

1 si t u

ti+1;i (u) = N 1

0 en todo otro caso.i (u) es identica a la funcion Ni(u) v ista en la ecuacion 4.4. Un ej emplo de curva B-Spline degrado quinto se puede observar en la Figura 4.26.Por el mom ento asum im os que la secuencia de nudos ti es uniform e, en particular q ue ti = i, aunq ue luego veremos los efectos de alterar esta unif orm idad. Para obligar a la curva a pasar por el primer y ultimo punto de control, se repiten los mismos la cantidad necesaria de veces (segun el grado de la curva), por m edio de asignar un valor ti = 0 cuando i < 0, y un valor ti = n g ra do +2 cuando i > n. Tambien luego verem os los efectos de alterar estas restricciones.

con st p ts_c trol= 10; {n=1 0, lu ego 11 p untos }p asos =20; {can tidad de eval uacio nes}g rado =3; {gra do de sead o de la c urva }fun ctio n nu do(i: inte ger) :real ;beg ini f i < gr ado t hen nudo :=0else if i > p ts_c trol then nud o:=p ts_ct rol- grad o+2el se n udo:= i-gr ado+ 1end ;fun ctio n ba se(u: real ; i, k:int eger ):do uble;var n1, n2,d 1,d2, c1,c 2:do uble;beg inif k= 1 thenif (u pts_ ctro l th en nu do:= t[pt s_ctr ol-g rado +2]e lse nudo :=t[i -gra do+1 ]e nd;...Figur a 4.35 I mplementacion d e parame trizacione s no uniformes por medio de un arreglo d e nudos.Esta claro que pueden asignarse valores totalmente arbitrarios a los nudos, (inclusive a los q ue corresponden a la parte que antecede y sucede a los nudos aso ciados al grafo de control), siem pre q ue se respete la condicion de que la secuencia de nudos sea no decreciente. Una form a de implementar computacionalmente dicha secuencia es por m edio de un arreglo auxiliar en vez de una funcion, como se muestra en la Figura 4.35.R ecordamos que el valor de un nudo ti es el valor q ue debe asumir el parametro u cuando la curva pasa de un segmento polinomial al siguiente. Por lo tanto, la secuencia de nudos de una curva se denomina usualmente la para met rizacion de la curva, y permite obtener una gran variedad de resultados a partir de un mismo grafo de control. Sin embargo, no siem pre es predecible o intuitivo el efecto q ue pro duce una determ inada param etrizacion.

Figur a 4.36 Curva B-Spline de tercer grado disminuyendo y au mentan do el valor de u n nudo.

Figura 4.37 La base func ional N 3 (u) ignorando las primeras y ultimas tres.4.4.4 B-Splines cubicos uniformesEn la busqueda de un m etodo de aproximacion geometricamente versatil y com putacionalmente econom ico, se plantean casos particulares para la ecuacion 4.5 de mo do tal que su ex presion se simplique. Especcam ente se elige el m enor grado que produzca resultados satisfactorios, junto con una parametrizacion uniforme que normalmente coincide con la secuencia de enteros no nega- tivos. Lo usual es elegir k = 3 de modo de tener orden de continuidad k 1 = 2. Esto implica que cada segmento polinomial queda denido a partir de la ubicacion de k + 1 = 4 puntos de control. Este caso particular se cono ce como B-Splines cu bicos unif orm es, para los cuales derivaremos una formulacion polinomial sencilla y un esquema computacional muy eciente.En este caso, las funciones de la base tienen que tener soporte entre k +1 =4 nudos sucesivos. Es decir, cada punto ejerce su inuencia en cuatro segmentos polinomiales. Supongamos q ue la funcion N 3(u) aso ciada a pi tiene una forma com o la mostrada en la Figura 4.37, y que la base asociado a to do otro punto de control es la misma, pero desplazada en u.Entonces N 3(ui) esta compuesta por cuatro segm entos funcionales (o sub-bases), etiquetados

b1 (u), b0 (u), b

(u), y b

(u), respectivam ente, por razones que veremos a continuacion. En unintervalo entre dos nudos sucesivos, solo cuatro puntos inuencian la posicion de la curva. Esdecir, cada segmento polinomial es una combinacion convexa de cuatro puntos sucesivos, cada uno participando con una sub-base distinta (ver Figura 4.38).Por dicha razon las sub-bases adoptan los curiosos nombres b1(u), b0 (u), b 1(u), b 2(u). b1 (u)es la sub- base activa aso ciada a pi+1 , b 0(u) es la sub-base activa asociada a pi, bactiva asociada a pi 1, y b2 (u) es la sub- base activa asociada a pi2 . Es decir

(u) es la sub-base

C i(ui)

1X b k(ui)pi+k :k= 2

Figur a 4.38 La base funcion al cubic a, y las cuatro sub-bases activas e ntre d os valores del parametro global.Para encontrar las sub-bases podemos plantear las siguientes condiciones de continuidad.b1 (0) = 0

b_1 (0) = 0

1 (0) = 0

b1 (1) = b0 (0)b0 (1) = b1 (0)

b_1 (1) = _b0(0) b1 (1) = b0(0)b_0 (1) = _b1 (0) b0 (1) = b1 (0)(1) = b

(0)

b_1

(1) = b_

(0)

(1) =

(0)(1) = 0

b_2

(1) = 0

(1) = 0Es decir, tenem os cinco condiciones de continuidad en posicion, en prim era derivada y en segunda derivada. Cada sub-base es un polinom io cubico, con cuatro incognitas. Tenemos 16 incognitas y15 ecuaciones. La condicion faltante es q ue

b1 (u)+ b0 (u) + b

(u)+ b

(u) = 1 para 0 u < 1

R esolviendo las ecuaciones obtenemos:b1 (u) =b0 (u) =

1 u3 ;61(1 + 3u + 3u2 3u3 );6b1 (u) =

1(4 6u261

+ 3u3 );2 3b2 (u) =

(1 3u + 3u6

u ):

De esa manera, cada punto de control pi tiene asociada una base com puesta por cuatro sub-bases no nulas, que determinan su inuencia en la curva C (u). Dados n + 1 puntos de control p0; p1; ; pn , la representacion de la curva de B-Splines cubica es:n1C(u) = [ C i(u);i=2fun ctio n ba se(u: real ;i:i ntege r):d oubl e;beg inca se i of1 : b ase: =u*u* u/6;0 : b ase: =(1+u *3*( 1+u* (1-u) ))/6 ;-1 : b ase: =(4+u *u*3 *(-2 +u))/ 6;-2 : b ase: =(1+u *(-3 +u*( 3-u)) )/6;en d;end ;pro cedu re b splin es(v ar g :graf o_co ntr) ;var i,j ,k,i ndex: inte ger;u,v :rea l;p:p unto ;beg inp.z: =1; p .w:= 1;for k:= 1 to paso s do begi n u :=k/ pasos ;p .x:= 0; p .y:= 0;f or i :=-2 to 1 do beginv:= base( u,i) ;ind ex:=i +j;if index pts_c trol the n ind ex:= pts _ctro l;p.x :=p.x +g[i ndex ].x*v ;p.y :=p.y +g[i ndex ].y*v ;end ;graf _line a(p) ;e nd;end;end ;Figura 4.39 I mp lementacion d e curvas Sp line cubicas uniformes por medio de sub -bases.lo cual es equivalente a una expresion como sumatoria (al estilo de la formulacion de Bezier):n1C (u)= X N 3(u)pi:i=2Por otra parte, teniendo en cuenta que las funciones base tienen soporte solamente en cuatro segm entos polinom iales, la expresion como sumatoria es ineciente, siendo preferible expresarla com o union de los segm entosC i(ui)

1X b k(ui)pi+k :k= 2

El trozo de codigo de la Figura 4.39 muestra una implementacion de curvas B- Splines cubicas uniformes. En la Figura 4.40 se observan curvas B- Spline cubicas uniformes donde cada segm ento polinomial fue computado con el algoritmo m ostrado mas arriba (y gracado en distinto color),

Figur a 4.40 Cu rvas B-Splines de grado 3. La curva de la izquierda es periodica por medio d e la asign acion pi mod n , mientras que la c urva de la d erecha tiene un pu nto de control rep etido(levemente separado para que se aprec ie su ocurre ncia).tom ando como ejemplo una curva cerrada utilizando asignacion periodica, y un grafo de control con puntos de control repetidos.Es posible observar que las curvas B- Spline no pasan por el prim er y ultimo punto de control. En efecto, dada una secuencia de puntos de control p0 ; p1 ; ; pn, el segmento de curvaC 2 (u) = b 2(u)p0 + b

(u)p

+ b (0)p

+ b (u)pcomienza en

1 1 0

2 1 31 4 1C 2(0) = b 2(0)p0 + b1 (0)p1 + b0 (0)p2 + b 1(0)p3 = 6 p0 + 6 p1 + 6 p2 + 0p3:El segmento C 1 no esta denido porque no tenem os punto de control p

. L o mismo sucede conC n (u). En general, estan denidos los segmentos C 2 a C n1 (ver Figura 4.41).Para garantizar que la curva comience en p0 podemos repetir dicho punto. Repitiendo una sola vez, es decir, haciendo que la secuencia comienze con p 1 = p 0, obtenem os la posibilidad de q ue C 1 (u) este denida, yC 1(0) = b 2(0)p0 + b

(0)p

+ b (0)p

+ b (0)p

= 1 p6

+ 4 p6

+ 1 p6

+ 0p :1 0 0

1 1 2

0 0 1 2Es decir, la curva comienza en un punto que esta a 1

de p0 y a 5 de p1 . La unica forma de q ue lacurva pase por p0 es repetirlo.

Figura 4.41 Los segmentos de nid os de una curva B-S pline cubica uniforme.4.4.5 Evaluacion de B-Splines cubicosLa representacion de curvas por medio de B-Splines cubicos uniformes quedo determinada por un esq uema en el cual cada punto de la curva esta determ inado por la sum a convex a de cuatro puntos de control, donde el coeciente de cada punto es un polinomio cubico. Por lo tanto, se requiere un esq uema eciente para evaluar funciones de la formap(u) = a u3 + bu2 + cu + d;con 0 u 1:

Es posible encontrar dicha evaluacion economica utilizando una m etodologa sim ilar a la eva- luacion por diferencias nitas (DDA) com o hicimos en el C aptulo 2 con rectas y circunferencias. Sea n + 1 la cantidad de evaluaciones y sea el increm ento en cada evaluacion el valor1 = :nLa diferencia entre dos evaluaciones sucesivas1 (i) = p((i + 1)) p(i)es una funcion de grado 2. L o mismo puede hacerse para diferencias de m ayor orden:k (i) = k1 ((i + 1)) k 1(i);hasta llegar a una funcion constante, en este caso

3 (i) = :`P `P ` `` `@ P P P ` ` `P P

` ` ` ` `@ @

@@R-

P P P P P P Pq -

` ` ` ` ` ` ` ` ` `` - - 2(0) @@@@

2 () @@@@

2(2) @@@@

2 (3) @@@@

1(0)p(0)

@@R-@@@@ @@R-

1 ()p()

@@R-@@@@ @@R-

1(2)p(2)

@@R-@@@@ @@R-

1 (3)p(3)

@@R-@@@@ @@R-

Figur a 4.42 Evaluacion de un p olin omio cubico por DDA.De esa m anera, conociendo y 2((i 1)) podemos obtener 2(i), para to do i tal q ue

0 i n. Igualmente, con 2(i) y 1 ((i 1)) obtenemos 1(i), 0 i n, y con 1 (i) y p((i 1)) obtenem os p(i), 0 i n.Por lo tanto, solamente es necesario conocer p y los distintos en u = 0. Un rapido analisis nos perm ite encontrarp(0) = d; 1(0) = p() p(0) = a3 + b2 + c ; 2(0) = 1() 1 (0) = 6a3 + 2b2;3 = 2() 2 (0) = 6a3:De esa m anera, es posible computar un polinomio cubico evaluado a intervalos regulares entre

0 y 1, utilizando solam ente tres sumas (ver Figura 4.42).

4.5 Ejercicios1. Implementar los algoritmos de aprox im acion e interpolacion de curvas de Hermite, Bezier(por de Casteljau y por Bernstein) y B-Spline cubicos uniformes.2. Aplicar los metodos a un grupo de grafos de control de prueba (por ejemplo, una \onda cuadrada", una curva cerrada o para aproximar un mapa de la Prov incia). Comparar los resultados obtenidos y el tiempo insum ido, y encontrar ventajas y desventajas de cada uno.3. Dibuje su propia rma. >Que metodo utilizo? >Por que? >Cuantos puntos de control fueron necesarios y cuanto tiempo de trabajo requirio encontrarlos? >Que se concluye?4. Implementar los B- Splines cu bicos uniformes por m edio de curvas de Bezier cu bicas. C om- parar resultados y tiem pos con la implementacion de B-Splines propiamente dichos.5. Implementar B- Splines cubicos no uniformes por medio de curvas de Bezier. Dado un mismo grafo de control, asignar param etrizaciones no uniformes y comparar los resultados.6. Implementar Bezier racionales y NURBS. Aplicar a los mismos problem as que en los ejercicios2 y 3. Comentar los resultados.4.6 Bibliografa recom endadaEl tratam iento de este tema es un po co supercial en los textos clasicos de C omputacion Graca. Al mismo tiem po, el gran desarrollo que ha tenido hace que los resultados recientes guren casi ex clusivamente en artculos en revistas o en libros especcos del tema. De todas maneras, ex isten libros dedicados exclusivamente a curvas y supercies para C AGD que comienzan desde un nivel adecuadam ente introductorio y presentan to do lo necesario para cono cer el m aterial clasico sobre curvas y supercies de Bezier y B -Splines. L a recom endacion basica es el libro de Farin [30], el cual es exhaustivo y presenta los tem as de relevancia de una manera clara y denitiva. Otro libro recomendable es el de Bartels, Barsk i y B eatty [6], que sin ser tan riguroso y preciso presenta algunos temas avanzados desarrollados por los autores, y que no es posible encontrar en otros tex tos.Por razones de espacio hem os omitido de este Captulo las curvas racionales y los -Splines. Recomendamos a los interesados q ue consulten [26]. Un buen m aterial introductorio al tema de las curvas racionales puede leerse en [70], donde se presenta la interpretacion proyectiva de las curvas de Bezier racionales y se deriva el sistema de coordenadas baricentrico asociado a las bases de Bernstein racionales. El mismo autor presenta en [71] una introduccion a las curvas y supercies NURBS. L os -Splines son un desarrollo relativamente reciente. L a discusion acerca de la continuidad parametrica ver sus la continuidad geometrica esta presentada en [5]. Los - Splines son comparados con los metodos clasicos en [3], y la derivacion de la ecuacion del control local para los parametros de forma esta en [4].

5 C El Color enomputacionGraca

5.1 Int ro duccion El descenso en el costo de los monitores determina que en la actualidad practicamente en to das las aplicaciones de Com putacion Graca se utiliza intensivam ente el color, com o m edio de re- presentacion (por ej emplo, asociar una escala de colores con temperaturas o altitudes), con nes\cosmeticos", para m ejorar la apariencia y legibilidad de una interfase graca, o para dar realismo

a la representacion de objetos en una escena tridim ensional sintetica. El color es un elem ento indispensable en las aplicaciones en las que se busca una representacion con realismo, porq ue la simulacion de los fenomenos opticos que ocurren en los objetos reales (reexion, refraccion, etc.) se realiza en form a adecuada a traves de una ecuacion de ilum inacion (ver C aptulo 7). Dicha ecuacion se basa implcitamente en un mo delo de color, cromatico o mono cromatico (escala de grises).El tema del color es rico y complejo, involucrando conceptos de fsica, siologa y psicologa, ademas de los aspectos computacionales que son de nuestro interes. En este Captulo dedicare- mos las prim eras Secciones a presentar los elem entos fundamentales de la teora del color, para luego introducirnos en los espacios cromaticos, es decir, espacios que perm iten una representacion sistematica de los colores, y por u ltimo a la representacion del color en las tarjetas gracas.5.2 Asp ect os Fsicos del ColorEl color es una sensacion siologica producida por la accion de ondas electrom agneticas especcas en los receptores nerviosos de la retina. Es decir, su origen prim ario es en una distribucion de energa electrom agnetica en el espectro visible. Sin embargo, es una magnitud relativa, dado que dicho espectro en general no depende de la radiacion lumnica propia de los obj etos. En general el color de un objeto no depende solo de este, sino tambien de las fuentes de luz que lo iluminan y de otras consideraciones que veremos en detalle en el Captulo 7:

Iluminantes ! Objetos ! ObservadorEl observador, al mismo tiempo, impone sus caractersticas propias, dado que el estmulo pro- ducido por una misma distribucion espectral de energa no siempre produce la misma percepcion visual:Estmulo ! Sensacion ! PercepcionAs, pese a estar originado en una magnitud fsica objetiva (la longitud de onda de las radia- ciones del estmulo) no es posible encontrar una denicion intrnseca del color de un objeto, sino que todas las descripciones deben ser relativas a una condicion ambiental y siologica dada. Una de las caractersticas menos problematicas de comprender en el color es su componente acromatica o intensidad lum inosa (tambien llamada luminancia o lum inosidad). La luz acromatica es la pro- ducida, por ejemp