miércoles, 10 de octubre de 2012

CAP. 1.- CONCEPTOS BÁSICOS .

Curso de Programación gráfica

Dispositivos Gráficos
Los resultados de una aplicación pueden mostrarse en gran variedad de dispositivos de salida. Sin embargo estos dispositivos son de pantalla o de impresora. Desde el punto de vista de la computación gráfica, es importante ver la siguiente clasificación que son manejados por la computadora. Podemos ver dispositivos con los siguientes tipos:
  • Dispositivos de vectores, los cuales reciben de la computadora la información geométrica de la localización y tamaño de las primitivas que soportan, de las cuales produce una reproducción “caligráfica”.
  • Dispositivos de raster, los cuales reciben de la computadora la información de una serie de pixels, los cuales son posicionados en forma continua.
Los dispositivos de vectores fueron los primeros en desarrollarse, pero luego del vertiginoso descenso en el costo de la memoria volátil, a partir de la década de los 70’s se hicieron mas baratos los dispositivos raster.

Dispositivos de Vectores.

Actualmente estos dispositivos son más caros, pero tiene ciertas ventajas que los hacen únicos. Por ejemplo, tienen mucha mejor resolución y precisión que los dispositivos raster, y requieren un ancho de banda de comunicación mucho menor dado que no reciben la discretización completa de las primitivas sino solamente su posición.
  • Plotters. Grafican en una hoja (que en algunos casos puede ser de gran tamaño) sobre la cual se desliza una pluma movida por motores de pasos de gran precisión. En los plotters de tambor la pluma se desliza en sentido horizontal y el papel en sentido vertical. En los plotters planos (más económicos), el papel es fijo y la pluma es la que realiza todos los movimientos. Es posible utilizar colores por medio de varias plumas. Son ideales para graficación rápida y precisa de planos.
  • Displays de almacenamiento. Al igual que televisores y monitores, esto dispositivos son pantallas de rayos catódicos, pero difieren de ciertos aspectos tecnológicos, esencialmente, la pantalla tiene cierta “memoria” electrostática que mantiene visible los elementos graficados con muy alta precisión y sin necesidad de refresco. Por lo tanto, una imagen muy compleja a la cual se van agregando elementos en orden es idealmente representada por estos dispositivos. El borrado, sin embargo no puede hacerse en forma selectiva, por lo que no se puede alterar la posición de un elemento sin tener que borrar y redibujar todos lo elementos del gráfico.
Dispositivos Raster.
  • Impresoras de matriz. Era hasta hace poco el dispositivo de impresión más común. Recibe de la computadora la información gráfica como una secuencia de líneas, las cuales va reproduciendo con una cabeza impresora.
  • Impresora láser. Recibe de la computadora la información gráfica como una secuencia de líneas, las cuales almacena en su memoria local. Dicha memoria es utilizada para comandar la intensidad de un de láser que recorre línea por línea el papel, mientras es expuesto al contacto del toner.
  • Monitores. Se han popularizado enormemente a partir del descenso del precio de la memoria volátil y el incremento de la calidad de las presentaciones (resolución, color, precisión) Esencialmente se comporta de una manera similar a un receptor de televisión, excepto por el echo de que recibe la señal de video y sincronismo en forma directa de la computadora y no a través de una portadora de radio. Debe existir un refresco de la imagen en memoria, la cual es recogida por la tarjeta gráfica de la computadora para producir las líneas de barrido.
