martes, 2 de diciembre de 2014

Unidad 3

Unidad 3


- Representaicon de objetos en tres dimenciones
URL: http://graficacionito.blogspot.mx/2013/10/31-representaicon-de-objetos-en-tres.html 

- Visualizacion de objetos
URL: http://graficacionito.blogspot.mx/2013/10/32-visualizacion-de-objetos.html 

- Transformaciones tridimencionales
URL: http://graficacionito.blogspot.mx/2013/10/33-transformaciones-tridimencionales.html

- Lineas y superficies curvas
URL: http://graficacionito.blogspot.mx/2013/10/34-lineas-y-superficies-curvas.html 



Conclusión:
La Graficación en 3 dimensiones nos ha dado una gran capacidad para plasmar ideas que necesitamos mostrar o comprobar, desde luego nos permite simular alguna idea, si ésta parece inusual o bastante fuera de la realidad pero en si, ese es su objetivo.
Entendí los pasos para la creación de elementos gráficos consta de 4 complejos pasos:
Modelado, Iluminación, Animación (si es que se necesita) y Renderizado.
Todo esto depende mucho en la manera que se han representado visualmente, pues existen muchas maneras de mostrar un grafico, mencionando algunas como los modelos alámbricos, de superficies y solidos.
A grandes rasgos entendemos que los gráficos pueden ser mostrados desde muchas perspectivas y vistas, que facilitan su creación, entendimiento o su demostración.
Las existencia de diferentes vistas en el medio de Graficación, nos da una idea de lo detallista que se debe hacer al crear algún diseño, por mencionar alguno; la proyección cónica, siendo la mas usual y general al presentar un grafico, nos muestra un punto de observación y el objeto, donde se encuentran relativamente cercanos.
Cabe mencionar que todos los gráficos por computadora que han existido, hay requerido de algún modelo matemático o cálculos vitales para su construcción. Y no es la excepción en la actualidad, pues con las transformaciones tridimensionales se utilizan matrices de transformación donde se expresan y se resuelven posiciones en coordenadas homogéneas, que nos permite representar todas las ecuaciones de trasformación geométrica (como la multiplicación de una matriz).


Se puede mencionar unos puntos adicionales sobre la graficacion en 3D:

  • Técnicas muy variadas para el modelado de objetos 3D
  • Multitud de herramientas profesionales y amateurs para modelado y desarrollo de objetos 3D
  • Gran capacidad de representación e infinitas posibilidades

3.1 Representaicon de objetos en tres dimenciones



Anteriormente de la existencia de la computacion grafica,  los objetos tridimensionales se han representado en dos dimensiones,  desde luego se consideraba muy firme el aspecto matematico  siguiendo las normas de la perspectiva para conseguir una representación que parezca lo más aproximada posible a la realidad o a una idea concebida en la mente de algun creador, o mediante diversas vistas correspondientes a la proyección del objeto sobre diferentes planos, acompañadas de cotas, secciones, vistas de detalle, etc. que permitan reproducir exactamente el objeto dibujado.
 
 
 
 
 

Se llaman gráficos 3D  (escrito de una manera simplificada)   a todos los objetos que se pueden dibujar en un espacio R3 (3 dimenciones): puntos, segmentos, curvas, superficies y varios cuerpos formados por caras poligonales, así como textos y macros.

Existen varias razones para querer representar un objeto mediante un modelo de superficie:
 

•Cuando el objeto mismo es una superficie que podemos suponer sin grosor (por ejemplo, chapa metálica del capó de un vehículo). Este tipo de representación nos permite visualizar
superficies abiertas, mientras que los sólidos se caracterizarán por tener su superficie
necesariamente cerrada sobre sí misma.
•Cuando tan sólo nos interesa visualizar su aspecto visual externo, sin detalles sobre su estructura interna, aunque el objeto ocupe un cierto volumen.
•Cuando deseamos realizar una visualización en tiempo real, y para ello utilizamos hardware o
software gráfico que está sólo preparado para visualizar polígonos.



Basicamente podemos representar los objetos graficos en tres dimenciones en las siguientes  vistas.

