ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

REPRESENTACION Y TRAZO DE POLIGONOS


Enviado por   •  26 de Mayo de 2015  •  Síntesis  •  372 Palabras (2 Páginas)  •  240 Visitas

Página 1 de 2

2.2REPRESENTACION Y TRAZO DE POLIGONOS

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

...

Descargar como (para miembros actualizados)  txt (2.3 Kb)  
Leer 1 página más »
Disponible sólo en Clubensayos.com