Infografia I, Práctica 6: Curvas - Web de Javi Agenjo

Infografia I, Práctica 6: Curvas

Última actualización 18/02/2011

Esta 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

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.


    Para la segunda parte de la practica, implementar:

  • 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).

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