•Modelos alámbricos
Muestra los objetos utilizando líneas y curvas para representar los contornos.
Sólo contienen elementos que materializan aristas de objeto. Muy rápidos para prototipado.

Nótese que en este diseño, solo se puede visualizar los trazos, mas nunca un objeto con-ciso y solido pues el objetivo de esta vista básicamente es demostrativo  pero con la cualidad de mostrar la composicion tanto interna como externa, es decir, una radiografia al objeto.









• Modelo de superficies
Definen caras de objeto mediante superficies (3 ó 4 lados). Permiten representar superficies curvas con un grado de  complejidad.

Ahora el objeto se puede apreciar mejor pues se muestra las superficies que lo delimitan. Esta vista es demostrativa a lo que puede llegar a ser cuando el diseño esté terminado ó una vista informal del objeto pues aun no es posible gozar una apreciación completa.







•Modelo de sólidos
Representan todo el volumen de un objeto,permite análisis de propiedades físicas, creación mediante primitivas (esfera, cono, etc.), operaciones (extrusión, revolución,etc).

Ahora el objeto goza de una apreciacion completa,  pues con esta vista, casi podemos visualizar el diseño construido en la  vida real.
Esta vista se caracteriza por mostrar un trabajo final al diseño, despues de haber depurado detalles y agregando otros para dar la mayor impresion de realismo.









 Fases para la creación de elementos o gráficos tridimensionales.





Modelado: La etapa de modelado consiste en ir dando forma a objetos individuales que luego serán usados en la escena 








Iluminación: Creación de luces de diversos tipos puntuales, direccionales en área o volumen,   con distinto color o propiedades. Esto es la clave de una animación.









Animación: La animación es un proceso utilizado para dar la sensación de movimiento a imágenes o dibujos o a otro tipo de objetos inanimados. Se considera normalmente una ilusión óptica.









Renderizado: Se llama renderización al proceso final de generar la imagen 2D o animación a partir de la escena creada. Esto puede ser comparado a tomar una foto o en el caso de la animación, a filmar una escena de la vida real. El software de rénder puede simular efectos cinematográficos como el lens flare, la profundidad de campo, o el motion blur (desenfoque de movimiento).


3.2 Visualizacion de objetos


En este caso trataremos con las proyecciones que van del espacio al plano (3D a 2D). La proyección de objetos tridimensionales serán definidos por la intersección de líneas rectas que van desde un 
centro de proyección u ojo, hasta cada punto del objeto.

Proyección Acotada



Es una proyección ortogonal sobre la que se acotan en cada punto, línea, u objeto representado la altura (cota) del mismo con respecto a cualquier plano de referencia que sea paralelo al plano de proyección. La proyección acotada es muy práctica cuando es necesario representar gráficamente objetos irregulares; razón por la cual se usa frecuentemente para el diseño de techos de viviendas; construcción de puentes, represas, acueductos, gasoductos, carreteras, determinación de áreas de parcelas, trazado de linderos, y dibujos topográficos de plantas y perfiles de terrenos, entre otros.


Proyección Cónica.



Denominada también perspectiva. Se obtiene cuando el punto de observación y el objeto se encuentran relativamente cercanos. Es el sistema de representación gráfico en donde el haz de rayos proyectantes confluye en un punto (el ojo del observador), proyectándose la imagen en un plano auxiliar situado entre el objeto a representar y el punto de vista.



Geométricamente, una fotografía es una perspectiva; razón por la cual la proyección cónica sobrepasa en excelencia a los demás sistemas de proyección por ser la que más se acerca a la vista real obtenida por el observador.


Proyección Cilíndrica

Se obtiene cuando el punto de observación se encuentra a una distancia tan grande del objeto, que permita considerar que las proyectantes son paralelas al interceptarse con el plano de proyección. Los principales tipos de proyección cilíndrica son:


  • Proyección Ortogonal

 
También denominada proyección ortográfica. Se obtiene cuando las proyectantes son perpendiculares al plano de proyección. La proyección ortogonal es muy utilizada en el diseño de piezas mecánicas y maquinarias.
 
