2011-07-06 15 views
7

Digamos que tengo un punto A en un espacio 3D y quiero moverlo con un movimiento circular uniforme alrededor del vector unitario n.Buscar una posición de un punto en el espacio 3D moviéndose alrededor de un vector con movimiento circular uniforme

así que sé el vector de posición de A, O y la unidad de vector n (normal al plano donde O, A y B reside), y sé que el ángulo AOB.

¿Cuál es la forma más rápida de encontrar la posición de B?

+0

+1 para la imagen bonita sola :-) – Damon

Respuesta

4

¿Qué tal si aplica el rotation matrix about an axis and angle?

+0

¿Cómo se traduciría si el origen está fuera del plano? – St0rM

+0

@ St0rM: No estoy seguro de a qué se refiere. Su imagen sugiere que 'n' está anclado en el mismo origen que' A' ... ¿Tal vez podría actualizar su pregunta? – Nemo

+0

Quiero decir que el espacio en el que el círculo (y el plano en el que reside) NO tiene el origen en el punto O. El punto O podría estar en todas partes, y el plano podría ser oblicuo de cualquier manera. ¿Funcionaría ese sistema de todos modos? – St0rM

2

En MathSpeak, eso sería OB = OA * cos (theta) + (OAxn) * sen (theta)

+0

+1, pero eso debería ser '-', no' + '(o hacerlo' (nxOA) '.) – Beta

1

Es probable que desee utilizar Rodrigues' rotation formula. Es adecuado para su problema muy limitado (¿movimiento corporal rígido?). Probablemente no necesite más métodos generales, sino también más complicados.

1

Para responder a la pregunta un poco más general de que su comentario a Nemo plantea, voy a suponer que usted tiene puntos globales Un y O y que tiene un vector unitario N y el ángulo Φ y usted quiere B. Así es como lo haría. Primero encuentre la proyección de OA en N (anclado en O). Luego encuentre O ', que es el punto por el que estará girando. Luego use las ecuaciones dadas por Jack V:

O' = O + dotP((A-O),N)N 
B = O' + cos(Φ)(A-O') + sin(Φ)crossP(N,A-O') 

Donde dotP y crossP son puntos y productos cruzados.

Cuestiones relacionadas