Hardware Gráfico para Monitores.
Los dispositivos de raster requieren un refresco permanente de la discretización de la salida gráfica. En el caso de los monitores, dicho refresco se realiza en un segmento de la memoria volátil de la computadora denominada FRAME BUFFER o buffer de pantalla, que usualmente se implementa por medio de la memoria RAM de alta velocidad localizada dentro de la tarjeta gráfica. El buffer de pantalla es accedido en forma rítmica por el generados de video, que es el encargado de componer la señal de video hacia el monitor. Al mismo tiempo, al producirse una salida gráfica por parte de la CPU de la computadora, la misma debe ser discretizada y almacenada en el buffer de la pantalla. Este acceso debe ser permitido solamente en los momentos en los que el generador de video no está accediendo al buffer, y por lo tanto se requiere el uso de un árbitro que mantenga abierto el acceso al buffer solo en esos casos.
El temporizador es crítico en el manejo del buffer de pantalla, por lo que se requiere memoria RAM de alta velocidad, mucho mayor que la velocidad requerida PATRA la RAM de la CPU. Por ejemplo, en una norma de video de 1024 pixels por línea, la pantalla es refrescada 35 veces por segundo a una tasa de aproximadamente un millón de pixels por pantalla. Esto significa que en promedio el buffer de pantalla es accedido 35 millones de veces por segundo por el generador de video, lo cual requiere una velocidad de acceso a memoria de aproximadamente 30ns para cumplir solo con el refresco de la pantalla.
Otro esquema posible para manejar la memoria de pantalla es utilizar la tecnología de bus local (difundida alrededor de 1993 con la motherboard 486 y tarjetas Vesa Local Bus). Básicamente la idea es evitar el uso del bus de datos ISA para interconectar la tarjeta gráfica con la CPU. De ese modo u segundo bus (llamado bus local) , normalmente de 32 bits en ves de 16, con la velocidad del reloj externo del microprocesador (50 Mhz. En vez de 8.33) y con una capacidad de acceso directo a memoria.


Este tipo de configuraciones permite una mejor utilización del ancho de banda marginal de la memoria del frame buffer, y por lo tanto, en determinadas aplicaciones, como por ejemplo animaciones, la presentación de un mismo hardware aumenta en un orden de magnitud solamente al modificar la configuración de accesos.
La evolución del hardware gráfico en PC siguió esquemas similares, utilizándose primero el port PCI y actualmente el AGP. Las tarjetas gráficas PCI tienen una configuración similar a las ISA dado que el prot esta pensado para dispositivos genéricos. Sin embargo, el acceso a 32 bits a frecuencia de reloj externo, y en algunos casos con posibilidades de acceso directo a memoria. El port AGP, por su parte, permite un acceso de 64 bits a frecuencia interna de reloj directamente al bus interno y al cache. Por lo tanto se espera un rendimiento mucho mayor que los demás. Recapitulando, la clave del funcionamiento de la tarjeta gráfica no está en los requisitos de la memoria sino en la estructura del generador de video. El generador de video debe recorrer la memoria del buffer de pantalla y entregar las líneas de barrido al monitor dentro de una determinada norma de video. Dicha norma puede ser una norma de televisión (PAL o NTSC) o de monitor (1024x786) entonces, el barrido es producido por un generador de barridos cuya frecuencia horizontal y vertical son programables en función de la norma utilizada.
La señales de barrido son enviadas al monitor, pero también se utilizan para encontrar la posición de memoria en la cual está almacenada la información gráfica de cada píxel que constituye una línea de barrido.
Esto se realiza por medio de la unidad aritmética que encuentra una dirección lineal a partir de valores de la señal de barrido horizontal y vertical. La dirección lineal habilita la salida del valor almacenado en un lugar de la memoria del buffer de pantalla dicho valor es transformado en información gráfica por medio de una tabla de color.
En las tarjeta gráficas se representa el color por medio del espacio cromático RGB. Esto significa que el color de cada píxel se representa por medio de una terna de valores de los componentes rojo, verde y azul respectivamente que tiene dicho color. Normalmente es innecesario almacenar dicha terna para cada píxel. En cambio se utiliza una tabla de colores predefinidos para lograr un uso más eficaz del buffer de pantalla, dado que en el mismo no se almacena el color del píxel sino el índice del color correspondiente en la tabla de colores, por ejemplo, se utilizan solamente 256 colores simultáneos, entonces es necesario almacenar solamente 1 Byte de índice para cada píxel.
El manejo se simplifica en el modelo true color, en el cual cada píxel tiene alocada la memoria para representar los componentes RGB del color que se está seteando, esto significa triplicar el tamaño del buffer de pantalla y el ancho de banda de memoria asociada, lo cual tiene un costo bastante elevado, pero permite representar 16.7 M colores simultáneos.


Técnicas de Discretización.
A partir de este punto, y en lo resta del capítulo nos vamos a comprometer con el modelo de dispositivo de raster. Para conseguir independencia de dispositivo, entonces, es necesario adoptar un conjunto de primitivas y establecer una serie de métodos que permitan representar dichas primitivas de raster satisfaciendo un conjunto de especificaciones.