La proyección ortogonal es el método que se utiliza para representar la forma exacta de un modelo por medio de dos o más vistas sobre planos que forman ángulos rectos entre sí. La proyección se obtiene por la intersección de las perpendiculares trazadas desde el modelo sobre los planos de proyección.
 
  • Proyección Oblicua

 
Se obtiene cuando las proyectantes no son perpendiculares al plano de proyección. Preferentemente al dibujar en proyección oblicua se coloca el plano de proyección paralelo a una de las caras principales del objeto; ya que de esta forma dicha cara se proyectará en verdadero tamaño.


3.3 transformaciones tridimencionales



Las transformaciones de los objetos, son la Posición, la Rotación y la Escala.

Determinan la ubicación en el la escena mediante coordenadas trigonométricas en los ejes de coordenadas  x, y y z. Se refieren a todo el objeto.  La manera más fácil de conseguir las transformaciones básicas (traslación, rotación, escalación, en general las transformaciones afines) es utilizando matrices de transformación.


Coordenadas homogéneas
Nos será útil sustituír las coordenadas (x, y) por las coordenadas (xh, yh, h), llamadas coordenadas homogéneas, donde:
x = xh/h,    y = yh/h

(xh, yh, h) = (h . x, h . y, h)

Expresar posiciones en coordenadas homogéneas nos permite representar todas las ecuaciones de transformación geométrica como multiplicaciones de matriz. Se representan las coordenadas con vectores de columna de 3 elementos y las operaciones de transformación se expresan como matrices de 3 por 3. 


Matrices de transformación en 3D más comunes
Traslación
En la representación homogénea tridimensional de las coordenadas, se traslada un punto de la posición P = (x, y, z) a la posición P’ = (x’, y’, z’) con la operación de matriz
P’ = T x P

donde P y P’ son vectores columna como matrices, la matriz


T=1 0 0 tx
     0 1 0 ty
     0 0 1 tz
     0 0 0 1
y tx, ty y tz especifican las distancias de traslación en x, y y z

x’ = x + tx
y’ = y + ty
z’ = z + tz



Rotación

Para generar una transformación de rotación, debemos designar un eje de rotación respecto del cual girará el objeto, y la cantidad de rotación angular, es decir, un ángulo (θ).

Una rotación tridimensional se puede especificar alrededor de cualquier línea en el espacio.
Los ejes de rotación más fáciles de manejar son aquellos paralelos a los ejes de coordenadas.
Se forma una matriz de rotación inversa al sustituír el ángulo de rotación θ por –θ. Los valores negativos para los ángulos de rotación generan rotaciones en una dirección en el sentido del reloj, de modo que se produce la matriz identidad cuando se multiplica cualquier matriz de rotación por su inverso



Escalación
La matriz para la transformación de escalación de una posición P = (x, y, z) con respecto del origen de las coordenadas se puede escribir como:





       |ex  0  0  0 |
       |0  ey  0  0 |
       |0   0  ez 0 |
 S= |0   0  0  1 |












Donde ex, ey, y ez pueden tener cualquier valor positivo (valores de escalación en cada uno de los ejes, si estos no son iguales, se cambian las dimensiones relativas en el objeto).
La escalación con respecto a una posición fija seleccionada se puede obtener con la siguiente secuencia de transformación:

1. Se traslada el punto fijo al origen.
2. Se escala el objeto con respecto al origen.
3. Se traslada el punto fijo a su posición original.


3.4 lineas y superficies curvas


La necesidad de representar curvas y superficies proviene de modelar y representar objetos reales o ficticios.
Normalmente no existe un modelo matemático previo del objeto, y el objeto se aproxima con “pedazos” de planos, esferas y otras formas simples de modelar cercanos a los correspondientes puntos del objeto.

Definiciones Básicas
Una curva es  una línea continua de una dimensión, que varía de dirección paulatinamente.

Una superficie es una extensión en que se consideran sólo dos dimensiones.


SUPERFICIES CURVAS

Las superficies curvas pueden generarse a partir de un conjunto funciones matemáticas que definen la superficies o bien a partir de un conjunto de puntos de datos especificados por el usuario.
Cuando se especifican funciones de curvas, un paquete puede emplear las ecuaciones definidoras para localizar y gráfica posiciones de pixeles a lo largo de la trayectoria de la curva, casi igual como sucede con las curvas en dos dimensiones.

