# Interpolación lineal esférica

En computación gráfica, el término slerp es una abreviatura de la expresión inglesa "spherical linear interpolation" (interpolación lineal esférica)), introducida por Ken Shoemake en el contexto de la interpolación mediante cuaterniones con el fin de generar animaciones con movimientos de rotación en 3D. Hace referencia al movimiento a velocidad constante sobre un arco de un gran círculo de una esfera de radio unitario, dados sus extremos y un parámetro de interpolación entre 0 y 1.

## Slerp geométrico

El slerp tiene una formulación geométrica independiente de los cuaterniones e independiente de la dimensión del espacio en el que está incrustado el arco. Esta fórmula, una suma ponderada simétrica atribuida a Glenn Davis, se basa en el hecho de que cualquier punto de la curva debe ser una combinación lineal de los extremos. Sean p$_0$ y p$_1$ el primer y el último punto del arco, y sea t el parámetro 0 ≤ t ≤ 1. Cálculese O como el ángulo subtendido formado por el arco, de modo que cos Ω = p$_0$ ⋅ p$_1$, el producto escalar de n dimensiones de los vectores unitarios desde el origen hasta los extremos. La fórmula geométrica es entonces
    $\operatorname {slerp} (p_{0},p_{1};t)={\frac {\sin {[(1-t)\Omega }]}{\sin \Omega }}p_{0}+{\frac {\sin[t\Omega ]}{\sin \Omega }}p_{1}.$
La simetría radica en el hecho de que slerp(p$_0$, p$_1$; t) = slerp(p$_1$, p$_0$; 1 − t). En el límite cuando Ω → 0, esta fórmula se reduce a la fórmula simétrica correspondiente para la interpolación lineal,
    $\operatorname {lerp} (p_{0},p_{1};t)=(1-t)p_{0}+tp_{1}.$
Una trayectoria slerp es, de hecho, el equivalente en geometría esférica de una trayectoria en un segmento rectilíneo en el plano; dado que un círculo máximo es una línea geodésica esférica.
Más familiar que la fórmula general de slerp es el caso en el que los vectores finales son perpendiculares, en cuyo caso la fórmula es p$_0$cos θ + p$_1$sin θ. Haciendo que θ = tΠ/2 y aplicando la identidad trigonométrica cos θ = sin(Π/2 − θ), esto se convierte en la fórmula de la slerp. El factor de 1/sin Ω en la fórmula general es una normalización, ya que un vector p$_1$ en un ángulo de O con p$_0$ se proyecta sobre la perpendicular p$_0$ con una longitud de solo sin Ω.
Algunos casos especiales de slerp admiten cálculos más eficientes. Cuando se va a dibujar un arco circular en una imagen rasterizada, el método preferido es alguna variación del algoritmo circunferencial de Bresenham. La evaluación en los valores de parámetros especiales 0 y 1 produce trivialmente p$_0$ y p$_1$, respectivamente; y la bisección, para la evaluación en 1/2, simplifica a (p$_0$ + p$_1$)/2, normalizada. Otro caso especial, común en la animación, es la evaluación con extremos fijos y pasos paramétricos iguales. Si p$_{k−1}$ y p$_k$ son dos valores consecutivos, y si c es el doble de su producto escalar (constante para todos los pasos), entonces el siguiente valor, p$_{k+1}$, es la reflexión p$_{k+1}$ = cp$_k$ − p$_{k−1}$.

## Cuaternión slerp

Cuando se aplica slerp mediante un cuaternión unitario, la ruta del cuaternión se asigna a una ruta a través de rotaciones 3D de forma estándar. El efecto es una rotación con velocidad angular uniforme alrededor de un eje de rotación fijo. Cuando el punto final inicial es el cuaternión identidad, slerp proporciona un segmento de un grupo uniparamétrico tanto del grupo de Lie de rotaciones 3D, SO(3), como de su grupo de recobrimiento universal de cuaterniones unitarios, S$^3$. El slerp proporciona un camino más directo entre los puntos finales de sus cuaterniones y se asigna a una rotación en un ángulo de 2O. Sin embargo, debido a que el recubrimiento es doble (q y -q corresponden a la misma rotación), la trayectoria de rotación puede girar en el "camino corto" (menos de 180°) o en el "camino largo" (más de 180°). Se pueden evitar rutas largas cambiando el signo de un extremo si el producto escalar, cos Ω, es negativo, asegurando así que −90° ≤ Ω ≤ 90°.
También tiene expresiones en términos de álgebra de cuaterniones, todas usando potenciación. Las potencias reales de un cuaternión se definen en términos de la función exponencial de cuaterniones, escrita como e$^q$ y dada por la serie de potencias igualmente familiar en cálculo, análisis complejo y álgebra matricial:
    $e^{q}=1+q+{\frac {q^{2}}{2}}+{\frac {q^{3}}{6}}+\cdots +{\frac {q^{n}}{n!}}+\cdots .$
Escribir un cuaternión unitario q en forma de versor, cos Ω + v sin Ω, con v un vector unitario 3D, y observar que el cuadrado del cuaternión v$^2$ es igual a -1 (lo que implica una versión para los cuaterniones de la fórmula de Euler), se tiene que e$^{vΩ}$ = q y q$^t$ = cos tΩ + v sin tΩ. La identificación de interés es q = q$_1$q$_0$$^{−1}$, de modo que la parte real de q es cos Ω, igual que el producto escalar geométrico utilizado anteriormente. Aquí hay cuatro expresiones de cuaterniones equivalentes para el slerp.
    ${\begin{aligned}\operatorname {slerp} (q_{0},q_{1},t)&=q_{0}(q_{0}^{-1}q_{1})^{t}\\[6pt]&=q_{1}(q_{1}^{-1}q_{0})^{1-t}\\[6pt]&=(q_{0}q_{1}^{-1})^{1-t}q_{1}\\[6pt]&=(q_{1}q_{0}^{-1})^{t}q_{0}\end{aligned}}$
La derivada de slerp(q$_0$, q$_1$; t) con respecto a t, suponiendo que los extremos sean fijos, es log(q$_1$q$_0$$^{−1}$) multiplicado por el valor de la función, donde el logaritmo natural del cuaternión en este caso produce la mitad del vector 3D velocidad angular. El vector tangente inicial se aplica paralelamente a cada tangente en la curva; por lo tanto, la curva es, en efecto, una geodésica.
En el espacio tangente, en cualquier punto de una curva slerp mediante cuaterniones, la inversa de la función exponencial transforma la curva en un segmento rectilíneo. Las curvas slerp que no se extienden a través de un punto no se transforman en rectas en el espacio tangente de ese punto.
Los slerps de cuaterniones se utilizan comúnmente para construir curvas de animación suaves, imitando construcciones afines como el algoritmo de De Casteljau para las curvas de Bézier. Dado que la esfera no es un espacio afín, las propiedades familiares de las construcciones afines pueden fallar, aunque las curvas construidas pueden ser completamente satisfactorias. Por ejemplo, el algoritmo de Casteljau se puede utilizar para dividir una curva en un espacio afín, lo que no funciona en una esfera.
El slerp de dos valores se puede extender para interpolar entre muchos cuaterniones unitarios, pero la extensión pierde el tiempo de ejecución fijo del algoritmo slerp.