Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Significado de los elementos en la Matriz

Iniciado por PIM, 06 de Marzo de 2013, 11:33:29 PM

« anterior - próximo »

PIM

Hola de nuevo amigos de esta inmejorable web. De nuevo molestándolos con una duda, ¿Cuál es el significado de cada elemento en la matriz? Me explico, en todos lados aparece algo como esto:

a1  a5  a9    a13
a2  a6  a10  a14
a3  a7  a11  a15
a4  a8  a12  a16

a13, a14 y a15 establecen la posición del objeto es decir que a13 sería = X, a14 = Y a15 = Z ¿Correcto?

Pero ¿qué son a1, a2, a3, a5, a6, a7, a9, a10 y a11? ¿Qué significa cada uno ellos?, He leido que establecen la orientación del objeto (es decir hacia a donde miran) pero no entiendo del todo qué significan.

Ahora, todavía tengo más dudas al ver que para la escala de un objeto se usan a1, a6 y a11, algo así como  a1 = escX, a6 = escY y a11 = escZ. pero ¿Qué no eran de orientación?

Bueno ojalá me puedan ayudar.

Muchas gracias.
^_^'

julen26

No estoy seguro, pero diría que las 3 primeras columnas son vectores se suelen utilizar para determinar el sistema de referencia (que marcan la dirección, escala...). Y el último vector para la posición (desplazamiento).
La última linea no recuerdo bien si era un extra para diferenciar putos y vectores, no estoy muy familiarizado con ello.

XÑA

RotaX.x RotaY.x RotaZ.x 1
RotaX.y RotaY.y RotaZ.y 1
RotaX.z RotaY.z RotaZ.z 1
x              y             z       1

Esto es para  directX, tienes que transponer tu matriz.

La escala se hace además con la diagonal principal:

ScaleX
            ScaleY
                          ScaleZ

PIM

Ah, creo que ya entendí. Muchas gracias.

Ahora tengo una duda más, tengo la siguiente matriz de rotación:

1.0       0.0        0.0        2.07814
0.0      -0.809017   0.587785   0.0
0.0      -0.587785  -0.809017   0.0
0.0       0.0        0.0        1.0


Alguien sería tan amable de decirme ¿cómo extraigo el ańgulo de rotación de esta matriz?

Muchas gracias.
;)


PIM

Ejem, gracias pero lo que veo es que ahí se construye una matriz de rotación a partir de un ángulo. Pero yo quiero saber lo opuesto, dada una matriz, saber  su angulo de rotación.

Muchas gracias.
^_^'

Manu343726

Si es sólo una matriz de rotación, y sabes que tipo de rotación es (eje x,y,o z) simplemente haciendo el arco seno u arco coseno del elemento correspondiente te debería salir (ojo con los signos). Si esa matriz de rotación la has obtenido a partir de un cuaternion, sacas el cuaternion a partir de la matriz de rotación, y sacas el ángulo de este.


PIM

Muchas gracias por tu respuesta. Sí, ya lo encontré.  :)

Aprovechando su conocimiento y su buena disponibilidad, me gustaría saber solo algo más. Teniendo la siguiente matriz:
           1.0        0.0        0.0        0.0
           0.0        1.0        0.0        0.0
           0.0        0.0        1.0        0.0
           0.0        0.0        0.0        1.0


¿Cómo hago para rotar 20 grados en el eje X, -128 grados en el eje Y y 71.2 grados en el eje Z?. Es decir como plasmo es esta matriz esas rotaciones simultaneas en sus respectivos ejes.


De nuevo muchas gracias.
^_^'

blau

#8
Supongo que no estaras con Xna... pero supongo que si estas usando alguna libreria para las matrices habra algun metodo parecido...

     Matrix transform;
     transform.Decompose(out scale, out rotation, out translation);

PIM

Muchas gracias a todos por su ayuda. Por fin resolví mi problema.

:) :) :D :D ;)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.