La definición analítica de una dada curva puede hacerse de varios modos y se relaciona directamente con la forma de representarla gráficamente:
  • Explícitamente :
 y = f(x)
  • Implícitamente:
  f(x, y) = 0
  • Paramétricamente:
   x = x(t)
   y = y(t)
Representación Explícita
Es la mas conocida desde que nos ensenaron a utilizar las coordenadas cartesianas para graficar funciones.
En 3D, para representar una curva se requieren dos ecuaciones:
y = f (x),  z = g(x)
Obteniendo una superficie  en 3D que será:
z = f (x, y)


Representación Implícita
Para curvas y superficies estándar (rectas, círculos, planos, toroides, etc.), este tipo de definición es mas directa y permite visualizar y modificar sencillamente parámetros importantes y específicos de cada curva (radio en un circulo, distancia al origen en un plano, etc.).
En 3D, una superficie se describe por
f(x, y, z) = 0
Ejemplo
• Una esfera: x2 + y2 + z2 – r2 = 0
• Una curva corresponde a la intersección de dos superficies:
f(x, y, z) = 0 y g(x, y, z) = 0
Nota: el punto (x, y, z) debe pertenecer a ambas superficies.

Representación Paramétrica
El valor de cada variable espacial se expresa en términos de una variable independiente (t), llamada parámetro.
Estas funciones juntas han de  formar las ecuaciones paramétricas de una curva:
x = x(t)
y = y(t)
z = z(t)
Cada valor de t determina un punto (x,y) que se puede representar en un sistema de coordenadas.
Superficie Paramétrica al conjunto de puntos (x,y,z,) dados por r(u,v)= x(u,v)i + y(u,v)j + z(u,v)k.
Las Ecuaciones x=(u,v), y=(u,v) y z=(u,v) se llaman Ecuaciones Paramétricas de la superficie.


La configuración de los objetos gráficos 3D curvas y superficies también se puede ilustrar con mayor detalle mediante la siguiente escena:

Variables para la escala y los giros
En gráficos 3D se agregaron unas variables para conocer y controlar los ángulos de giro del espacio : <Espacio>.rot.y y <Espacio>.rot.y donde <Espacio> es el nombre del espacio.

También se agregaron las variables <Espacio>.escala y <Espacio>.observador que sirven para controlar la escala y la distancia aparente al observador, ambas se miden en pixeles. La siguiente escena ilustra explícitamente el uso de estas variables. Observe que si el usuario cambia la escala o gira el espacio arrastrando el ratón, los controles numéricos se actualizan con los nuevos valores de la escala y las rotaciones.





pero . . .
¿Cómo se dibujan las curvas o superficies en la pantalla de la computadora?

Aproximando esta curva con una poligonal.
Así encontramos los puntos que serán mostrados. Y los puntos serán unidos a través de líneas.










Esta forma es totalmente diferente pues la curva o superficie es el resultado de un procedimiento o algoritmo; en general modificando una curva o  superficie simple de partida.
Ej.: Dividir en tres cada tramo de una poligonal y reemplazar los dos tramos que convergen a un vértice original por el que une los dos nuevos vértices cercanos al original:


Unidad 2

Unidad 2

-Trazos de lineas rectas

-Representación y trazo de poligonos

-Transformaciones Bidimencionales

-Representación matricial

-Ventana y puerto de visión



Conclusión:

Cuando hablamos de Graficación en 2 dimensiones, lo primero que se nos viene a la mente es un gráfico cartesiano(o de tipo X-Y), siendo de común aplicación para la mayor parte de las ciencias al graficar alguna función respecto a algo. Sin embargo, la Graficación en 2D tiene más aplicaciones implícitas en muchas aplicaciones como páginas web (al mostrar cualquier imagen), al dibujar cualquier figura geométrica tanto regular como irregular en algún programa que lo permita, al diseñar alguna estructura preliminar o los trazos de dicha estructura.

Simplemente, el trazado de una línea, requiere un algoritmo (en mi opinión, algoritmo matemático) que aproxima dichas primitivas gráficas (ideales), a un conjunto de pixeles en cierto ambiente. Estos pixeles son almacenados como mapas de bits en un buffer de memoria gráfica y son dibujadas por algún lienzo de cierto programa gráfico.

