Graficación en 2D
¿Que es la 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.
En
muchos dominios, tales como la autoedición, ingeniería y negocios, una
descripción de un documento basado en las técnicas de computación 2D pueden ser
mucho más pequeñas que la correspondiente imagen digital, a menudo por un
factor de 1/1000 o más.
Los
gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos
de gráficos vectoriales. Éstos fueron suplantados en gran parte por
dispositivos basados en gráficos raster en las décadas siguientes. El lenguaje
PostScript y el protocolo desistema de ventanas X fueron piezas claves en la
evolución histórica del campo
Se llaman gráficos a todos los objetos que se pueden
dibujar en una escena: puntos, segmentos, curvas, arcos, (lugares geométricos
de) ecuaciones, textos, imágenes, macros, etc.
Trazo de lineas rectas
La línea es el elemento
básico de todo grafismo y uno de los más usados, teniendo tanta importancia en
un grafismo como la letra en un texto. Representa la forma de expresión más
sencilla y pura, pero también la más dinámica y variada.
Está formada por la unión de
varios puntos en sucesión, pudiéndose asimilar a la trayectoria seguida por un
punto en movimiento, por lo que tiene mucha energía y dinamismo. Su presencia
crea tensión y afecta al resto de elementos cercanos a ella.
Define
el camino más corto entre dos puntos. Es poco frecuente en la naturaleza, donde
predominan las líneas curvas (el universo en su totalidad es curvo), pero muy
abundante en el entorno humano, que necesita de ellas para dar estabilidad a
sus creaciones.
ALGORITMOS
PARA EL TRAZO DE LÍNEAS
Algoritmo Básico
El
algoritmo básico sería utilizar la ecuación anterior para calcular y en termino
de x (o viceversa).
Esto
sería bastante lento ya que requeriría siempre una multiplicación más una suma:
y
= m x + b
Los
siguientes algoritmos mostrarán como se pueden hacer más eficientes estos
cálculos utilizando algoritmos más elaborados.
Algoritmo
de Línea DDA
El
analizador diferenciador digital (DDA - Digital Differential Analyzer) es un
algoritmo de conversión de rastreo que se basa en el cálculo ya sea de Dy o Dx por
medio de las ecuaciones.
Dy
= m Dx
Dx
= Dy / m
Se
efectúa un muestreo de la línea en intervalos unitarios en una coordenada y se
determina los valores enteros correspondientes más próximos a la trayectoria de
la línea para la otra coordenada.
Algoritmo de Línea Bresenham Básico
Existe un algoritmo con el cual se crean las lineas rectas en una computadora este es el algoritmo de Bresenham.
El algoritmo Bresenham es un algoritmo creado para dibujar rectas en los
dispositivos de gráficos rasterizados, como por ejemplo un monitor de
ordenador, que determina qué pixeles se rellenarán, en función de la
inclinación del ángulo de la recta a dibujar.
Es
un algoritmo preciso para la generación de líneas de rastreo que convierte
mediante rastreo las líneas al utilizar solo cálculos incrementales con enteros
que se pueden adaptar para desplegar circunferencias y curvas. Los ejes verticales
muestran las posiciones de rastreo y los ejes horizontales identifican columnas
de pixel.
Algoritmo de Punto Medio para la Línea
Una
extension al algoritmo de Bresenham es la técnica del punto medio (midpoint
technique). Publicada por primera vez por Pitteway (1967) y adaptada por Van
Aken (1984) y otros investigadores.
Para
líneas y círculos de enteros, la formulación de punto medio, como la muestra Van
Aken (1985), se reduce a la formulación de Bresenham y por lo tanto se generan
los mismos pixeles.
Bresenham
(1977) mostró que este algoritmo de línea y circulo de enteros proveen la mejor
aproximación a líneas y círculos verdaderos al minimizar el error (distancia) a
las primitivas reales.
Kappel
(1985) discute los efectos de varios ¡criterios de error.
Se
asume que la pendiente de la línea es entre 0 y 1.
Otras
pendientes se pueden manejar como reflexiones sobre ejes principales.
Se
define a (x0,y0) como el extremo inferior izquierdo y (x1,y1) como el extremo
superior derecho.
Consideremos la siguiente figura.
Representación y trazo de polígonos
Los polígonos son figuras planas cerradas y simples que esta formada por
segmentos. Los
elementos de los polígonos son: Lados, Vertices, Diagonales Y Ángulos Interiores,
Exteriores Y Centrales.
Los
polígonos se
clasifican:
Polígonos
regulares son los que tienen sus lados y sus ángulos interiores iguales.
Polígonos irregulares son los que no tienen sus lados y ángulos interiores diferentes.
.jpg)
Polígonos irregulares son los que no tienen sus lados y ángulos interiores diferentes.
.jpg)
Trazo de polígonos
OpenGL maneja polígonos correctamente
siempre y cuando sean simples y convexos. Si ese no es el caso, OpenGL dibuja
cosas raras.
Además en algunas ocasiones se quiere
especificar el vector normal del plano en el cual se encuentra el polígono.
Dicho vector normal se necesita p.e. para algoritmos de visualización avanzada
(``Phong shading'').
Cuando se escriben aplicaciones gráficas
nos enfrentamos con el problema siguiente: desde alguna fuente ``vienen''
listas de puntos (o bien de otro programa, o bien de un fichero, o bien de modo
interactivo) y hay que interpretar las listas como polígonos, es decir, hay que
verificar si las listas cumplen la definición de especificar polígonos simples
y convexos. Si ese no es el caso, a lo mejor se pueden ``corregir'' las listas.
(Programas con tal propiedades se llama robustos y tolerantes.)
Entonces (en el caso de mera
visualización con OpenGL):
Se puede eliminar puntos múltiples
consecutivos en la lista.
Se puede intentar calcular el plano en
el cual se encuentran más o menos los puntos del polígono (eso no es tan
trivial).
En dicho plano, es decir, una vez
corregidos los puntos hasta que se encuentren exactamente en el plano, se puede
verificar si el polígono es simple y convexo (eso es algo bastante fácil).
Si no es así, se podría subdividir el
polígono en partes simples y convexos para seguir trabajando después con las
partes sin problemas (este paso no lo vamos a realizar en estas prácticas).
Antes de dedicarnos a los detalles,
dibujamos polígonos con OpenGL asumiendo que la lista de puntos cumple la definición.
Siempre que se quiera dibujar un objeto
de OpenGL (en este caso unos polígonos, antes vimos puntos y segmentos), hay
que decírselo de antemano con la función
glBegin()
La lista de puntos se define con
consecutivas llamadas a
glVertex*()
y se termina el trabajo con
glEnd()
En lugar de dibujar polígonos
rellenados, OpenGL puede dibujar, o bien solo las esquinas o bien solo los
segmentos del borde. Eso se realiza con la función
glPolygonMode()
a la cual hay que pasar también cuál de
las dos posibles caras del polígono se quiere pintar.
Además se pueden llenar los polígonos
con patrones que no detallamos por el momento.
glEnable()
glPolygonStipple()
El método que se
utiliza para graficar un polígono son los mismos que mencionamos
anteriormente como lo es el algoritmo de
Bresenham.
Transformación bidimensional
- Traslación
En primera
definiremos que es una traslación, una traslación se refiere a cambios en la
posición. Se aplica una traslació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 distancias de
traslación, tx y ty la posición de coordenadas original (x,y).
El par de distancia de traslación se llama vector de traslación o vector
de cambio. Se pueden expresar las ecuaciones anteriores en una sola ecuación
matricial al utilizar vectores de columna para representar las posiciones de
coordenadas y el vector de traslación
Los polígonos se trasladan al sumar el vector de traslación a la
posición de coordenadas de cada vértice y se vuelve a generar el polígono
utilizando un nuevo conjunto de coordenadas y vértices y las especificaciones
actuales de los atributos.
En primera
definiremos que es una traslación, una traslación se refiere a cambios en la
posición. Se aplica una traslació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 distancias de
traslación, tx y ty la posición de coordenadas original (x,y).
El par de distancia de traslación se llama vector de traslación o vector
de cambio. Se pueden expresar las ecuaciones anteriores en una sola ecuación
matricial al utilizar vectores de columna para representar las posiciones de
coordenadas y el vector de traslación
Los polígonos se trasladan al sumar el vector de traslación a la
posición de coordenadas de cada vértice y se vuelve a generar el polígono
utilizando un nuevo conjunto de coordenadas y vértices y las especificaciones
actuales de los atributos.
En
la figura se muestra el efecto de trasladar un objeto 3 unidades en x y -4
unidades en y.
- Escalamiento
Un escalamiento significa un cambio en el tamaño de un objeto, altura y anchura.
El
escalamiento se hace con un factor sx en el eje x y en un factor syen el eje y.
Escalamiento
uniforme sx = sy
Escalamiento
diferencial.
La
transformación de escalamiento puede expresarse con las siguientes multiplicaciones.
- Rotación
En una rotación existe un movimiento circularen el hay un punto central que se mantiene fijo y todo lo demás
se mueve alrededor de ese punto en círculos.
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 xy . Para generar
una rotación, especificamos un ángulo de rotación θ y la posición (x r , y r )
del punto de rotación (o punto pivote) en torno al cual se gira el objeto.
Ejemplo de rotación:
Representación matricial
En
las aplicaciones de diseño y de creación de imágenes, realizamos traslaciones,
rotaciones y escalaciones para ajustar los componentes de la imagen en sus
posiciones apropiadas.
En este tema consideramos cómo se pueden volver a
formular las representaciones de la matriz de modo que se pueden procesar de manera
eficiente esas secuencias de transformación. Es posible expresar cada una de
las transformaciones básicas en la forma de matriz general con las posiciones
de coordenadas P y P’ representadas como columnas de vector.
Con
las representaciones de matriz podemos establecer una matriz para cualquier
secuencia de transformaciones como una matriz de transformación compuesta al
calcular el producto de la matriz de las transformaciones individuales. La
creación de productos de matrices de transformación a menudo se conoce como
concatenación o composición de matrices.
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 M2contiene 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
Algunos
paquetes gráficos permiten que el programador especifique coordenadas de
primitivas de salida en un sistema de coordenadas de mundo de punto flotante,
usando las unidades que sean relevantes para el programa de aplicación:
angstroms, micras, metros, millas, años luz, etcétera. Se emplea el término de
mundo porque el programa de aplicación representa un mundo que se crea o
presenta interactivamente para el usuario.
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.
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.
Conclusiones
En esta
segunda unidad se dieron a conocer varios métodos y herramientas para
la manipulación y creación de imágenes en 2D
,este tema es muy extenso y complicado por la gran cantidad de nuevas
definiciones pero suelen ser no muy complicados de asimilar si se relacionan
con imágenes para el mejor entendimiento también note que
los mismos conceptos están relacionados con la graficación en 3D la
cual toma un enfoque diferente ya que los usos para los que tiene como
fin no son los mismos ni se desarrollan siempre en los mismos programas.
Me sorprende la manera en que todos los métodos para graficar son matemáticos en su totalidad, con distintos algoritmos desarrollados como el Analizador Diferencial Digital, pero uno mas especializado a lineas rectas es el algoritmo de Bresenham que determina que pixeles se rellenaran en función al grado de inclinación de la recta y estos se han implementado en un software en el que la maquina realiza miles de cálculos solo para poder crear una imagen con lineas.
Existen
diversos métodos o algoritmos que una computadora puede utilizar para
crear a partir de estas, lineas rectas, que al utilizarlas podemos
crear imágenes bidimensionales como lo son los polígonos ya sean
regulares o irregulares, los cuales están formados por lineas unidimencionales
que encierran un área especifica.
A todo
aquel objeto que sea creado podemos modificarlo por así decirlo
podemos trasladarlo es decir moverlo de un lado a otro sin modificar sus
propiedades simplemente cambiarlo
de ubicación también podemos realizarle
una rotación esto quiere decir que tomando un punto del objeto este
girara en algún sentido formando una circulo o si se desea un escalamiento, lo
cual significa que se modificaran sus propiedades de tamaño (largo y ancho de
la imagen u objeto).
Además de
todas las herramientas ya mencionadas también para poder visualizar
determinada parte de algún objeto que este en 2D, utilizando las herramientas
de ventanas o puerto de visión, los cuales permiten al usuario visualizar
en el monitor un área seleccionada.
Actualmente
la graficación 2D es muy utilizada en muchos campos como por ejemplo en
la tipografía, cartografía,
dibujo técnico,publicidad, etcetera.















No hay comentarios:
Publicar un comentario