Interpolar coordenadas 3D entre intervalos de tiempo faltantes conocidos

Los datos son una ruta en el espacio. Tengo datos de ubicación en 3D (x, y, z) y la hora en que se registró el punto de ubicación.

Las coordenadas x, y y z son las ubicaciones de los puntos de algo que viaja a través del espacio 3D. Los valores de tiempo son el tiempo (comenzando en 0) que se registró cada punto.

x     y    z    time(s)
0.1   2.2  3.3  0
2.4   2.4  4.2  0.3
4.5   2.5  1.8  0.6

Eventualmente extrañaré algunos eventos de grabación. (esto se conoce y se acepta como verdadero) Y el flujo de datos continuará en un intervalo de tiempo diferente:

x     y    z    time(s)
0.1   2.2  3.3  0
2.4   2.4  4.2  0.3
//missing x,y,z data point at time 0.6
//missing x,y,z data point at time 0.9
4.5   2.5  1.8  1.2
...
...

Tenga en cuenta que los datos se simplificaron. Mi objetivo es interpolar los puntos 3D que faltan en los momentos faltantes conocidos. He examinado varias técnicas de interpolación, pero no estoy completamente seguro de qué método de interpolación es adecuado para mi problema.

1) ¿Alguien puede explicar sucintamente el tipo de problema que es este? Mi matemática está extremadamente oxidada y no estoy seguro de cómo describirla adecuadamente, lo que me lleva a investigar técnicas de interpolación que pueden no ser adecuadas.

2)Actualización 1 La interpolación tricúbica no debería aplicarse aquí ya que no estoy trabajando con una cuadrícula en el espacio 3D. Estoy trabajando con una trayectoria. He encontrado unImplementación de interpolación tricúbica en Apache math3 commons, sin embargo, no estoy seguro de si esto es lo que necesito. Si nos fijamos en los argumentos que lleva, se necesita una matriz doble [] [] [] fval de la que no estoy seguro.

3) Si no es el más adecuado para Java, ¿cuál es la mejor herramienta para interpolar estos datos?

Actualización 2 - Pregunta sobre la solución de Spectre

En su edición, proporciona el siguiente consejo sobre "coincidencia de primeras derivaciones de puntos de unión":

definamos nuestrot=<-2,+2> y muestre el punto de control de esta manera (realmente no importa cómo solo afectará la magnitud de los coeficientes e incluye-1,0,1 facilitará mucho las ecuaciones):

p(-2) = p0
p(-1) = p1
p( 0) = p2
p( 1) = p3

ahora supongamos que queremos interpolar todos los puntos en el intervalot=<0,1> así que todos los puntos entrep2 yp3. Y queremos una curva continua por partes, por lo que las primeras derivaciones en los puntos de unión deben coincidir. Tenemos un punto de control más en el lado izquierdo, por lo que la segunda derivación también puede coincidir allí:

p'(0) = 0.5*((p3-p2)+(p2-p1)) = 0.5*(p3-p1)
p'(1) = 0.5*((p4-p3)+(p3-p2)) = 0.5*(p4-p2)
p''(0)= 0.5*(((p2-p1)-(p1-p0))+((p4-p3)-(p3-p2)))
      = 0.5*((p2-2*p1+p0)+(p4-2*p3+p2))
      = 0.5*(p0+p4)-p1+p2-p3

Espero no haber cometido ningún error tonto en la segunda derivación. Ahora solo sustituyep(t) con puntos de control conocidos y sistema de formas de ecuaciones y cálculoa0,a1,a2,a3,a4 algebraicamente dep0,p1,p2,p3,p4.

1) ¿Qué quieres decir conjoint points?

2) ¿Dónde

p'(0) = 0.5*((p3-p2)+(p2-p1)) = 0.5*(p3-p1)
p'(1) = 0.5*((p4-p3)+(p3-p2)) = 0.5*(p4-p2)

¿viene de? ¿Se relacionan de alguna manera conp(0) = p2 yp(1) = p3 ? ¿Pueden ser cualquier cosa que elijas?

Se puede reescribir comop'(0) = 0.5*((p(3)-p(0)) + (p(0)-p(-1)) ¿correcto? No me queda claro por qué se está haciendo esto. O incluso por quépuede hacerse

2b) Pregunta similar para

p''(0)= 0.5*(((p2-p1)-(p1-p0))+((p4-p3)-(p3-p2)))
      = 0.5*((p2-2*p1+p0)+(p4-2*p3+p2))
      = 0.5*(p0+p4)-p1+p2-p3

pero supongo que la pregunta aclaratoria 2) aliviará mi ambigüedad para 2b) porque tampoco tengo idea de dónde vino la ecuación.

Lo que sigue es bastante sencillo, entonces son solo sistemas de ecuaciones

Respuestas a la pregunta(1)

Su respuesta a la pregunta