Unidad 2

Graficación en 2D

Es la generación de imágenes digitales por computadora sobre todo de modelos bidimensionales (como modelos geométricos, texto e imágenes digitales 2D) y por técnicas específicas para ellos. La palabra puede referirse a la rama de las ciencias de la computación que comprende dichas técnicas, o a los propios modelos.

Se utiliza principalmente en aplicaciones que fueron desarrolladas originalmente sobre tecnologías de impresión y dibujo tradicionales, tales como:
  • Tipografía
  • Cartografía
  • Dibujo técnico
  • Publicidad, etc

Trazo de líneas rectas, representación y trazo de polígonos
DDA

El analizador diferenciador digital (DDA - Digital Differential Analyzer) es un algoritmo de conversión de rastreo que se basa en el calculo ya sea de DDpor medio de las ecuaciones:

(4) DDx

(5) DDm

Se efectúa un muestreo de la línea en intervalos unitarios en una coordenada y se determina los valores enteros correspondientes mas próximos a la trayectoria de la línea para la otra coordenada.

Tomemos una línea con pendiente positiva, si la pendiente | £ 1, se hace el muestreo en en intervalos unitarios (D= 1 y Ddado que DDx) y se calcula cada valor sucesivo de como:

(6) yk+1 = yk+ m

El subíndice toma valores enteros a partir de 1 y aumenta a razón de 1 hasta alcanzar el valor final.

Ya que puede ser cualquier numero real entre 0 y 1, los valores calculados de deben redondearse al entero mas cercano. Para líneas con una pendiente | | > 1, se revierten las funciones de y, o sea, se realiza un muestreo de en intervalos unitarios (D= 1 y D= 1/dado que DDx) y se calcula cada valor sucesivo de como:

(7) xk+1 = xk1/m

Las ecuaciones (6) y (7) se basan en la suposición de que las líneas deben procesarse del extremo izquierdo al derecho.

Si este procesamiento se revierte, entonces DDserian -1, y   yk+1 = y- m xk+1 = x1/m


Algoritmo de Bresenham para trazar líneas

Un algoritmo preciso y efectivo para la generación de líneas de rastreo, desarrollado por Bresenham (1965), convierte mediante rastreo las líneas utilizando solo cálculos incrementales con enteros que se pueden adaptar para desplegar también curvas.

El algoritmo busca cual de dos pixeles es el que esta mas cerca según la trayectoria de la línea.

Consideremos el proceso de conversión para líneas con pendiente positiva 0 < < 1.

Las posiciones de pixel a lo largo de la trayectoria de una línea se determinan al efectuar un muestreo de en intervalos unitarios.

Si se inicia desde el extremo izquierdo (x0,y0) de una línea determinada, se pasa a cada columna sucesiva y se traza el pixel cuyo valor de se aproxima mas a la trayectoria de la línea de rastreo.

Si suponemos que se debe desplegar el pixel en (xk,yk), a continuación se necesita decidir que pixel se debe desplegar en la columna xk+1.

Las alternativas son los pixeles (xk+1,yk), y (xk+1,yk+1).

Al realizar el muestreo en la posición xk+1 designamos la separación de pixeles verticales de la trayectoria de la línea matemática como dd2.


 La coordenada de en la línea matemática en la posición de la columna de pixel xk+1 se calcula como:

(10) (x+ 1) + b

Entonces

dy(x+ 1) + – yk                  y               d= (y+ 1) - y+ 1 - (x+ 1) - b

La diferencia entre estas dos separaciones es

(11) dd= 2 (x+ 1) - 2 y+ 2 - 1

Un parámetro de decisión ppara el paso en el algoritmo de línea se puede obtener al reordenar la ecuación anterior, de modo que implique solo cálculos de enteros.

Esto se logra sustituyendo DDdonde DDson las separaciones horizontal y vertical de las posiciones de los extremos de la línea y al definir:

(12) pD(dd2) = D(2 DD(x+ 1) - 2 y+ 2 - 1)

= 2 Dy x- 2 Dx y+ 2 D+ 2 DDx

= 2 Dy x- 2 Dx yc

El signo de pes el mismo que el de ddpuesto que D> 0 en el ejemplo.

El parámetro es un constante, donde = 2 D+ 2 DDx, que es independiente del pixel.

Si el pixel yesta mas cerca de la trayectoria de la línea que el pixel y+ 1 (es decir dd2), entonces el parámetro de decisión pes negativo.

En ese caso, trazamos el pixel inferior; de otro mode, trazamos el pixel superior.

Los cambios de coordenadas a lo largo de la línea ocurren en pasos unitarios ya sea en la dirección de o en la de y.

Por tanto, es posible obtener los valores de parámetros de decisión sucesivos al utilizar cálculos incrementales en enteros. En el paso + 1, el parámetro de decisión se evalúa con base en la ecuación anterior como:

pk+1 = 2 Dy xk+1 - 2 Dx yk+1 c

Al sustraer la ecuación (12) de la anterior obtenemos

pk+1 p= 2 D(xk+1 xk) - 2 Dxyk+1 yk)

Pero xk+1 x+ 1, de manera que

(13) pk+1 p+ 2 D- 2 Dxyk+1 yk)

donde el termino yk+1 yes 0 o 1, dependiendo del signo del parámetro p. Este calculo recurso de los parámetros de decisión se realiza en cada posición entera de x, empezando en el extremo izquierdo de las coordenadas de la línea. El primer parámetro pse evalúa a partir de la ecuación (12) en la posición del pixel inicial (x0,y0), sustituyendo

