2011-12-22 14 views
7

Tengo un Quaternion que representa la rotación de un brazo superior de caracteres 3D. También tengo una línea que se supone que representa la nueva posición del brazo de esos personajes. La posición de las líneas está dada por dos puntos 3D.¿Vector de dirección de Quaternion?

Este es el único dato que tengo, e intento llamar a un método en un paquete 3D (Digital Rune) que toma 2 vectores de dirección y devuelve el Quaternion que representa la rotación necesaria para mover el brazo a la nueva posición.

El problema es que veo un comportamiento extraño, como si los ejes estuvieran mezclados y, en general, no se comporta. Además, el objeto Quaternion (que proviene del paquete 3D) que representa el brazo de los hombres 3D tiene W, X, Y y Z. ¿Representan X, Y y Z el vector de dirección? Porque eso es lo que necesito para llamar a la función correctamente. He estado usando esto junto con mi vector de dirección calculado desde los puntos finales de mi línea, pero como dije, parece gracioso.

Si las X, Y y Z no son un vector de dirección, ¿cómo convertir un Quaternion a dos extremos para poder calcular el vector de dirección?

+2

esto puede ser útil http://stackoverflow.com/q/1171849/10468 y este http://stackoverflow.com/q/2646121/10468 – DarenW

Respuesta

7

En su contexto (y en la mayoría de los contextos de gráficos por computadora), un quaternion is used to represent a rotation. No quiere usar X, Y y Z directamente; en su lugar (como se describe en el tutorial vinculado anteriormente), lo usa para generar un rotation matrix. Luego debe usar la matriz de rotación como cualquier otra 3D transformation matrix; rotará puntos alrededor del origen como se describe en el cuaternario de donde proviene.

Las X, Y y Z del cuaternión representan el eje de la rotación, pero el cuaternión también codifica la magnitud de la rotación, de una manera no particularmente directa. Si su paquete incluye funciones que devuelven un cuaternión, también debe incluir funciones que conviertan sus cuaterniones en matrices de rotación; debe usar la función empaquetada si es posible (porque debe estar usando las mismas convenciones que el método que las produjo).

Después de leer en cuaterniones y matrices de transformación, debe volver a leer la documentación de la función en cuestión, para asegurarse de que está proporcionando los tipos correctos de argumentos, y para asegurarse de que está utilizando los resultados en de la manera correcta (es bastante fácil arruinarlo, incluso cuando está familiarizado con las matemáticas ...).

Cuestiones relacionadas