13 votos

¿Cómo interpolar suavemente entre transformaciones de Möbius?

Si tienes dos transformaciones de Möbius representadas como:

$f(z) = \frac{az + b}{cz + d}$

$g(z) = \frac{pz + q}{rz + s}$

donde $a, b, c, d, p, q, r, s, z \in \mathbb{C}$

¿Es posible derivar una tercera función $h(z, t)$ donde $t \in \mathbb{R}$ y $0 \leq t \leq 1$ que interpola "suavemente" entre las transformaciones representadas por $f(z)$ y $g(z)$ ?

Intentaré aclarar el significado de "sin problemas". Estoy trabajando en un modelo de disco de Poincaré de geometría hiperbólica. Las funciones $f$ & $g$ representan transformaciones que preservan la congruencia dentro del modelo, es decir, un segmento de línea de Poincaré $PQ$ tendrá la misma distancia de Poincaré que $P'Q'$ donde $P' = f(P)$ & $Q' = f(Q)$ . Me gustaría que la transformación interpolada conservara también esta propiedad.

Aclaración :

Las respuestas que implican la diagonalización de la matriz "casi" funcionan. Permítanme ser más claro acerca de cómo se utilizan estas transformaciones de Mobius, para que pueda dar un poco más de contexto.

$f$ representa la posición y orientación de una ficha en el disco de Poincare. Lo utilizo para transformar una baldosa centrada en el origen. $g$ representa una ficha vecina. Me gustaría "animar" el $f$ azulejo moviéndolo suavemente sobre el $g$ baldosa. Durante la animación, el centro de $f$ debe desplazarse a lo largo de la línea de puntas que une las dos baldosas en posición de reposo.

El problema con el enfoque de diagonalización es que los centros de las dos baldosas viajarán alrededor de una esquina de una de las baldosas, a veces por el camino "largo".

Por supuesto, podría tratarse de un error en mi código...

P.D. Esto es para un juego de iphone que estoy desarrollando llamado Circull

http://www.youtube.com/watch?v=DiWijYb-xus

11voto

John Topley Puntos 58789

Me gustaría abordar dos cuestiones sobre cómo aplicar estas interpolaciones y qué significan. El grupo por el que preguntas es en realidad equivalente al grupo de transformaciones reales de M\"obius. Si estuvieras en el modelo del semiplano superior, los coeficientes serían números reales. En realidad no es necesario utilizar explícitamente el modelo del semiplano superior, pero sí el hecho de que todos los movimientos son elípticos, hiperbólicos o parabólicos. El grupo se llama $\mathrm{PSL}(2,\mathbb{R})$ .

Se sabe que una buena forma de hacer movimientos suaves en un grupo de Lie es con geodésicas. Se trata de un principio importante en la infografía 3D ordinaria, donde el grupo de Lie es en cambio $\mathrm{SO}(3)$ . Un método estándar para encontrar las geodésicas en este caso de comparación es con cuaterniones. Sucede que esto introduce una arruga con ángulos doblados que también aparece en tu caso.

Supongo que está utilizando $f$ y $g$ como sigue: $z$ es un punto en el mapa de bits estándar de su pájaro, y luego $f(z)$ o $g(z)$ es la posición cartografiada del pájaro en su modelo de disco de Poincare del plano hiperbólico. Si esto es lo que estás haciendo, entonces una derivación correcta de la geodésica es $h_t(f(z))$ donde $h_t(z)$ es un camino exponencial desde la identidad hasta $g(f^{-1}(z))$ . Supongo que la fórmula intercambiada que otras personas han utilizado, $f^{-1} \circ g$ es equivalente.

Se puede encontrar el camino exponencial diagonalizando la matriz de $h_1 = g \circ f^{-1}$ . Sin embargo, existe la importante arruga de que el grupo de matrices es $\mathrm{SL}(2,\mathbb{R})$ que es el doble de grande que $\mathrm{PSL}(2,\mathbb{R})$ . Sea $M$ sea la matriz de $h_1$ . Si $M$ es hiperbólica, entonces tiene valores propios reales. En este caso, primero debe cambiar a $-M$ si los valores propios son negativos. En la base en la que $M$ es diagonal, deberá utilizar específicamente $$M_t = \begin{bmatrix} \exp(ct) & 0 \\\\ 0 & \exp(-ct)\end{bmatrix}.$$ Si utiliza alguna otra opción, no seguirá la geodésica a una velocidad constante. Si $M$ es elíptica, entonces debe utilizar $$M_t = \begin{bmatrix} \exp(i\theta t) & 0 \\\\ 0 & \exp(-i\theta t)\end{bmatrix},$$ de nuevo en una base (compleja) en la que $M$ es diagonal. Pero aquí, ¿cómo elegir entre $M$ y $-M$ ? La rotación geométrica total es $2\theta$ no $\theta$ . Debe negar $M$ si después de diagonalizar, $\theta$ es más que $\pi/2$ ; si no lo hace, podría girar más de 180 grados. En el caso parabólico (que puede que no veas porque requiere una coincidencia numérica), $$M_t = \begin{bmatrix} 1 & t \\\\ 0 & 1\end{bmatrix}.$$