con b = ym xDDx.

pD(2 DDx(x+ 1) - 2 y+ 2 (y- (DDxx0) - 1)

= 2 Dy x+ 2 D- 2 Dx y+ 2 Dx y- 2 Dy xDx

donde se obtiene la siguiente ecuación:

(14) p= 2 DDx

En resumen, los pasos son:

1. Se capturan los dos extremos de la línea y se almacena el extremo izquierdo en (x0,y0).

2. Se carga (x0,y0) en el bufer de estructura, o sea, se traza el primer punto.

3. Se calculan las constantes DyDx, 2Dy, 2Dy-2Dx, y se obtiene el valor inicial para el parámetro de decisión como p= 2 DDx.

4. En cada xa lo largo de la línea, que inicia en k = 0, se efectúa la prueba siguiente: si p< 0, el siguiente punto que se debe trazar es (xk+1,yk) y p+1 = p+ 2 Dy. De otro modo, el siguiente punto en trazarse es (xk+1,yk+1)

p+1 = p+ 2 Dy - 2Dx.

5. Se repite el paso 4 otras Dveces.


Transformación bidimensional

Aquí estudiamos primero los procedimientos generales para aplicar parámetros de traslación, rotación y escalación para cambiar la posición y el tamaño de los objetos bidimensionales.

Traslación.- Se aplica una transformación en un objeto para cambiar su posición a lo largo de la trayectoria de una línea recta de una dirección de coordenadas a otra. Convertimos un punto bidimensional al agregar las distancia de traslación, tx y ty a la posición de coordenadas original (x, y) para mover el punto a una nueva posición (x’, y’) El par de distancia de traslación (tx’ ty’) se llama vector de traslación o vector de cambio.



Rotación.- Se aplica una rotación bidimensional en un objeto al cambiar su posición a lo largo de la trayectoria de una circunferencia en el plano de x y. Para generar una rotación especificamos un ángulo de rotación y la posición Xr’ Yr’ del punto de rotación o punto pivote en torno al cual se gira el objeto.



Escalación.- Una transformación de escalación altera el tamaño de un objeto. Se puede realizar esta operación para polígonos al multiplicar los valores de coordenadas (x, y) de cada vértice por los factores de escalación sx y sy para producir las coordenadas transformadas (x’, y’).



El factor de escalación sx escala objetos en la dirección de x, mientras que el factor de escalación sy lo hace en la dirección de y.

Cuando se asignan el mismo valor a sx y sy’ se general una escala uniforme. Y cuando se asignan valores distintos a sx y sy se obtiene un escala diferencial.
Podemos encontrar la localización de un objeto escalonado al seleccionar una posición llamada punto fijo, que debe permanecer sin cambio después de la transformación de escalación.



Representación matricial

• Muchas aplicaciones incluyen secuencias de transformaciones geométricas:
– Una animación requiere que los objetos se trasladen y roten en cada fotograma
– Un diseño CAD requiere muchas transformaciones hasta obtener el resultado final
• Debemos formular de forma muy eficiente toda la secuencia de transformaciones
• Cada transformación puede representarse como P’ = P M1 + M2
• La matriz M1 contiene la información de ángulos y factores de escala
• La matriz M2 contiene los términos de traslación asociados al punto fijo y al centro de  rotación
• Para producir una secuencia de transformaciones hay que calcular las nuevas  coordenadas en cada transformación! P’’ = P’ M3 + M4 = … = P M1 M3 + M2 M3 + M4
• Buscamos una solución más eficiente que permita combinar las transformaciones para  obtener directamente las coordenadas finales a partir de las iniciales.



Ventana y puerto de visión

Los programas de aplicaciones definen imágenes en un sistema de coordenadas mundiales. Este puede ser cualquier sistema de coordenadas Cartesianas que un usuario halle conveniente. Las imágenes definidas en coordenadas mundiales son procesadas por el sistema de graficas en coordenadas de dispositivo. Comúnmente, un paquete de graficas permite a un usuario especificar qué área de la definición de la imagen se desplegara y donde se colocara en el dispositivo de despliegue. Podría elegirse una sola área para el dispositivo de despliegue o bien podrían seleccionarse varias áreas.

Estas áreas pueden colocarse en localidades aparte del despliegue o bien un área puede servir como una pequeña inserción en un área mayor. Este proceso de transformación implica operaciones para trasladar y escalar áreas seleccionadas y para borrar partes de la imagen que estén fuera de las áreas. Estas operaciones se conocen como colocación de ventanas y recorte.

CONCEPTOS DE COLOCACIÓN DE VENTANAS

Un área rectangular que se especifica en coordenadas mundiales se denomina ventana. El área rectangular en el dispositivo de despliegue en el cual se coloca la ventana se llama puerta de visión. La figura 1 ilustra el trazo o planimetría de la selección de una imagen que queda dentro del área de ventana en una puerta de visión designada. Esta planimetría se llama transformación de la visión o bien transformación de normalización.




Los límites de la ventana se especifican en coordenadas mundiales. Las coordenadas de dispositivo normalizadas se usan con mayor frecuencia para la especificación de la puerta visión, aunque las coordenadas del dispositivo pueden emplearse si hay solamente un dispositivo de salida en el sistemas. Cuando se usan coordenadas de dispositivo normalizadas, el programador considera el dispositivo de salida como aquel que tiene valores coordenados dentro del intervalo de 0 a 1.



No hay comentarios:

Publicar un comentario