2011-03-29 16 views
5

Estoy tratando de averiguar cómo funcionan exactamente getRotationMatrix() y getOrientation().Android SensorManager.java getOrientation y getRotationMatrix algoritmo

Hasta ahora he sabido que en la función getRotationMatrix() se cruza el vector gravitatorio con el vector magnético para obtener el nuevo vector apuntando hacia el este. Y luego, cruza de nuevo el vector Este con el vector de gravedad nuevamente para que el vector apunte hacia el norte magnético. De acuerdo con esto article dijo, ahora tenemos tres vectores ortogonales y podemos formar una matriz de rotación.

Aquí está mi primera pregunta: ¿Por qué deberíamos cruzar el vector Este con el vector de gravedad de nuevo para obtener un vector que señala el norte magnético? ¿No es el vector magnético original que señala el norte magnético? ¿Cuál es la diferencia entre el nuevo vector y el vector magnético original?

Hablando del getOrientation(), aquí está mi segunda pregunta: ¿cómo salen el azimut, el balanceo y el tono? ¿Hay alguna ecuación o fórmula para la explicación?

se puede ir a este website para ver el código

muy apreciado por su atención. ¡Muchas gracias!

+2

muy buena pregunta! –

Respuesta

1

Primera respuesta: El vector magnético señala (magnético) hacia el norte y quizás también hacia arriba o hacia abajo. El objetivo del segundo producto cruzado es obtener un vector en el plano horizontal, señalando el Norte (magnético).

Segunda respuesta: De acuerdo con ese código, el paso del rollo y el azimut se calculan a partir de elementos de la matriz de rotación, que a su vez se derivan de los componentes de los tres vectores espaciales. De un vistazo,

tan (azimut) = M Y/h Y
pecado (tono) = -A Y
tan (rollo) = -A z/A x

(Si eso es suficiente respuesta depende de qué tan cómodo se siente con la trigonometría y la visualización de las rotaciones en el espacio de 3 dimensiones.)

+0

Estimado Beta: Gracias por su respuesta, lamento no haber dejado en claro mi segunda pregunta. Sé que los tres ángulos provienen de la matriz de rotación, pero ¿POR QUÉ se ven así? deben derivarse de algún lugar. Quiero saber el principio o la fórmula detrás de estas ecuaciones. ¡¡Gracias!! – stevensyy

Cuestiones relacionadas