Desde luego esto no queda limitado, pues el diseño de diversos polígonos (regulares e irregulares) y figuras geométricas requieren de ciertos algoritmos, anexadas las propiedades de ciertas figuras geométricas (el punto de unión, los lados de las figuras, ángulos internos, etc.). Y la Graficación en dos dimensiones facilita la representación de estas figuras para poder diseñar o plasmar modelos, graficas e imágenes que se deseen.

Pero a veces se necesita realizar ciertas manipulaciones a las figuras, respecto a un ambiente de Graficación, mencionando las principales: como la escalación de menor o mayor volumen, la rotación a una dirección, y la traslación de un punto a otro de las figuras en un mapa de bits, entre otras derivaciones, y son llamadas transformaciones bidimensionales. Y por supuesto que, estas operaciones están representadas matemáticamente, y comúnmente se representa en matrices (representación matricial) donde se explica con matemáticas,  el comportamiento de la operación aplicada en una figura, o la encadenación de operaciones sucesivas a petición del usuario.

Incluso, todo esto está contemplado en el momento de la representación grafica en pantalla, con determinado punto de vista de la figura y la pantalla junto con el margen de visión para que el usuario pueda observar de manera óptima los gráficos que esta diseñando o manipulando.


2.1 Trazo de lineas rectas



Trazo de lineas rectas.

Primero debemos definir algunos conceptos como punto, linea y trazo

Punto:  (Del lat. punctum). Señal de dimensiones pequeñas, ordinariamente circular, que, por contraste de color o de relieve, es perceptible en una superficie.




Linea:  Trazo largo y continuo en una sola dirección, la que permanecerá invariable durante toda su extensión.






Trazo: Delineación con que se forma el diseño o planta de cualquier cosa.












Por lo que podemos confirmar, el puno es una "señal"  muy pequeña con forma circular originalmente y perceptible a simple vista; y la unión sucesiva de éstos forma una linea que tiene una dirección, magnitud, un punto de origen (DONDE SE INICIA EL TRAZO DE LA RECTA ) y punto final (HASTA DONDE LLEGA EL TRAZO); y al aplicarse estos elementos en algún gráfico o imagen, describe un contorno o un borde al que se llama trazo.

Estos elementos son tan importantes y básicos cualquier arte, técnica o ciencia que necesita plasmar un algo en una superficie.

Las formas de graficar una linea.
Hay dos tipos básicos de gráficos: Imágenes en mapa de bits (o rasterizadas) e imágenes vectoriales. En el primer caso, a continuación, se hablara de rectas rasterizadas.

Algoritmo DDA (Analizador Diferencial Digital)  para generación de líneas.

DDA: El Algoritmo DDA es un algoritmo de línea de conversión de rastreo que se basa en el cálculo ya sea en el incremento de X o en el incremento de Y. La finalidad de este algoritmo es determinar los valores enteros correspondientes más próximos a la trayectoria de la línea para la otra coordenada.
Una implementación de hardware o software de un Analizador Diferencial Digital (DDA) se usa para la interpolación lineal de variables sobre un intervalo entre un punto de comienzo y un punto de fin.
 Los DDAs se usan para rastreo de lineas, triángulos y polígonos. En la implementación mas simple del algoritmo DDA interpola valores en intervalo [(xinicio, yinicio), (xfin, yfin)] por calculo para cada xi las ecuaciones xi = xi−1+1, yi = yi−1 + Δy/Δx, donde Δx = xfin − xinicio y Δy = yfin − yinicio.
Explicando el algoritmo.

Si m>=0 (pendiente positiva)
  Si m<=1
    de izquierda a derecha
       * muestreo de x (Δx =1)
       * yk+1 = redondeo(yk + m) k=1,2,...
    de derecha a izquierda
       * muestreo de x (Δx =-1)
       * yk+1 = redondeo(yk - m) k=1,2,...
  Si m > 1 (para evitar la aparición de agujeros)
    de izquierda a derecha
       * muestreo de y (Δy =1)
       * xk+1 = redondeo(xk + 1/m) k=1,2,...
    de derecha a izquierda
       * muestreo de y (Δy =-1)
       * xk+1 = redondeo(xk - m) k=1,2,...
