6 votos

Orientación de rotación 3D

Mi problema consiste en encontrar una fórmula para esto:

Te dan una recta que pasa por el origen en el espacio 3D (más específicamente, un punto en la línea). Entonces, se le da un punto y un ángulo. La tarea es encontrar el punto donde el punto termina después de una rotación en sentido antihorario alrededor de la línea por el ángulo.

Me las arreglé para hacer esto por reformular el problema como una intersección de tres esferas, pero tengo dos resultados: uno a la derecha y uno a la izquierda.

En este momento no tengo idea de cómo averiguar cual es cual, porque "la izquierda" no es suficiente definición. Usted debe saber la manera en la que la línea está orientada.

Hay una manera de elegir entre los dos puntos de destino tal que la rotación de los objetos (tales como un cubo, dado sus vértices) no se deforme (debido a que los puntos girar en diferentes direcciones)?

3voto

Nominal Animal Puntos 23

Digamos que la línea pasa a través del origen $(0,0,0)$ y punto de $\vec{\ell} =(x_\ell , y_\ell, z_\ell)$, el punto de girar es $(x, y, z)$.

La línea que representa el eje de rotación. Calcular la unidad de eje de rotación $\hat{a} = ( x_a , y_a , z_a )$: $$\bbox{ \hat{a} = \frac{\vec{\ell}}{\left\lVert\vec{\ell}\right\rVert} = \left( \frac{x_\ell}{\sqrt{x_\ell^2 + y_\ell^2 + z_\ell^2}} , \frac{y_\ell}{\sqrt{x_\ell^2 + y_\ell^2 + z_\ell^2}} , \frac{z_\ell}{\sqrt{x_\ell^2 + y_\ell^2 + z_\ell^2}} \right ) }$$

Para girar el punto de $\vec{p}$ por el ángulo de $\theta$ alrededor de la unidad eje vector de $\hat{a}$, podemos utilizar Rodrigues' rotación de la fórmula: $$\bbox[#ffffef, 1em]{ \vec{p}^\prime = \vec{p} \cos\theta + (\hat{a} \times \vec{p}) \sin\theta + \hat{a} ( \hat{a} \cdot \vec{p} ) (1 - \cos \theta) }$$ donde $\vec{p}^\prime$ es la ubicación de la punta después de la rotación.

Si el $\hat{a}(\hat{a}\cdot\vec{p})(1 - \cos\theta)$ lanza fuera, tenga en cuenta que el primer término, $\hat{a}$, es un vector, pero tanto el segundo y tercer términos son reales.

En caso de que haya olvidado, por $\vec{a} = ( x_a , y_a , z_a )$ e $\vec{b} = ( x_b , y_b , z_b )$, e $c$ real, $$\begin{array}{l|l} \; & c \vec{a} = ( c x_a , c y_a , c z_a ) \\ \hline \; & \vec{a} + \vec{b} = ( x_a + x_b , y_a + y_b , z_a + z_b ) \\ \hline \text{Dot product} & \vec{a} \cdot \vec{b} = x_a x_b + y_a y_b + z_a z_b \\ \hline \text{Cross product} & \vec{a} \times \vec{b} = ( y_a z_b - z_a y_b , z_a x_b - x_a z_b , x_a y_b - y_a x_b ) \\ \hline \text{Euclidean length or %#%#%-norm} & \left\lVert \vec{a} \right\rVert = \sqrt{ \vec{a} \cdot \vec{a} } = \sqrt{ x_a^2 + y_a^2 + z_a^2 } \\ \end{array}$$

1voto

lightxbulb Puntos 464

Deje $p$ ser el primer punto de la mentira en la línea que pasa por el origen. Puesto que la línea pasa a través del origen $0$ también se encuentra en ella. Podemos formar el vector unitario $\frac{p-0}{||p-0||_2} = \hat{p}$, este será nuestro eje de rotación. Deje que el punto que desea rotar alrededor del eje que ser $v$. Después de que encontrar el eje ángulo de rotación de la matriz $M(\hat{p},\theta)$ (https://en.wikipedia.org/wiki/Rotation_matrix#Axis_and_angle) y girar el punto es $v' = Mv$.

1voto

Segoro Puntos 1

Usted golpea el clavo en la cabeza!

En este momento no tengo idea de cómo averiguar cual es cual, porque "la izquierda" no es suficiente definición. Usted debe saber la manera en la que la línea está orientada.

A menos que el problema se especifica más, no hay realmente una solución. Usted siempre puede tratar de encontrar experimentalmente, por la simple elección de un esquema de derivar a la dirección de cada línea (eje de rotación).

Algunos de los posibles esquemas son:

  1. Se supone que cada línea está orientada hacia el origen.
  2. Se supone que cada línea está orientada a la distancia desde el origen.
  3. Se supone que cada línea está orientada hacia positivo $x$. (Si ortogonal a la $x$-eje, intente $y$, a continuación, $z$.)

(Ya que usted dijo que usted tiene líneas representada por un punto, estoy asumiendo que usted nunca va a encontrar un punto en el origen, ya que este no especifica una línea.)

Independientemente de la elección, los objetos de girar alrededor de una línea en particular, no se deforma, porque la misma suposición se utiliza en la rotación de cada vértice. Esto resuelve el problema, excepto por la mención de "la izquierda".

Ahora, si todas las opciones de trabajo para usted, ¡genial! Pero lo más probable es que usted encontrará que sólo una de las opciones 1 y 2 conducir a un resultado satisfactorio. Además de tener una solución, entonces también sabemos que la falta de información en el problema original - el significado de "izquierda" en este contexto.

0voto

Hay una manera de elegir entre los dos puntos de destino, tales que rotación de objetos (tales como un cubo, dado sus vértices) no se deforme (debido a que los puntos girar en diferentes direcciones)?

La respuesta depende; la elección de la "puntos de destino" tiene que ser continuo en el espacio de líneas y ángulos? O tiene que ser continua para cada línea?

En el último caso, la respuesta es trivialmente sí: sólo tiene que elegir una orientación. Pero en el primer caso, creo que la respuesta es no, porque una elección continua de la orientación en el espacio de las líneas de $\mathbb{P^2(R)}$ equivale a una sección global de la cobertura de mapa de $\pi: S^2\to\mathbb{P^2(R)}$, lo que sucede que no existe.

También está el hecho de que $\mathbb{P^2(R)}$ es no orientable, pero siendo un principiante en la geometría diferencial/topología, no estoy seguro de si el problema puede ser caracterizada en términos de que.

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