Spline cubica di Hermite
# Spline cubica di Hermite

In analisi numerica la spline cubica di Hermite (chiamata anche cspline), in onore del matematico Charles Hermite, è una funzione spline di 3º grado dove ogni polinomio della spline è nella forma di Hermite (da non confondere con i polinomi di Hermite). La forma di Hermite consiste di due punti di controllo e di due tangenti di controllo per ogni polinomio.

Su una griglia composta dai punti $x_{k}$ per $k=1,...,n$, l'interpolazione è effettuata su ogni sottointervallo $(x_{k},x_{k+1})$ alla volta (dato che i valori della tangente sono predeterminati). Il sottointervallo $(x_{k},x_{k+1})$ è normalizzato all'intervallo $(0,1)$ tramite la funzione $t=(x-x_{k})/(x_{k+1}-x_{k})$.

## Interpolazione di un singolo intervallo

### Interpolazione sull'intervallo $(0,1)$

Con l'intervallo $(0,1)$, dato il punto iniziale $p_0$ con $t=0$ ed il punto finale $p_1$ con $t=1$ con la tangente iniziale $m_0$ con $t=0$ e tangente finale $m_1$ con $t=1$, il polinomio è definito da

    ${\boldsymbol {p}}(t)=(2t^{3}-3t^{2}+1){\boldsymbol {p}}_{0}+(t^{3}-2t^{2}+t){\boldsymbol {m}}_{0}+(-2t^{3}+3t^{2}){\boldsymbol {p}}_{1}+(t^{3}-t^{2}){\boldsymbol {m}}_{1}$

dove t ∈ [0, 1].

Le 4 funzioni base di Hermite sono definite come:

    $h_{00}(t)=2t^{3}-3t^{2}+1=(1+2t)(1-t)^{2}$
    $h_{10}(t)=t^{3}-2t^{2}+t=t(1-t)^{2}$
    $h_{01}(t)=-2t^{3}+3t^{2}=t^{2}(3-2t)$
    $h_{11}(t)=t^{3}-t^{2}=t^{2}(t-1)$

Il polinomio diventa: ${\boldsymbol {p}}(t)=h_{00}(t){\boldsymbol {p}}_{0}+h_{10}(t){\boldsymbol {m}}_{0}+h_{01}(t){\boldsymbol {p}}_{1}+h_{11}(t){\boldsymbol {m}}_{1}.$

### Interpolazione su $(x_{k},x_{k+1})$

L'interpolazione di $x$ nell'intervallo $(x_{k},x_{k+1})$ viene ora effettuata con la formula

    ${\boldsymbol {p}}(x)=h_{00}(t){\boldsymbol {p}}_{0}+h_{10}(t)h{\boldsymbol {m}}_{0}+h_{01}(t){\boldsymbol {p}}_{1}+h_{11}(t)h{\boldsymbol {m}}_{1}.$

con $h=x_{k+1}-x_{k}$ e $t=(x-x_{k})/h$. Si noti che i valori della tangente sono stati scalati di $h$ in raffronto alla equazione presentata sull'intervallo unitario.

La formula garantisce un unico percorso tra i due punti iniziale e finale.

## Interpolazione di un set di dati

Un set di dati, $(x_{k},{\boldsymbol {p}}_{k})$ con $k=1,...,n$, viene interpolato applicando la procedura sopra esposta su ogni sottointervallo, dove le tangenti sono scelte in modo opportuno. Le tangenti per gli intervalli che condividono gli stessi punti finali sono uguali.

La scelta delle tangente non è univoca e ci sono diversi metodi che si possono applicare.

### Differenze finite

La scelta più semplice è data dalla differenza su 3 punti e non richiede una lunghezza di intervallo costante,

    ${\boldsymbol {m}}_{k}={\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k}}{2(x_{k+1}-x_{k})}}+{\frac {{\boldsymbol {p}}_{k}-{\boldsymbol {p}}_{k-1}}{2(x_{k}-x_{k-1})}}$

per i punti interni $k=2,...,n-1$.

### Cardinal spline

Una cardinal spline si ottiene se

    ${\boldsymbol {m}}_{k}=(1-c){\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k-1}}{2}}$

usata per calcolare le tangenti. Il parametro $c$ detto tensione è nell'intervallo $(0,1)$. Rappresenta la "lunghezza" della tangente. $c=1$ comporta tangenti lunghe pari a zero, e $c=0$ porta al caso delle spline di tipo Catmull-Rom.

### Spline di Catmull–Rom

Per le tangenti si applica

    ${\boldsymbol {m}}_{k}={\frac {{\boldsymbol {p}}_{k+1}-{\boldsymbol {p}}_{k-1}}{2}}$

Una Catmull–Rom spline si ottiene come caso speciale delle cardinal spline.

La curva prende il nome da Edwin Catmull e Raphael (Raphie) Rom. In grafica computerizzata, le Catmull–Rom splines sono usate per ottenere un effetto morbido di interpolazione tra i keyframes di un video.

### Spline di Kochanek–Bartels

Una spline di Kochanek-Bartels è una generalizzazione su un modo di calcolare le tangenti partendo dai punti ${\boldsymbol {p}}_{k-1}$, ${\boldsymbol {p}}_{k}$ e ${\boldsymbol {p}}_{k+1}$, dove sono possibili 3 parametri detti tensione, bias e continuità.

