Unidad 2

______________________________________________________

Tarea 1

Graficación en 2D.

La computación gráfica 2D es la generación de imágenes digitales por computadora - sobre todo de modelos bidimensionales (como modelos geométricos, texto y 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.


La computación gráfica 2D 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 estas aplicaciones, la imagen bidimensional no es sólo una representación de un objeto del mundo real, sino un artefacto independiente con valor semántico añadido; los modelos bidimensionales son preferidos por lo tanto, porque dan un control más directo de la imagen que los gráficos 3D por computadora (cuyo enfoque es más semejante a la fotografía que a la tipografía).

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. Esta representación también es más flexible ya que puede ser renderizada en diferentes resoluciones para adaptarse a los diferentes dispositivos de salida. Por estas razones, documentos e ilustraciones son a menudo almacenados o transmitidos como archivos gráficos en 2D.

Los gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos de gráficos vectoriales.1 Éstos fueron suplantados en gran parte por dispositivos basados en gráficos raster en las décadas siguientes. El lenguaje PostScript y el protocolo de sistema de ventanas X fueron piezas claves en la evolución histórica del campo.


Transformación bidimensional.

Todo cuerpo representado en un plano puede sufrir varios tipos de transformaciones en su estructura. Las transformaciones de tipo básico, como pueden ser la traslación,  Escalamiento y rotación de objetos.

Un objeto definido se construye a partir de una serie de puntos coordenados, desde los cuales se pueden aplicar diversas fórmulas para realizar un cambio de la figura.    









Los objetos se definen mediante un conjunto de puntos. Las transformaciones son procedimientos para calcular nuevas posiciones de estos puntos, cambiando el tamaño y orientación del objeto.
Las operaciones básicas de transformación son:
-Rotación
-Traslación
-Escalación (Escalamiento)

Rotación.

Es el movimiento de cambio de orientación de un cuerpo o un sistema de referencia de forma que una línea (llamada eje de rotación) o un punto permanece fijo.
La rotación de un cuerpo se representa mediante un operador que afecta a un conjunto de puntos o vectores. El movimiento rotatorio se representa mediante el vector velocidad angular, que es un vector de carácter deslizante y situado sobre el eje de rotación. Cuando el eje pasa por el centro de masa o de gravedad se dice que el cuerpo «gira sobre sí mismo».

Para rotar un objeto (en este caso bidimensional), se ha de determinar la cantidad de grados en la que ha de rotarse la figura. Para ello, y sin ningún tipo de variación sobre la figura, la cantidad de ángulo ha de ser constante sobre todos los puntos.

Los puntos también pueden ser rotados un ángulo θ con respecto al origen
En la figura se muestra la rotación de la casa 45º, con respecto al origen.


Traslación.

Una traslación es el movimiento en línea recta de un objeto de una posición a otra.

Se traslada cada punto P(x,y) dx unidades paralelamente al eje x y dy unidades paralelamente al eje y, hacia el nuevo punto P'(x',y').
Las ecuaciones quedan:

Entonces la ecuación 1 puede ser expresada como:

Una forma de efectuar la traslación de un objeto es aplicándole a cada punto del mismo la ecuación 1. Para trasladar todos los puntos de una línea, simplemente se traslada los puntos extremos. 


Escalación.

Una transformación para alterar el tamaño de un objeto se denomina escalación.

Dependiendo del factor de escalación el objeto sufrirá un cambio en su tamaño pasando a ser mayor, o menor en su segmento de longitud.

El escalamiento se hace con un factor sx en el eje x y en un factor sy en el eje y.
Escalamiento uniforme sx = sy
Escalamiento diferencial.
La transformación de escalamiento puede expresarse con las siguientes multiplicaciones

 En forma matricial

Se escala a ½ en el eje x y a ¼ en el eje y . 
El escalamiento se efectúa con respecto al origen;



Trazado de líneas rectas.

Una línea recta, lo mismo que cualquier curva contenida totalmente en un plano está representada, en relación con un sistema de ejes cartesianos, por una función de dos variables, siempre y cuando dicha función sea capaz de expresar la condición común que satisfacen absolutamente todos y cada uno de los puntos que constituyen dicha línea.
Un segmento de línea recta dentro de una escena está definido por las coordenadas de los dos extremos del segmento. 
Para mostrar la línea en un monitor digital, el sistema gráfico debe primero proyectar las coordenadas de los extremos para obtener coordenadas de pantalla de valor entero y determinar las posiciones de píxel más próximas a lo largo de la línea que conecta los dos extremos. Entonces, se cargará en el búfer de imagen el color correspondiente a la línea en las coordenadas de píxel apropiadas, Al leer los datos del búfer de imagen, la controladora de vídeo dibujará los píxeles en pantalla. 

Este proceso lo que hace es digitalizar la línea para obtener un conjunto de posiciones enteras discretas que en general, únicamente sirve como aproximación del verdadero trayecto seguido por la línea. 
Una posición de línea calculada como (10.48. 20.51), por ejemplo, se convierte a la posición de píxel (10, 21). Este redondeo de los valores de las coordenadas para obtener enteros hace que todas las líneas (excepto las horizontales y las verticales) se dibujen con una apariencia escalonada. 
La forma escalonada característica de las líneas digitalizadas es particularmente apreciable en los sistemas de baja resolución, pudiéndose mejorar un poco su apariencia si se utiliza un monitor de resolución más alta. Otras técnicas más efectivas para suavizar la línea digitalizada se basan en ajustar las intensidades de los píxeles a lo largo del trayecto de la línea.

Algoritmos de trazo de líneas:
Para determinar las posiciones de los píxeles a lo largo de un trayecto de línea recta se utilizan las propiedades geométricas de la línea. 
La ecuación punto-pendiente cartesiana para una línea recta es:

siendo m la pendiente de la línea y b el punto de intersección con el eje.

Algoritmo DDA:
El algoritmo de análisis diferencia digital (DDA, Digital Diflerential Analizar) es un algoritmo de digitalización de líneas basado en calcular Sy o Sx, Las líneas se muestrean a intervalos unitarios según una de las coordenadas y los correspondientes valores enteros más próximos al trayecto lineal se calculan para la otra coordenada.


Hace uso de las propias características del proceso de digitalización, aplicándose los incrementos apropiados en las direcciones x o y para pasar de una posición de píxel a la siguiente a lo largo de la línea. Sin embargo, la acumulación de errores de redondeo en las sucesivas sumas del incremento de coma flotante pueden hacer que las posiciones de píxel sufran cierta desviación con respecto al verdadero trayecto lineal, para segmentos lineales largos. Además, las operaciones de redondeo y la aritmética en coma flotante inherentes a este procedimiento siguen consumiendo mucho tiempo.

Algoritmo de bresenham:
Este algoritmo, inventado por Bresenham, utiliza sólo cálculos enteros para determinar los incrementos.
Además, el algoritmo de Bresenham para dibujo de líneas puede adaptarse para dibujar círculos y otras líneas.



Representación y trazado de polígonos.

Polígono es la superficie plana encerrada dentro de un contorno formado por segmentos rectos unidos en sus extremos.
Cada uno de los segmentos se denomina lado. El punto de unión de cada par de segmentos se denomina ángulo. El numero de lados, ( y por tanto de ángulos) ha de ser  mayor o igual a tres.

Elementos de un polígono


Lados:
Son los segmentos que lo limitan.

Vértices
Son los puntos donde concurren dos lados.

Ángulos interiores de un polígono
Son los determinados por dos lados consecutivos.

El polígono es el caso bidimensional del politopo, figura geométrica general definida para cualquier número de dimensiones. a noción geométrica elemental ha sido adaptada de distintas maneras para servir a propósitos específicos.

En Matemáticas, un politopo regular es una figura geométrica con un alto grado de simetría. Ejemplo de politopos regulares en dos dimensiones son el cuadrado, el pentágono y el hexágono regular.       

La representación básica  de alguna imagen se limita a polígonos regulares e irregulares formados por vértices. 
Se pueden organizar los polígonos para mejorar el tratamiento. 


Ahora que se ha aclarado el concepto y los elementos básicos de un polígono y su generalización (politopo) podemos centrarnos en la construcción de polígonos en algún ambiente de graficación.

Dibujando Poligonos  con OpenGL

OpenGL tiene únicamente unas pocas primitivas geométricas: puntos, líneas, polígonos. Todas ellas se describen en términos de sus respectivos vértices. Un vértice está caracterizado por 2 o 3 números en como flotante, las coordenadas cartesianas del vértice, (x, y) en 2D y (x, y, z) en 3D. Aunque las coordenadas cartesianas son las más comunes, en gráficos por ordenador también existe el sistema coordenado homogéneo en el que cada punto se describe con 4 números en coma flotante (x, y, z, w). Volveremos a él después de ver algunas nociones elementales de trazado en 3D.

Como en OpenGL todos los objetos geométricos son finalmente descritos como un conjunto ordenado de vértices.

Modelo de Representación Polígonal sobre OpenGL. 
La librería gráfica OpenGL es por naturaleza una librería orientada al trabajo con modelos poliédricos, 
por tanto nos será fácil realizar representación de esta naturaleza. Puntualizaremos que se trata de una 
librería de funciones orientada principalmente a modelos interactivos, por ello se premia la rapidez frente 
al espacio, el tipo de representación poligonal que empleara será por tanto explícita. 

Las definiciones de primitivas poligonales en OpenGL se encierran entre las llamadas a las funciones: 
glBegin(GLEnum tipo_primitiva) y glEnd(void). Entre dichas funciones deberemos especificar la lista 
de vértices que componen nuestro polígono. La función para pasar las coordenadas de cada vértice es 
glVertex3fv(GLFloat *coor), donde ‘coor’ es un vector que contiene las tres coordenadas del vértice. 




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.
Traslaciones
Se se aplican dos vectores de traslación sucesivos (tx1, t y1) y (tx2 , t  y2 ) en la posición de coordenadas P, la localización transformada final P, la localización transformada final P’ se calcula como: P'=T(t x2,t2)·T(tx1,ty1)·P}{=T(tx2, 2)·T(t x1,t y1)}{·P
Donde se representan P y P’ como vectores de columna de coordenadas homogéneas. Podemos verificar este resultado al calcular el producto de la matriz para las dos agrupaciones asociativas. Asimismo, la matriz de transformación compuesta para esta secuencia de transformaciones.
Rotaciones
Dos rotaciones sucesivas que se aplican en el punto P producen la posición transformada P'=R(θ2)·R(θ1){·P}=R(θ2){· (θ1)}·P
Al multiplicar las dos matrices de rotación, podemos verificar que dos rotaciones sucesivas son aditivas
Escalamiento
La siguiente figura ilustra una secuencia de transformación para producir escalación con respecto de una posición fija seleccionada (xf,f) al utilizar una función de escalación que sólo puede escalar en relación con el origen de las coordenadas


El puerto de visión es el área de la ventana gráfica en la que se colocan las fotografías de la cámara virtual. Normalmente el puerto de visión coincide con toda el área de la ventana gráfica, pero es posible tener varios puertos de visión en una sola ventana. 

Puerto de visión (Viewport).

Es el área de la ventana gráfica en la que se colocan las fotografías de la cámara virtual. Normalmente el ìertp de visión coincide con toda el área de la ventana gráfica, pero es posible tener varios puertos de visión en una sola ventana.
Se utiliza la función: 

void glViewport(GLint x, GLint y, GLsizei w, GLsizei h)

Dónde:

(x,y) es la esquina inferior izquierda del rectángulo o viewport. 

Esta coordenada debe especificarse con relación a la esquina inferior izquierda de la ventana. Claro está que w, h son la anchura y altura de nuestro viewport dentro de la ventana. Todos los valores son enteros ya que se tratan de pixels. 

Ventanas.

Para lograr un efecto de visualización particular en un programa de aplicación, podríamos diseñar nuestra propia ventana de recorte con cualquier forma, tamaño y orientación que queramos. Sin embargo, las aristas de ventanas más simples para recortar son las líneas rectas que son paralelas a los ejes de coordenadas. Por lo tanto, los paquetes gráficos habitualmente sólo permiten ventanas de recorte rectangulares alineadas con los ejes x e y. Para crear una ventana se usan estos comandos de la librería GLUT:

glutlnit (&argc, argv);
glutlnitWindowPosition (xTopLeft, yTopLeft);
glutlnitWindowSize (dwWidth, dwHeight) ;
glutCreateWindow ("Title of Display Window");


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 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.

Las posiciones de coordenadas que se expresan en coordenadas de dispositivo normalizadas deben convertirse a las coordenadas del dispositivo antes de que un dispositivo de salida específico haga el despliegue. Una rutina específica del dispositivo se incluye en paquetes de gráficas con este fin. La ventaja de emplear coordenadas de dispositivo normalizadas es que el paquete de gráficas es considerablemente independiente del dispositivo. Pueden utilizarse distintos dispositivos de salida ofreciendo los conductores adecuados del dispositivo.

Cambiando la posición de la puerta de visión, los objetos pueden desplegarse en diferentes posiciones en un dispositivo de salida. Asimismo, variando el tamaño de las puertas de visión, el tamaño y las proporciones de los objetos pueden alterarse. Cuando se trazan en forma sucesiva ventanas de diferentes tamaños en una puerta de visión, pueden lograrse efectos de acercamiento. Conforme las ventanas se hacen pequeñas, un usuario puede lograr el acercamiento de alguna parte de una escena para visualizar detalles que no se muestran con las ventanas mayores.

Analógicamente, puede obtener un panorama general más amplio realizando un acercamiento de una sección de escena con ventanas cada vez más mayores. Los efectos de toma panorámica se producen moviendo o desplazando una ventana de tamaño fijo a través de una imagen grande.

 Conclusión.

La computación gráfica 2D es la generación de imágenes digitales por computadora - sobre todo de modelos bidimensionales (como modelos geométricos, texto y imágenes digitales 2D) y por técnicas específicas para ellos.
La computación gráfica 2D 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.
Los gráficos 2D por computadora se han iniciado en la década de 1950, basándose en dispositivos de gráficos vectoriales.1 Éstos fueron suplantados en gran parte por dispositivos basados en gráficos raster en las décadas siguientes.

El movimiento de una figura, sin rotarla ni voltearla. "Deslizar".

Para rotar un objeto (en este caso bidimensional), se ha de determinar la cantidad de grados en la que ha de rotarse la figura.

Una transformación para alterar el tamaño de un objeto se denomina escalación.
La representación tradicional de un grafo consiste en un conjunto de puntos que representan los nodos unidos por unas líneas que unen aquellos nodos relacionados. 


Bibliografía.






No hay comentarios:

Publicar un comentario