Por último, en los gráficos por ordenador es posible que desees una trayectoria suave que acelere desde 0 al principio y desacelere hasta 0 al final. Con la confianza de que $t$ en las fórmulas anteriores sigue la geodésica a un ritmo uniforme, se puede hacer algo como $t = \sin(s)^2$ y utilizar $s$ como parámetro de tiempo.

9voto

kamens Puntos 6043

Una interpolación explícita es bastante fácil de encontrar. (Utilizaré el modelo de medio plano superior).

$f$ viene dado por $\left( \begin{array}{cc} a & b \\\ c & d \end{array} \right)$ .

$f$ es elíptica, parabólica o hiperbólica si la traza tiene valor absoluto menor que 2, 2 o mayor que 2.

En cada caso se puede encontrar fácilmente, utilizando álgebra lineal, un $w$ conjugando $f$ a la matriz de rotación habitual, una matriz como $\left( \begin{array}{cc} t & 0 \\\ 0 & t^{-1} \end{array} \right)$ o $\left( \begin{array}{cc} 1 & t \\\ 0 & 1 \end{array} \right)$ respectivamente.

De este modo se puede acceder fácilmente a la identidad. (En el caso elíptico, basta con llevar el ángulo a cero).

7voto

sickgemini Puntos 2001

La forma más elegante de interpolar sería probablemente $$f \exp(t \log(f^{-1} g)).$$

donde $\exp$ y $\log$ vienen dadas por sus expresiones en serie de potencias. Esto probablemente se puede simplificar mucho ya que sólo estamos tratando con $2 \times 2$ matrices; ¿alguien quiere intentarlo?

5voto

Herms Puntos 13069

Que se pueda interpolar se deduce del hecho de que esos mapas son elementos de $\mathrm{PGL}(\mathbb C,2)$ y este grupo está conectado.

5voto

Jake McGraw Puntos 16515

Sí, es fácil interpolar. Sea $r(z) = f^{-1}g(z) = \frac{r\_1z + r\_2}{r\_3z + r\_4}$ donde $r\_1r\_4 - r\_2r\_3 = 1$ . Diagonalizar la matriz (si es posible): $$R = \begin{bmatrix}r\_1 & r\_2 \\\\ r\_3 & r\_4\end{bmatrix} = V\begin{bmatrix}\lambda & 0 \\\\ 0 & \lambda^{-1}\end{bmatrix}V^{-1} = V\begin{bmatrix}e^{c} & 0 \\\\ 0 & e^{-c}\end{bmatrix}V^{-1}.$$ Sea $$S(t) = V\begin{bmatrix}e^{ct} & 0 \\\\ 0 & e^{-ct}\end{bmatrix}V^{-1} = \begin{bmatrix}s\_1(t) & s\_2(t) \\\\ s\_3(t) & s\_4(t)\end{bmatrix}$$ para $0 \leq t \leq 1$ (así $S(0) = I$ y $S(1) = R$ ), y que $$s(z,t) = \frac{s\_1(t)z + s\_2(t)}{s\_3(t)z + s\_4(t)}$$ (así $s(z,0) = z$ y $s(z,1) = r(z) = f^{-1}g(z)$ ) y, por último, defina $h(z,t) = f(s(z,t))$ Así que $h(z,0) = f(z)$ y $h(z,1) = f(f^{-1}g(z)) = g(z)$ . Parecen muchos pasos, pero conceptualmente es muy sencillo. Al postcomponer por la inversa de una de tus transformaciones, reduces efectivamente el problema al caso en que una transformación es la identidad. Entonces está claro cómo interpolar: incrustar la otra transformación en un subgrupo de un parámetro del grupo de isometría del plano hiperbólico, lo que la diagonalización facilita. (Ejercicio: demostrar que $s(s(z,t\_2),t\_1) = s(z,t\_1+t\_2)$ Así que $t\mapsto (z\mapsto s(z,t))$ es una incrustación de $\mathbb{R}$ en el grupo de las isometrías hiperbólicas (es decir, un subgrupo de un parámetro).

Si la matriz $R$ no es diagonalizable, entonces se puede repetir la construcción anterior utilizando en su lugar la forma canónica de Jordan:

$$R = V\begin{bmatrix}1 & 1 \\\\ 0 & 1\end{bmatrix}V^{-1},$$ y utilizar $$S(t) = V\begin{bmatrix}1 & t \\\\ 0 & 1\end{bmatrix}V^{-1}.$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X