rotar la hélice usando las ecuaciones de rotación (Rz y Rx)

Entonces quiero rotar la hélice

{ X = porque ( t ) , y = t , z = pecado ( t ) ,
para que envuelva el suelo de un vector ( X , Y , Z ) T . Primero obtengo el theta por
θ = arcán ( Z Y )
Luego uso la ecuación de rotación alrededor de la X -eje.
R X = [ 1 0 0 0 porque ( θ ) pecado ( θ ) 0 pecado ( θ ) porque ( θ ) ]
y multiplicar
R 1 = R X ( porque ( t ) , t , pecado ( t ) ) T
Así que la rotación aquí se ve bien. Luego hago otra rotación alrededor del z -eje.
ϕ = 2 π arcán ( Z Y )
R z = [ 1 0 0 0 porque ( ϕ ) pecado ( ϕ ) 0 pecado ( ϕ ) porque ( ϕ ) ]
R z R 1
La rotación final está en el eje correcto, sin embargo, no envuelve el vector; está ligeramente desfasado cuando se representa gráficamente en un sistema de coordenadas 3D. Quería saber si estoy usando las ecuaciones correctamente o estoy tomando mal el ángulo de rotación. ¡Gracias!

También estoy usando el vector ( X , Y , Z ) T = ( 12 , 13 , 15 ) T .

Ejemplo: primera rotación

θ = arcán ( 15 13 ) = 0.85671

R X = [ 1 0 0 0 0.65493 0.75569 0 0.75569 0.65493 ]

R X h mi yo i X = [ C o s ( t ) 0.6549 t 0.7557 s i norte ( t ) 0.7557 t + 0.6549 s i norte ( t ) ]

segunda rotación

ϕ = arcán ( 12 13 ) = 0.74542

R z = [ 0.73480 0.67828 0 0.67828 0.73480 0 0 0 1 ]

R z ( R X h mi yo i X ) = [ 0.4442 t 0.5126 s i norte ( t ) + 0.7348 C o s ( t ) 0.4812 t 0.5553 s i norte ( t ) 0.6783 C o s ( t ) 0.7557 t + 0.6549 s i norte ( t ) ]

Gráfico: Como puedes ver en la imagen, la hélice no envuelve el vector después de hacer ambas rotaciones. ingrese la descripción de la imagen aquí

Como se describió, le queda un grado de libertad en la rotación que no está especificado: después de alinear los ejes de las hélices, aún puede aplicar una rotación arbitraria sobre el vector X , Y , Z . Aparte de eso, las dos matrices que tiene en su pregunta representan rotaciones sobre el X -eje.
Utilice MathJax para formatear sus expresiones matemáticas. Puede encontrar una referencia rápida aquí . En particular, use \langley \rangleen lugar de < y > para delimitar vectores.
@amd Haha Escribí incorrectamente.
Después de la primera rotación R X el eje de la hélice apunta en la dirección ( 0 , 13 , 15 ) . Así que después de una rotación sobre el z -eje apuntará en la dirección ( 13 pecado ϕ , 13 porque ϕ , 15 ) para algunos ϕ . No es bueno. No lo he probado, pero creo que la primera rotación debería hacer que apunte en la dirección de ( 0 , 12 2 + 13 2 , 15 ) en cambio. Luego una rotación sobre el z -eje por un ángulo apropiado ϕ trabajaría. De todos modos, como señaló amd, hay cierta ambigüedad (o un grado de libertad) en la respuesta.
Alternativamente, podría usar una rotación sobre el eje ( 0 , 15 , 13 ) como la segunda rotación, pero la fórmula para eso es un poco más complicada.
@JyrkiLahtonen si descubro el ángulo correcto para la rotación del eje z. ¿Es el grado de libertad una consecuencia cuando se usa este método de eje de rotación?
El grado de libertad proviene de nuestra habilidad para rotar la hélice sobre su eje.

Respuestas (1)

La idea de envolver una hélice dada alrededor de un vector dado es mapear el eje de la hélice dada en el vector dado. Una vez hecho esto, queda un grado de libertad para establecer la rotación de la hélice alrededor de su eje.

Para mapear el eje de la hélice (que sea v 0 = ( 0 , 1 , 0 ) T ) al vector dado (sea v 1 = ( X , Y , Z ) T ) una posibilidad es utilizar las siguientes dos rotaciones: la primera, R X , alrededor de X -eje que mapea v 0 al ángulo polar derecho y el segundo, R z , alrededor de z -eje que ajusta el ángulo azimutal (consulte, por ejemplo , el sistema de coordenadas esféricas de Wikipedia para obtener una introducción a los ángulos polares y azimutales).

la rotación R X describe una rotación en sentido antihorario alrededor X -eje (visto desde el punto ( 1 , 0 , 0 ) T ):

R X = [ 1 0 0 0 porque ( ϕ ) pecado ( ϕ ) 0 pecado ( ϕ ) porque ( ϕ ) ] ,
donde el ángulo ϕ es el ángulo polar dado por
ϕ = arcsen ( Z X 2 + Y 2 + Z 2 ) .
la rotación R z describe una rotación en sentido antihorario alrededor z -eje (visto desde el punto ( 0 , 0 , 1 ) T ):
R z = [ porque ( θ ) pecado ( θ ) 0 pecado ( θ ) porque ( θ ) 0 0 0 1 ] ,
donde el ángulo θ es el ángulo acimutal dado por
θ = arcsen ( X X 2 + Y 2 ) .

Deberíamos tener, en este punto, que R z ( R X ( v 0 ) ) = v 1 , es decir , el eje de la hélice original debería haber sido mapeado en v 1 , y como consecuencia, la nueva hélice debería envolverse alrededor del eje dado.

¡Gracias! sin embargo, cuando se usa esto, la hélice no se envuelve alrededor del vector, todavía hay cierta distancia entre ellos. ¿Es esto solo un efecto cuando se usa esta ecuación? O hay otra manera de hacer esto.
Suponiendo que las dos rotaciones se realizaron correctamente, la hélice debería envolverse alrededor del vector ( X , Y , Z ) T . De hecho, las dos rotaciones transforman rígidamente el espacio R 3 mapeando el antiguo eje helicoidal ( 0 , 1 , 0 ) T al nuevo eje helicoidal ( X , Y , Z ) T . Como sugirió @amd en los comentarios a su pregunta, todavía hay un grado de libertad que determina la rotación de la hélice alrededor del eje. ( X , Y , Z ) T . Si pudiera publicar una imagen del resultado que obtiene, podríamos tratar de explicar más en detalle el "efecto" que ve ...
Hola, publiqué una imagen y el resultado que estaba obteniendo al conectar theta y phi.
No estoy seguro de tu elección de θ o ϕ . Ver mi comentario en main. El punto principal es que la segunda rotación no cambia el ángulo entre el eje de la hélice y el z -eje. La primera rotación debe ajustar eso a un valor correcto.
@JyrkiLahtonen Creo que tienes razón. Reescribí mi respuesta.
Probé theta y phi, sin embargo, la hélice no se envuelve alrededor del vector. ¿Es el grado de libertad solo un efecto que ocurre al aplicar el método de rotación?
@Cass.12 Olvidé el término Z 2 en el ángulo acimutal. Ahora debería funcionar. La presencia de grado de libertad significa que una vez que haya mapeado v 0 sobre v 1 , la hélice puede girar libremente alrededor de su eje v 1 , sin dejar de ser una solución a su problema.
¡Gracias! ¡funcionó! solo era cuestión de obtener los ángulos correctos