El Sistema Físico de Coordenadas.
El primer caso para conseguir una representación adecuada de las primitivas es caracterizar matemáticamente el medio que nos permite representarlas. La primitivas gráficas independientes del dispositivo ( en la “imagen” mental del usuario) normalmente se representan en un espacio euclidiano de una determinada dimensión. En dichas condiciones en punto es una entidad matemática P=(x,y) donde (x,y) pertenecen a R^2.
En el soporte aritmético de la computadora, dicha representación se efectúa con los tipos de datos provistos, que pueden ser números reales con punto flotante de simple o doble precisión. Este espacio se denomina espacio de la escena y es uno de los muchas espacios que se utilizarán para factorizar adecuadamente las diversas tareas de un sistema gráfico.
Por ultimo, en el soporte gráfico del buffer de pantalla, un punto es representado como un píxel, y dicha representación se efectúa setenado una posición de memoria con un contenido dado. Este espacio se denomina espacio de pantalla, y se direcciona a partir del sistema de coordenadas físico, cuto origen es el vértice superior izquierdo.
Es posible encontrar varias correspondencias posibles entre el sistema de coordenadas físico y un sistema de coordenadas arbitrario en el espacio de la escena. En la literatura normalmente se considera que un píxel es un “punto con extensión” en el espacio de la escena, y por lo tanto el origen de dicho espacio coincide con el vértice superior izquierdo del picel (0,0), desde nuestro punto de vista, esto no es del todo correcto, y parece más adecuado pensar que el origen del sistema de coordenadas de la escena está en el centro del píxel (0,0).
De esa manera, el espacio de la pantalla es un espacio discreto y acotado [0..maxx]x[0..may], con maxx, maxy ∈ N, el cual está en correspondencia con el espacio de la escena (euclídeo) (x,y) ∈ R2 a través de las operaciones x:= round (x); y Y:= round(y); Por dicha razón es que la operación de llevar una primitiva del espacio de la escena al espacio de la pantalla se denomina discretización.

Especificaciones de una discretización.
En el momento de escoger un método de discretización para una primitiva gráfica, es indispensable contar con criterios que permitan evaluar y comparar las ventajas y desventajas de las distintas alternativas. Entre todas las especificaciones posibles, podemos mencionar las siguientes:
  • Apariencia es la especificación más obvia, aunque no es fácil describirla en términos formales. Normalmente se espera que un segmento de recta tenga una “apariencia recta” más allá de que se hayan escogido los pixeles matemáticamente más adecuados. Tampoco debe tener discontinuidades o puntos espúreos. Debe pasa por la discretización del primer y último punto del segmento. Debe ser uniforme, Etc.
  • Simetría e in variancia geométrica esta especificación se refiere a que un método de discretización debe producir resultados equivalentes si se modifican algunas propiedades geométricas de la primitiva que se está discretizando. Por ejemplo, la discretización de un segmento no debe variar si dicho segmento se traslada a otra localización en el espacio, o si es rotado. Etc.
  • Simplicidad y velocidad de computo como los métodos tradicionales de discretización de primitivas se desarrollaron hace tres décadas, en momentos en que las posibilidades del harware y software eran muy limitad, los resultados eran muy sensibles al uso de la memoria u operaciones aritméticas complejas. Por lo tanto, los métodos tienden a no depender de estructuras complejas y a ser directamente implementados en hardware específico de baja complejidad.
Métodos de Discretización .
Dada una primitiva gráfica a discretizar, debemos encontrar los pixeles que la representen de la manera mas correcta posible. Para ello, lo más adecuado es caracterizar matemáticamente dicha primitiva, de modo que su discretización pueda efectuarse en forma sencilla. Entre los diversos métodos que pueden plantearse destacamos los dos siguientes.
  • Evaluar su ecuación diferencial a diferencias finitas. Este método, denominado DDA (discrete diference analyzer) consiste en plantear una ecuación diferencial de la primitiva a discretizar, y luego evaluar dicha expresión a intervalos adecuados.
  • Análisis de error Estos métodos fueron desarrollados por Bressenham y se basan en el analizador, dado un píxel que pertenece a la discretización de la primitiva, cual es el próximo píxel que minimiza una determinada expresión que evalúa el error que comete la discretización.
Referencias: Dpl. Ing.Carlos Balderrama Vazquez 

No hay comentarios:

Publicar un comentario