Infografia I, Práctica 6: Curvas
Última actualización 18/02/2011Esta práctica trata sobre maneras de definir curvas mediante ecuaciones matematicas de diferente grado y de interactuar con ellas para dibujarlas o definir rutas.
Conocer el uso de las curvas es clave cuando queremos mover objetos o la camara por el escenario de una manera suave.
Material
- Slides sobre Curvas de Bezier
- Slides sobre Continuidad en curvas de Bezier
- Framework de la practica 6
Requisitos
- Implementar las siguientes funciones del framework:
Class Spline: void addPoint( Vector3 point); Vector3 getInterpolatedPoint(float t);
- El codigo de la funcion onDraw que pinta la curva utilizando un GL_LINE_STRIP, o podeis crear un metodo render en la clase spline que recibe por parametro el numero de iteraciones (segmentos) a pintar de la curva.
- Pintar los puntos de control de color distinto que los puntos que definen el principio y el final de la curva
- Los puntos se tienen que introducir con el raton y se tienen que poder modificar con el boton derecho del raton si estamos trabajando en 2D (en 3D no hace falta).
- Sugerencias opcionales:
- Pintar un punto animado que se desplace por encima de la curva recorriendola y que cuando llegue al final salte de nuevo al principio.
- Modificar la clase spline para que pueda contener más de una curva garantizando siempre la continuidad C1.
- Crear una función que te diga cuantos segmentos curvos tiene la curva continua.
- Hacer una función que cierre la curva manteniendo la continuidad tanto por el principio como por el final.
- Crear una spline 3D en el escenario, los puntos pueden estar en el codigo directamente, o podeis usar vuestra imaginación (pero nada de pedir que se introduzcan por consola…)
- Permitir recorrer la curva completa usando un intervalo normalizado de T (0 es el principio de la primera curva y 1 es el final de la última curva):
Vector3 getNormalizedInterpolatedPoint(float t);
- Sugerencias opcionales:
- Que mantenga la continuidad incluso cuando se modifica en 2D la posicion de los puntos de control de la curva.
- Animar la camara para que navegue por encima de la curva (basta asignar el eye a una T de la curva y el center a una T ligeramente superior).
Para la segunda parte de la practica, implementar:
Fallos comunes
- Teneis que almacenar unicamente los puntos de control, los puntos intermedios sobre la curva se calculan conforme se van necesitando en funcion de la T, pero no se almacenan.
- No saber sacar de una T normalizada (que va de 0 a 1) en una curva continua formada por varias curvas el indice que indica qué curva local es y su T local.
- La aplicación nunca debe colgarse incluso si usamos una T fuera de rango (cuidado porque muchas veces con T == 1 las aplicaciones se cuelgan).
Valor: 10 puntos