Si m<0 (pendiente negativa)
  Si |m|<1
    de izquierda a derecha
       * muestreo de x (Δx =1)
       * yk+1 = redondeo(yk + m) k=1,2,...
    de derecha a izquierda
       * muestreo de x (Δx =-1)
       * yk+1 = redondeo(yk - m) k=1,2,...
  Si |m| > 1 (para evitar la aparición de agujeros)
    de izquierda a derecha
       * muestreo de y (Δy =1)
       * xk+1 = redondeo(xk + 1/m) k=1,2,...
    de derecha a izquierda
       * muestreo de y (Δy =-1)
       * xk+1 = redondeo(xk - m) k=1,2,...

Algoritmo de Bresenham

El algoritmo de Bresenham se generaliza para líneas con una pendiente arbitraria al considerar la simetría entre los diversos octantes y cuadrantes del plano de xy.
Para una línea con una pendiente m > 1, intercambiamos las funciones de las direcciones de x y y, o sea, pasamos a lo largo de y en pasos unitarios y calculamos los valores sucesivos de x que se aproximan mas a la trayectoria de la línea. Asimismo, podemos revisar el programa para trazar píxeles iniciando desde cualquier extremo.
Explicando el algoritmo.

Si 0<|m|<1 (m mayor que 0 y menor que 1)
1.- Capturar los extremos de la línea y se almacena el extremo izquierdo en las coordenadas (x0,y0)  que es el origen del sistema de coordenadas.
2.- Se carga las coordenadas (x0,y0) en el buffer de estructura  donde se trazara el primer punto.
3.- Se calculan las constantes  Δx ,Δy, 2Δy y 2Δy-Δx (Δx es lo mismo que decir, incremento en x) y se obtiene el valor inicial para el parámetro de decisión con la siguiente formula  p0=2Δy-Δx.
Para j=0 (j es una variable auxiliar), mientras j<Δx  (j mayor que incremento en x).
--En cada xk a lo largo de la línea, que inicia en k=0 se efectúa la prueba siguiente:
Si pk<0
--Trazamos (xk+1,yk).
--Asignamos pk+1= pk+2Δy.
Si no se cumple.
--Trazamos (xk+1,yk+1).
--Asignamos pk+1= pk+2Δy-2Δx.
Pero si |m|>1
*Recorremos la dirección en pasos unitarios y calculamos los valores sucesivos
de x que se aproximen más a la trayectoria de la línea.





Algoritmo de Xiaolin Wu
El algoritmo de Xiaolin Wu es una mejora del algoritmo de Bresenham que permite dibujar rectas en dispositivos de gráficos rasterizados reduciendo el aliasing. El algoritmo se basa en dibujar parejas de pixeles a lo largo del trazado de la recta con diferentes intensidades en función de la cercanía a la recta real.
File:XiaolinWuLine.png


Gráficos Vectoriales

Un gráfico vectorial es toda imagen digital formada por diferentes objetos geométricos independientes. Cada uno de estos elementos definido por parámetros matemáticos como la forma, posición, color, el tipo y grosor de contorno, etc.

Los gráficos vectoriales son en su formato completamente distintos a los gráficos de mapas de bits o también llamados matriciales, los cuales están constituidos por pixeles.

Los vectores tienen la ventaja sobre los pixeles de ser escalables, es decir, se puede aumentar su tamaño conservando su calidad original. Lo que no ocurre con los gráficos a base de pixeles que presentan degradación de la calidad al aumentar el tamaño.

2.2 Representación y trazo de poligonos

Representación  de los 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. 
Los valores normales para el tipo de primitiva son las constantes: 



Valor de la Cte GL              Tipo de Primitiva Poligonal 
GL_POINTS                       Puntos aislados 
GL_LINES                          Líneas de dos vértices 
GL_LINE_STRIP                Línea de cualquier numero de vértices 
GL_LINE_LOOP                Línea Cerrada. 
GL_POLYGON                  Polígono de Cualquier tipo 
GL_TRIANGLES                Polígonos de tres lados 
GL_TRIANGLE_STRIP      Tira de Triangulos 
GL_QUADS                        Polígonos de cuatro vertices 
GL_QUAD_STRIP             Tira de Cuadrilateros. 
GL_TRIANGLE_FAN        Abanico de triangulos. 

