Articulo de referencia

Interpolación lineal esférica

En geometría , la interpolación lineal esférica , comúnmente abreviada como slerp , es una función que interpola entre dos puntos en una esfera , de manera que la distancia esfé...

En geometría , la interpolación lineal esférica , comúnmente abreviada como slerp , es una función que interpola entre dos puntos en una esfera , de manera que la distancia esférica desde el punto de partida varía uniformemente con el parámetro de interpolación . En gráficos por computadora , fue popularizada por Ken Shoemake para animar rotaciones tridimensionales , representadas como cuaterniones en una 3-esfera abstracta . [ 1 ] Cuando el parámetro de interpolación representa el tiempo , la interpolación lineal esférica da como resultado un movimiento de velocidad constante a lo largo de un arco de círculo máximo entre los puntos extremos o una variación suave y uniforme entre dos rotaciones tridimensionales.

slerp geométrico

Slerp posee una fórmula geométrica independiente de los cuaterniones y de la dimensión del espacio en el que se encuentra 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 sus extremos. Sean p₀ y p₁ el primer y último punto del arco, y sea t el parámetro, 0 t ≤ 1. Calculamos Ω como el ángulo subtendido por el arco, de modo que cos Ω = p₀p₁ , el producto escalar n -dimensional de los vectores unitarios desde el origen hasta los extremos. La fórmula geométrica es entonces

slerp(pag0,pag1;t)=pecado[(1t)Ω]pecadoΩpag0+pecado[tΩ]pecadoΩpag1.{\displaystyle \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 reside 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 ,

slerp(pag0,pag1;t)=(1t)pag0+tpag1.{\displaystyle \operatorname {slerp} (p_{0},p_{1};t)=(1-t)p_{0}+tp_{1}.}

Una trayectoria SLRP es, de hecho, el equivalente geométrico esférico de una trayectoria a lo largo de un segmento de línea en el plano; un círculo máximo es una geodésica esférica .

El vector oblicuo se rectifica al factor slerp.

Más familiar que la fórmula general de slerp es el caso en que los vectores extremos son perpendiculares, en cuyo caso la fórmula es p 0 cos θ + p 1 sin θ . Haciendo θ = t π /2 , y aplicando la identidad trigonométrica cos θ = sin( π /2 − θ ) , esto se convierte en la fórmula de 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 Ω a p 0 se proyecta sobre la perpendicular ⊥ p 0 con una longitud de solo sin Ω .

Algunos casos especiales de slerp admiten un cálculo más eficiente. Cuando se va a dibujar un arco circular en una imagen rasterizada, el método preferido es alguna variación del algoritmo de círculo de Bresenham . La evaluación en los valores especiales de los parámetros 0 y 1 produce trivialmente p 0 y p 1 , respectivamente; y la bisección, evaluación en 1 / 2 , se simplifica a ( p 0 + p 1 )/2 , normalizado. Otro caso especial, común en 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 kp k −1 . 

slerp de cuaternión

Cuando se aplica slerp a cuaterniones unitarios , la trayectoria del cuaternión se mapea a una trayectoria a través de rotaciones 3D de manera 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 da un segmento de un subgrupo uniparamétrico tanto del grupo de Lie de rotaciones 3D, SO(3) , como de su grupo de recubrimiento universal de cuaterniones unitarios, S3 . Slerp da una trayectoria más recta y corta entre sus puntos finales de cuaternión, y se mapea a una rotación a través de un ángulo de 2Ω. Sin embargo, debido a que el recubrimiento es doble ( q y −q se mapean 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 trayectorias largas negando un extremo si el producto escalar, cos Ω , es negativo, asegurando así que −90° ≤ Ω ≤ 90° .

Slerp también tiene expresiones en términos de álgebra de cuaterniones, todas usando exponenciació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 del cálculo, el análisis complejo y el álgebra matricial:

miq=1+q+q22+q36++qnortenorte¡+.{\displaystyle e^{q}=1+q+{\frac {q^{2}}{2}}+{\frac {q^{3}}{6}}+\cdots +{\frac {q^{n}}{n!}}+\cdots .}

Escribiendo un cuaternión unitario q en forma de versor , cos Ω + v sin Ω , con v un vector unitario de 3 dimensiones, y observando que el cuadrado del cuaternión v 2 es igual a −1 (lo que implica una versión de cuaternión de la fórmula de Euler ), tenemos 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 cuaternión equivalentes para slerp.

slerp(q0,q1,t)=q0(q01q1)t=q1(q11q0)1t=(q0q11)1tq1=(q1q01)tq0{\displaystyle {\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 están fijos, es log( q 1 q 0 −1 ) veces el valor de la función, donde el logaritmo natural del cuaternión en este caso produce la mitad del vector de velocidad angular 3D . El vector tangente inicial se transporta paralelamente a cada tangente a lo largo de la curva; por lo tanto, la curva es, en efecto, una geodésica.

En el espacio tangente, en cualquier punto de una curva slerp de cuaternión, la inversa de la función exponencial transforma la curva en un segmento de línea. Las curvas slerp que no pasan por un punto no se transforman en líneas en el espacio tangente de ese punto.

Las interpolaciones de cuaterniones se utilizan comúnmente para construir curvas de animación suaves imitando construcciones afines como el algoritmo de De  Casteljau para curvas de Bézier . Dado que la esfera no es un espacio afín , las propiedades habituales de las construcciones afines pueden fallar, aunque las curvas construidas sean, por lo demás, completamente satisfactorias. Por ejemplo, el  algoritmo de De Casteljau se puede usar para dividir una curva en un espacio afín; esto no funciona en una esfera.

El algoritmo slerp de dos valores puede extenderse para interpolar entre muchos cuaterniones unitarios, [ 2 ] pero la extensión pierde el tiempo de ejecución fijo del algoritmo slerp.

Véase también

Referencias

  1. "Ken Shoemake - Inicio" .
  2. Pennec, Xavier (marzo de 1998). Cálculo de la media de características geométricas: aplicación a la rotación media (informe). INRIA . Consultado el 19 de junio de 2020 .
  • Shoemake, Ken. "Animación de rotación con curvas de cuaterniones" (PDF) . SIGGRAPH 1985.
  • Erik B., Dam; Martin, Koch; Lillholm, Martin (17 de julio de 1998). "Cuaterniones, interpolación y animación" (PDF) . Universidad de Copenhague. Archivado (PDF) del original el 30 de agosto de 2017.
  • Blow, Jonathan (26 de febrero de 2004). "Comprender Slerp y luego no usarlo" . Archivado del original el 25 de agosto de 2017.
  • Martin, Brian (23 de junio de 1999). "Brian Martin sobre la animación de cuaterniones" . Archivado del original el 24 de marzo de 2016.