Rotación de un sistema de referencia en un vector

Suponga que tiene un vector X = ( pecado ( ϑ ) porque ( φ ) , pecado ( ϑ ) pecado ( φ ) , porque ( ϑ ) ) dado en coordenadas esféricas en un Sistema de referencia "R". Quiero rotar el sistema de referencia para que sean puntos de dirección z a lo largo X . Todo lo que tengo que hacer es una primera rotación sobre el eje z con el ángulo φ y luego una rotación sobre el nuevo eje y con el ángulo ϑ . Los ángulos de Eulers podrían hacer el trabajo ( mira aquí, alemán ). Así que defino mi matriz de transformación así, excepto que en las matrices de rotación básicas cada pecado tiene que ser cambiado a pecado (ya que estoy girando el sistema de referencia y no el vector). La matriz resultante es (dado que no giro de nuevo sobre el nuevo eje z, puedo establecer el último ángulo en cero):

METRO = ( porque ( ϑ ) porque ( φ ) pecado ( φ ) pecado ( ϑ ) porque ( φ ) porque ( ϑ ) pecado ( φ ) porque ( φ ) pecado ( ϑ ) pecado ( φ ) pecado ( ϑ ) 0 porque ( ϑ ) )

Entonces, si quiero saber las coordenadas de un vector y en el nuevo sistema de coordenadas R' necesito calcular y = METRO y . Ahora quiero hacer algunas pruebas. Primero, ¿qué es mi z el antiguo vector unitario en el nuevo sistema de coordenadas.

mi z = ( pecado ( ϑ ) porque ( φ ) , pecado ( ϑ ) pecado ( φ ) , porque ( ϑ ) ) = X ( X , ϑ , φ ) / X

cual es correcta. pero si calculo METRO X debería rendir ( 0 , 0 , 1 ) , que no lo hace. ¿Qué estoy haciendo mal?

Respuestas (2)

Así es como lo configuraría, en 3 pasos: primer paso, gire el sistema de coordenadas sobre el eje z (como sugirió) por ϕ , de modo que se encuentra en el plano xz (es decir, su componente y es 0). Esto se hace rotando las coordenadas por

METRO 1 = ( C o s ( ϕ ) s i norte ( ϕ ) 0 s i norte ( ϕ ) C o s ( ϕ ) 0 0 0 1 )

¿Cómo supe que el signo menos va ahí? Bien, i ^ mapas a j ^ , y j ^ mapas a + i ^ (trate de pensar en ello conceptualmente, si ϕ eran π 2 ).

Comprueba eso ( METRO 1 X ) (que llamaré X ) tiene un j ^ componente de 0.

yo obtengo X = s i norte ( θ ) i ^ + C o s ( θ ) k ^

Ahora, giremos nuestras coordenadas sobre el eje y para que el eje z se alinee con X . De nuevo, k ^ mapas a i ^ , y i ^ mapas a + k ^ .

METRO 2 = ( C o s ( θ ) 0 s i norte ( θ ) 0 1 0 s i norte ( θ ) 0 C o s ( θ ) )

Ahora, para hacer nuestras rotaciones, necesitamos k ^ = X = METRO 2 X = METRO 2 ( METRO 1 X ) = ( METRO 2 METRO 1 ) X = METRO X

entonces METRO = METRO 2 METRO 1 = ( C o s ( θ ) C o s ( ϕ ) C o s ( θ ) s i norte ( ϕ ) s i norte ( θ ) s i norte ( ϕ ) C o s ( ϕ ) 0 s i norte ( θ ) C o s ( ϕ ) s i norte ( θ ) s i norte ( ϕ ) C o s ( θ ) )

Conectando esto a nuestro original X , parece que esto funciona.

¡Muchas gracias! Intenté exactamente lo mismo (mismas matrices) pero me di cuenta de que las tenía en orden inverso (porque leí que eso es lo que tienes que hacer cuando usas ese formalismo de Euler).
¡Ay! Sí, he estado allí, cuando estaba aprendiendo estas cosas.

Escribiste una matriz que mapea ( 0 , 0 , 1 ) a X . Esa es la inversa de la matriz que mapea X a ( 0 , 0 , 1 ) .

Editar: es posible que no lo haya entendido bien, así que analicémoslo.

Quiere definir un conjunto de ejes cartesianos mi i tal que X = mi z . Sabes X = X i mi i en una base antigua desde la que estás rotando. Las bases están relacionadas por un operador de rotación. R _ ( mi i ) = mi i .

