Crear splines continuos / Hacer una transición suave entre splines

Estoy trabajando en un proyecto que implica crear una spline a partir de un conjunto definido de puntos (decenas de miles de puntos).

Primero creo una spline para los primeros 1000 puntos y simulo "conducir" en esa ruta con una flecha (se dibuja usando la tangente y el punto actual en la spline). Cuando me acerco al final del camino, tomo los siguientes 1000 puntos y creo una nueva spline y continúo mi "conducción".

El problema que tengo es el hecho de que las splines (spline anterior y spline actual) no coinciden al final. Al no coincidir, quiero decir que no tienen la misma tangente (la primera derivada no coincide) y hay una diferencia entre el último punto de la spline anterior y el primer punto de la nueva spline (esto se debe a que no estoy usando una spline de interpolación pero una spline suave (consulte la NOTA 1 a continuación). Esto hace que mi flecha "salte" al final de la spline, al cambiar a la spline recién creada.

NOTA1 : Estoy NO usando splines de interpolación. Estoy usando splines suaves. Consulte aquí y aquí para obtener más detalles. Esto significa que el conjunto de puntos dado como entrada puede no estar en el spline resultante (en mi caso, están bastante cerca del spline, pero generalmente NO en el spline).

NOTA2 : Usar un spline de interpolación está fuera de discusión porque tengo mucho ruido en los datos usados ​​para calcular el spline.

NOTA3 : Calcular un spline para el conjunto completo de puntos lleva mucho tiempo (más de 30 segundos) en una PC de 3Ghz con 2 GB de RAM (nuestra plataforma de destino para la aplicación); así que hacer esto también está fuera de discusión.

Me interesaría superar ese "salto" no deseado al cambiar de splines.

Así que mis preguntas son:

  • ¿Existen algunas formas / algoritmos para hacer un ¿"salto" / transición a la nueva spline?
  • ¿Puedo hacer algo con un tipo especial de spline para superar esto? (Esto es lo que intenté hasta ahora sin una mejora considerable).

Gracias por cualquier idea,

Iulian

6
задан INS 16 June 2011 в 08:54
поделиться