El tercer proyecto de graficas I se baso en una de los aspectos mas importante
de la teoria de Graficas, como lo es la generacion de curvas utilizando
diferentes metodos.
La idea principal del proyecto era generar curvas de Bezier y Splines,
utilzando para cada uno los metodos polinomiales y de Casteljou respectivamente.
Puntos principales del proyecto:
Generar una interfaz
interactiva con el usuario, a traves de la cual se puedan introducir los
puntos de control de las curvas.
Generar curvas Splines
con el metodos polinomial y casteljou.
Generar curvas de
Bezier con los metodos polinomial y casteljou.
Generar solidos
de revolucion utilizando las curvas pre-definidas.
Mostrar 4 vistas
de la misma curva, vista tridimensional, vista del plano XY, XZ y
YZ.
Desarrollo de la Aplicacion:
Para la interfaz, tal y como se muestra en la
imagen se utlizaron 4 vistas, la primera se muestra la figura en tres dimensiones
(arriba, a la izquierda), vista del plano XY (arriba, derecha), vista del
plano YZ (abajo, izquierda) y vista del plano XZ (abajo, derecha). La quinta
y ultima pantalla (no se muestra en la imagen), corresponde al Panel de
Control, a traves del cual el usuario puede cambiar el tipo de curva que
quiere manejar, el numero de iteraciones de cada uno de los algoritmos
para generar la curva, los grados para generar el solido de revolucion
una vez dada la curva y otros detalles. La interfaz se creo
utilizando la libreria mui.h que provee OpenGL.
Para generar las curvas nos basamos en las formulas recursivas descritas en clases, y no en los evaluators utilizados en OpenGL. En el codigo del proyecto se encuentran definidos la implementacion para cada tipo de curva.
Esta
imagen corresponde a una curva de tipo Bezier polinomial con 8 iteraciones.
La linea verde representa la curva generada, los puntos blancos son
los puntos de control introducidos por el usuario, y las lineas moradas
representan la continuidad de la curva. Dado que una curva de Bezier se
define con cuatro puntos, la continuidad entre una y otra debe ser suave
para no generar picos, esta linea demuestra que la curva es C2.
Esta
imagen corresponde a la misma curva formada con Bezier, pero esta vez generada
con un Spline polinomial con 8 iteraciones. Como se puede observar en la
figura, la curva no toca ni el primer ni el ultimo punto, caracteristica
principal de una curva spline. En este caso no se muestra la linea de continuidad
puesto que para genenar una curva spline se necesitan 8 puntos y esta garantiza
C2.
Para generar el solido de revolucion se tomaron
en cuenta el eje sobre el que se hace la rotacion y la curva en si. Despues
de generada la curva esta es inscrita en una circunsferencia (que no se
ve) alrededor del eje prestablecido por el usuario.
Esta imagen muestra
una curva (en verde) y el solido creado por revolucion en 360 grados de
la misma. La imagen se encuentra rotada en el eje x para poder observar
la curva original.
La misma imagen
vista desde los planos XZ y YZ.
Enunciado
Codigo Fuente
Para cualquier duda o comentario escribenos!