1 - Componentes Básicos


1.1.1 - Interpolador de Coordenadas

    Un interpolador de coordenadas es una clase que dada una lista de coordenadas reales ordenadas ,en cualquier dimensión, estima puntos intermedios a ellas "trazando" una curva que pase por todos esos puntos.

Si tenemos un vector de puntos [ Po, P1, ... , Pn ] podemos elegir arbitrariamente una curva que pase por todos ellos, hay infinitas posibilidades.
Dada esa curva :   P = f ( parámetro )
Tenemos una función que dado un parámetro devuelve las coordenadas del punto correspondiente.
El parámetro natural es la longitud de arco de la curva, nosotros utilizaremos la longitud de arco normalizada, a lo que llamamos offset, de forma que el primer punto de la curva tiene offset 0 y el último offset 1, los puntos intermedios tienen un valor real entre 0 y 1.

Haremos una distinción entre curvas abiertas y cerradas.

Curvas Abierstas :

    Si tengo un vector de puntos [ Po, P1, ... , Pn ], el primer punto será Po y el último Pn.
    Como se muestra en la figura 1.1.1.2

                Po = f( 0 )
                Pn = f( 1 )


Figura 1.1.1.2

        Los puntos entre 0 y n tienen offset entre 0 y 1

Curvas Cerradas :

    Si tengo un vector de puntos [ Po, P1, ... , Pn ], el primer punto y el último será Po.
    Como se muestra en la figura 1.1.1.3

                Po = f( 0 )
                Po = f( 0 )


Figura 1.1.1.3

En ambos casos la lista de puntos es la misma, el que cierra o no la curva es el interpolador, por eso hablaremso de interpolador cerrado o abierto.

El árbol de herencia de los interpoladores se muestra en la figura 1.1.1.1.

La clase base es abstracta, luego se especializa en abierta o cerrada y de cada una de ella derivamos los interpoladores concretos.
Hemos implementado tres tipos de interpoladores, lineales, de simpson y spline.

Para ilustrar la forma de interpolar de cada uno de ellos vemos el ejemplo que se muestra en la figura 1.1.1.4. donde se han marcado 7 puntos sobre una imagen.


Figura 1.1.1.4

EL vector que le pasamos al interpolador sería el que tiene las coordenadas de los 7 puntos.

Interpolador lineal :

    Este interpolador simplemente traza una recta entre los puntos adyacentes.
    En el ejemplo de la figura 1.1.1.4 un interpolador linelal cerrado trazaría una curva como se muestra
    en la figura 1.1.1.5.


Figura 1.1.1.5

        Mientras un interpolador linelal abierto trazaría una curva como se muestra en la figura 1.1.1.6.


Figura 1.1.1.6

        Obs : El interpolador lineal necesita por lo menos 2 puntos para construirse.

Interpolador de Simpson :

    Este interpolador de Simpson une cada 3 puntos con un polinomio de grado 2.
    Es decir que por ejemplo, el intervalo [ P1, P2, P3 ] lo calcula con un polinomio de grado 2 que pase
    por esos 3 puntos, luego pasa al intervalo [ P3 , P4 , P5 ].
    En el ejemplo de la figura 1.1.1.4 un interpolador Simpson cerrado trazaría una curva como se muestra
    en la figura 1.1.1.7.


Figura 1.1.1.7

        Mientras un interpolador Simpson abierto trazaría una curva como se muestra en la figura 1.1.1.8.


Figura 1.1.1.8

        Obs : El interpolador de Simpson necesita por lo menos 3 puntos para construirse.

Interpolador Spline :

    Este interpolador de Slpline une 4 puntos consecutivos con un polinomio de grado 3 con derivadas
    nulas en las puntas.
    Es decir por ejemplo para calcular el intervalo [P4, P5] , usa los puntos [ P3, P4 , P5, P6 ] para hallar
    el polinomio de grado 3 que pasa por estos 4 puntos y tiene derivadas nulas en P3 y P6.
    Luego para el siguiente intervalo se corren los 4 puntos.

    En el ejemplo de la figura 1.1.1.4 un interpolador Spline cerrado trazaría una curva como se muestra
    en la figura 1.1.1.9.


Figura 1.1.1.9

        Mientras un interpolador Spline abierto trazaría una curva como se muestra en la figura 1.1.1.10.


Figura 1.1.1.10

        Obs : El interpolador Spline necesita por lo menos 4 puntos para construirse.

Pueden verse los detalles sobre las funciones de estas clases en :

    bicotiCoordinateInterpolator1D
        bicotiCoordinateInterpolator1DOpen
             bicotiCoordinateInterpolator1DOpenLinear
             bicotiCoordinateInterpolator1DOpenSimpson
             bicotiCoordinateInterpolator1DOpenSpline
        bicotiCoordinateInterpolator1DClosed
             bicotiCoordinateInterpolator1DClosedLinear
             bicotiCoordinateInterpolator1DClosedSimpson
             bicotiCoordinateInterpolator1DClosedSpline