Fuentes


2.3 Transformación bidimencional


Transformaciones Geométricas Básicas.

En este apartado veremos las operaciones de transformación que se pueden aplicar a objetos para reubicarlos o dar es un tamaño diferente.
Estas operaciones también son usadas en la visualización de rutinas que convierten una descripción de un sistema de coordenadas universales en un despliegue para un dispositivo de salida. Además, son usados en variedad de otras aplicaciones, tales como diseño de ayuda y animación por computador. Las operaciones que se aplican a descripciones geométricas de un objeto para cambiar su posición, orientación o tamaño se llaman transformaciones geométricas entre otras.


Traslación
Reposiciona un objeto desplazándolo a las nuevas coordenadas, en otras palabras, una traslación se aplica a un objeto para reposicionarlo a lo largo de una línea recta, desde una ubicación de coordenadas a otra.

Representándola en forma cartesiana.

P = (x, y)   P'= (x', y')  

T = (tx, ty)   "El par (t subindice x, t subindice y) se llama vector de traslación"

Representándola en forma matricial.

              










Esto nos permite escribir las ecuaciones de traslación bidimensionales en forma de matriz
para obtener:         P'= P +T

Al trasladar cualquier objeto dentro del mundo virtual se debe considerar lo siguientes puntos:

• Es una transformación rígida, el objeto no se deforma
• Para trasladar líneas rectas trasladamos sólo sus extremos
• Para trasladar polígonos, trasladamos sólo sus vértices y redibujamos.




Reflexión
Una transformación que produce la imagen de un objeto en un espejo se llama reflexión. Para una reflexión bidimensional, esta imagen se genera respecto a un eje de reflexión rotando el objeto 180° sobre dicho eje de reflexión.

Esto se puede conseguir con una rotación en 180º, alrededor del eje x ó en el eje y.




Escalación
La transformación de la escalación altera el tamaño del objeto, esto lo hace escalando
cada uno de sus coordenadas con respecto al origen del eje de coordenadas

Definiendo las coordenadas
x′= x*Sx      y′= y*Sy
Sx es la  escala en la dirección  en x y Sy  es la escala en la dirección  en y.




donde los parámetros de escalación Sx y Sy  se asignan cualesquiera valores positivos.





Escalamiento en cualquier dirección 
Los parámetros Sx y Sy escalan un objeto en las direcciones x e y respectivamente.
Se puede escalar un objeto en otra dirección, rotando el objeto y  alineándolo con el sistema de coordenadas y luego rotándolo en sentido inverso.
Descrito en la siguiente imagen con su respectiva ecuación:

Al escalar cualquier objeto dentro del mundo virtual se debe considerar lo siguientes puntos:
• Si el origen de coordenadas no se encuentra en el interior del objeto, se produce un desplazamiento
Para evitarlo, se usa un punto fijo, y se escala a partir de él. El punto fijo podría ser el centro del objeto, o uno de sus vértices, o también un punto arbitrario.
• Para escalar líneas rectas escalamos sólo sus extremos
• Para escalar polígonos, escalamos sólo sus vértices y redibujamos.


Rotación

En rotación, la orientación de ésta  puede ser especificada en una variedad de formas, lo que se
explica a continuación es la rotación de un punto con respecto a los ejes fijos. Un eje de
rotación define el polo sobre el cual se va a rotar, como los polos Norte y Sur de la Tierra.

x = r cos teta
y = r sen teta

Rotación alrededor de un punto
Para hacer una rotación general, podemos hacerlo mediante una composición de
transformaciones básicas.
Para generar una rotación se especifica un ángulo de rotación θ y laposición (xr, yr) del punto de rotación (punto pivote) acerca del cual el objeto se rota.

Valores positivos del ángulo de rotación definen una rotación en contra de las agujas del reloj y lo contrario para un ángulo negativo.
En representacion matricial:
P′= R*P











