• Sierpinski Gasket
• API OpenGL
• Primitivas y Atributos
• Color
• Viewing
• Funciones de Control
Sierpinski Gasket (SG)
• Problema de dibujado abordado en áreas tales como geometría fractal.
• SG es un objeto que puede ser definido recursiva y aleatoriamente, pero que en el limite tiene propiedades no aleatorias.
Sierpinski Gasket
• Algoritmo: Inicialmente se dispone de 3 vértices en un plano:
1. Aleatóriamente se toma un punto dentro del triángulo.
2. Aleatóriamente se selecciona uno de los tres vértices.
3. Se encuentra el punto medio entre el vértice y el punto inicial.
4. Se dibuja el nuevo punto.
5. Se reemplaza el punto inicial por el nuevo punto.
6. Retorna al paso
2. El Modelo Pen-Plotter
• Modelo tradicional en sistemas 2D.
• Dispositivo que mueve un lápiz sujeto a un caballete en direcciones ortogonales para dibujar en el papel.
2 Comandos: moveto(x, y); lineto(x, y);
Puntos 2D/3D
• Los objetos reales tienen 3 dimensiones y se encuentran en un mundo 3D.
• El modelo pen plotter es 2D.
• Los sistemas gráficos permiten el trabajo en 3D y ellos se preocupan de la proyección a 2D.
• Aplicaciones 2D se encuentran en el plano z=0, es decir un punto p = (x, y, 0).
Punto en OpenGL glVertex*()
* = ntv
n = 2, 3 o 4 (especifica la dimensión).
t = i (int), f (float) o d (double) (especifica el tipo).
v = la variable está dada por un puntero a un arreglo.
Ejemplos:
• glVertex2i(GLint xi, GLint yi);
• glVertex3f(GLfloat x, GLfloat y, GLfloat z);
• GLfloat arreglo[3];
• glVertex3fv(arreglo);
Diferentes Objetos Ejemplos:
glBegin(GL_LINES);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
glBegin(GL_POINTS);
glVertex2f(x1, y1);
glVertex2f(x2, y2);
glEnd();
• ¿Qué unidades tienen las variables? ¿Dónde está el origen?
• Resp: Depende del usuario (programador) Sistemas de Coordenadas
• Inicialmente el sistema de coordenadas estaba directamente ligado al dispositivo de despliegue. • Actuales sistemas gráficos permiten trabajar en cualquier sistema de coordenadas.
• Sist. de coord. del mundo viene a ser el sist. de coord. del usuario.
La API OpenGL
• Las propiedades del sistema gráfico se describen a través de sus entradas y salidas.
Una API debería proveer 6 grupos de funciones:
1. Funciones de Primitivas (qué?)
2. Funciones de Atributos (cómo?)
3. Funciones de Visión (viewing)
4. Funciones de Transformación
5. Funciones de Entrada
6. Funciones de Control (sistema de ventanas, errores)
Primitivas y Atributos
• Primitivas son todos los objetos/elementos gráficos que posee el sistema gráfico.
• Las primitivas deberían ser ortogonales y su cantidad mínima.
• La librería GL contiene un conjunto mínimo y GLU una extensión con primitivas más complejas basadas en GL.
GL_POINTS = punto
GL_LINES = linea
GL_LINE_STRIP = poligono abierto
GL_LINE_LOOP = poligono cerrado
Detección de Punto Interior - Test Impar-Par
• El test Par-Impar es el más usado para detectar si un punto está en el interior de un polígono: – Suponiendo que P es un punto al interior de un polígono, en ese caso cada rayo que parte de P y va al infinito cruza el polígono una cantidad impar de veces.
– Un rayo que parte de un punto desde el exterior, cruza el polígono una cantidad par de veces (0 es par). Detección de Punto Interior
- Test de Número de Vuelta no 0 Desde un punto sale un rayo. Si la suma de las aristas que cruzan desde la izquierda menos la suma de las que cruzan desde la derecha es distinto de 0, el punto está adentro, si es 0 está afuera.
Test de Convexidad
Si se orientan las aristas en el sentido de las manecillas del reloj, un punto al interior de un polígono convexo, se encuentra siempre a la derecha de las aristas.
Atributos Color
Modelo de Color RGB (Red-Green-Blue)
Color Indexado
Especificación de Atributos
• glClearColor ( 1.0, 1.0, 1.0, 1.0 );
• glColor3f ( 1.0, 0.0, 0.0 );
Proyección Ortográfica
• glOrtho (left, right, bottom, top, near, far);
• gluOrtho2D ( left, right, bottom, top );
Modos de Matrices
• Matrices principales:
– Model-view
– Projection glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D ( 0.0, 500.0, 0.0, 500.0 );
glMatrixMode( GL_MODELVIEW );
Funciones de Control
• Las funciones de control varían entre diferentes sistemas operativos y pueden ser complejas.
• GLUT provee una simple interfaz entre el sistema gráfico y el S.O.
Interacción con el Sistema de Ventanas
• glutInit( int *argc, char **argv );
• glutCreateWindow( char *name );
• glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
• glutInitWindowSize( 640, 480 );
• glutInitWindowPosition( 0, 0 );
Razón de Aspecto y Viewport
• Razón de Aspecto: relación entre el ancho y el alto.
• Viewport: área rectangular de despliegue dentro de la ventana.
Proyección al Viewport
• glViewport( x, y, width, height );
No hay comentarios:
Publicar un comentario