Entonces, echemos un vistazo a los componentes de mi z en la nueva base. queremos evaluar mi z mi j = mi z R _ ( mi j ) = R _ 1 ( mi z ) mi j . Esto significa que para encontrar los componentes de mi z sobre la nueva base, puede girarlo inversamente de manera equivalente y encontrar los componentes sobre la base anterior. Pero R _ 1 ( mi z ) X --imagina esto si no sigues. Que obtuviste el resultado erróneo de que eran iguales me dice que tu matriz no es correcta. No es lo que pensabas que era; probablemente suponga que desea rotar vectores y no los ejes o alguna otra desconexión sutil similar.

Editar editar: en realidad, no estoy seguro de entender lo que dices que encontraste mi z estar en la nueva base. La notación no tiene sentido.

Tercera edición : veamos un cálculo completo del operador de rotación. Hacer esto con dos rotaciones encadenadas es algo oneroso, aunque sencillo. Usaré cuaterniones (espinores, rotores) en un álgebra geométrica (clifford).

La idea aquí es simple: cualquier rotación se puede descomponer en una acción de doble cara de un espinor.

R _ ( a ) = ψ a ψ 1

donde los productos aquí son productos clifford. el espinor ψ se forma como exponencial de un bivector. Dados dos vectores ortonormales tu , v que abarcan el plano de rotación, el espinor que gira un ángulo θ es ψ = Exp ( tu v θ / 2 ) .

Primero, encontramos el vector que se encuentra en el plano X mi z que es ortonormal a mi z . La expresión es bastante simple:

ρ = ( X mi z ) mi z = ( pecado θ porque ϕ mi X z + pecado θ pecado ϕ mi y z ) mi z = ( pecado θ porque ϕ mi X + pecado θ pecado ϕ mi y )

Exactamente como cabría esperar. Este vector tiene magnitud pecado θ , por lo que el vector normalizado es

ρ ^ = mi X porque ϕ + mi y pecado ϕ

Como hemos descompuesto el problema en coordenadas esféricas, conocemos el ángulo entre X y mi z es θ . Entonces podemos escribir el espinor como

ψ = Exp ( ρ ^ mi z θ / 2 ) = porque θ 2 ρ ^ mi z pecado θ 2

Con ρ ^ mi z = mi X z porque ϕ + mi y z pecado ϕ . Ahora pasemos a evaluar los componentes del operador.

R _ ( mi X ) = ( porque θ 2 ρ ^ mi z pecado θ 2 ) mi X ( porque θ 2 + ρ ^ mi z pecado θ 2 ) = mi X porque 2 θ 2 + mi z pecado θ porque ϕ pecado 2 θ 2 ( mi X porque 2 ϕ + mi y pecado 2 ϕ )

Los otros vectores base se asignan a

R _ ( mi y ) = mi y porque 2 θ 2 + mi z pecado θ pecado ϕ + pecado 2 θ 2 ( mi y porque 2 ϕ mi X pecado 2 ϕ ) R _ ( mi z ) = mi z porque θ ( mi X porque ϕ + mi y pecado ϕ ) pecado θ

Verificar que esto sea correcto para el vector completo es un poco complicado, pero he verificado algunos límites importantes ( ϕ = 0 , π / 2 ) y el comportamiento parece verificarse.

No estoy seguro de que estés en lo cierto. El inverso debe mapear (0, 0, 1) a su vector original; lo asigna a x⃗ =(-sin(ϑ)cos(φ),sin(ϑ)sin(φ),cos(ϑ)) (nota el seno menos en el i dirección)
Mmm, eso es posible. Originalmente lo leí como una transformación activa, pero es posible que se refiriera a una transformación pasiva. Supongo que eso es probable, en realidad. Sin embargo, si ese es el caso, entonces el antiguo vector z mi z no debe evaluar a X a mi a ( mi a siendo la nueva base).
No estoy seguro de qué es una transformación activa o pasiva, pero ni M ni sus mapas inversos X a ( 0 , 0 , 1 ) .
¿Puedes aclarar lo que encontraste? mi z estar en la nueva base? Honestamente, probablemente también podría realizar la rotación de tal manera que, en lugar de mover los ejes, X se mueve al eje z en su lugar. Esto podría permitirle usar referencias asumiendo ese tipo de rotación.
@thatnerd: Entonces, ¿cómo giro correctamente mi sistema de referencia? La descripción de la matriz que uso es exactamente lo que quiero hacer, así que pensé que era la correcta. ¿Por qué evaluamos mi z mi j ? También noté que rotar solo un eje funciona perfecto. Rotar ambos da errores.
@Muphrid: quiero decir, ¿qué coordenadas tiene el original? mi z = ( 0 , 0 , 1 ) vector tienen en el sistema de coordenadas rotadas. debe ser el de X pero con ángulos negativos.