Fuentes
1.-Transformaciones Geometricas
2.-TEMA 3: Transformaciones 2D
3.-CAPÍTULO III: TRANSFORMACIONES GEOMÉTRICAS
4.-CAPITULO 1 Transformaciones Geométricas en dos dimensiones
5.-CAPÍTULO 2 – Modelado y Transformaciones Geométricas


2.4 Representación matricial

Coordenadas homogéneas y representación matricial
El uso de coordenadas homogéneas permite tratar todas las transformaciones geométricas como una multiplicación de matrices.
Las coordenadas agregan un tercer componente a las coordenadas bidimensionales.
 De tal forma que, un punto (x,y) pasa a ser (x,y,W). El valor de W es generalmente 1.
Coordenadas homogéneas y representación matricial
El uso de coordenadas homogéneas permite tratar todas
las transformaciones geométricas como una multiplicación de matrices.
Las coordenadas agregan un tercer componente a las coordenadas bidimensionales. De tal forma que, un
punto (x,y) pasa a ser (x,y,W). El valor de W es generalmente 1.


Representación matricial.
En el área de la graficación por computadora, es común encontrar la representación de las ecuaciones de transformación por medio de matrices, y se pueden encontrar dos tipos de notaciones para representarlas:
1.- Repesentando las coordenadas de un punto p como vectores renglón (en este caso una matriz de transformación M en 2 dimensiones, multiplica al punto por la derecha para obtener el nuevo punto p'.
p= [x1    x2],   p'=[x1    x2]= p*M

2.- Representando las coordenadas de un punto p como vectores columna, en este caso una matriz de transformación M, multiplica al punto por la izquierda para obtener el nuevo punto p'.

       x1            x1'
p=[ x2 ],  p'=[ x2' ] =M*p 
 

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 M1M3+ 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

Coordenadas homogéneas
El uso de coordenadas homogéneas permite tratar todas las transformaciones geométricas como una multiplicación de matrices pues no todas las transformaciones son aplicadas a un punto como una multiplicación de factores.




















Fuentes
1.-TEMA 3: Transformaciones 2D
2.-REPRESENTACION MATRICIAL DE TRANSFORMACIONES TRIDIMENCIONALES
3.-capitulo3: Transformaciónes geometricas
4.-Transformaciones geometricas
5.-Transformaciones geométricas. Introducción a la computación gráfica


2.5 Ventana y puerto de visión

Las transformaciones ventana-puerto de visión.

Transformación a la ventana de visión.

Mapean puntos en el mundo real a puntos en la pantalla es la manera en que van a realizar nuestros trazos y dibujos en la pantalla, pues como hemos observado en anteriores ocaciones el despliegue se hace tomando como referencia la esquina superior izquierda de nuestro monitor o pantalla donde se muestra el gráfico.
Transformación a la ventana de visión
La escena se almacenan según un sistema de coordenadas reales (metros, cm, pulgadas), el usuario verá en cada momento una subárea de la escena, o varias simultáneamente,cada subárea se mapeará en zonas distintas de la pantalla
La pantalla viene definida por un sistema de coordenadas enteras (pixels)


Proyección ortogonal.
 Es cuadrada en todas sus caras. Esto produce una proyección paralela, útil para aplicaciones de tipo CAD o dibujos arquitectónicos, o también para tomar medidas, ya que las dimensiones de lo que representan no se ven alteradas por la proyección.
Una aproximación menos técnica pero mas comprensible de esta proyección es imaginar que se tiene un objeto fabricado con un material deformable, y se aplasta literalmente como una pared. Se obtendría el mismo objeto, pero plano, liso. Pues eso es lo que se vería por pantalla.

Por ejemplo, la siguiente ilustración es un render de un coche con proyección ortográfica, visto desde delante.



Proyección en perspectiva.
Reduce y estirar los objetos más alejados del observador. Es importante saber que las medidas de la proyección de un objeto no tienen por qué coincidir con las del objeto real, ya que han sido deformadas.

El volumen de visualización creado por una perspectiva se llama frustum. Un frustum es una sección piramidal, vista desde la parte afilada hasta la base



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


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.