Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: CoLSoN2 en 18 de Diciembre de 2002, 04:29:47 PM

Título: Cambio de sistema de referencia para un vector
Publicado por: CoLSoN2 en 18 de Diciembre de 2002, 04:29:47 PM
                                veamos, tengo un vertice v(0,0,1) que es la dirección en la que mira una nave, esto referente al origen; pero quiero que si aplico una rotación en X,Y y/o Z saber las nuevas coordenadas del vector director, para pásárselas a los disparos que esta suelte.
Ahora mismo uso D3DXVec3Transform(&vec4,&v,&matrizRotacionDeLaNave); pero que va, salen cosas más raras...

alguien sabe como se haría?                                
Título: Cambio de sistema de referencia para un vector
Publicado por: Forum Master en 18 de Diciembre de 2002, 04:45:37 PM
                                Por lo que dices... tu simplemente necesitas la aplicacion adjunta (f tilda la llamamos) de una aplicacion afin que sea una rotacion....

Eso en matematicas (es lo que yo hago no programacion xD) seria una simple multiplicacion del vector director original por una matriz... en funcion de un angulo.

Si quieres te lo miro y te lo explico mejor pero creo que seguramente alguna manera menos artesanal de hacerlo habra xD                                
Título: Cambio de sistema de referencia para un vector
Publicado por: Haddd en 18 de Diciembre de 2002, 05:03:39 PM
                                Lo haces bien. Quizás tu problema esté en la matriz.                                
Título: Cambio de sistema de referencia para un vector
Publicado por: CordayUK en 18 de Diciembre de 2002, 06:33:54 PM
                                estas utilizando valores dentro de la matriz mundo o de la matriz vista ???                                
Título: Cambio de sistema de referencia para un vector
Publicado por: CoLSoN2 en 18 de Diciembre de 2002, 07:20:35 PM
                                nada nada, ya está arreglado, thx a todos =)                                
Título: Cambio de sistema de referencia para un vector
Publicado por: ethernet en 18 de Diciembre de 2002, 07:26:50 PM
Podrias decir como lo has hecho para futuros problemas similares ;DDDD

saludos
Título: Cambio de sistema de referencia para un vector
Publicado por: ElQueSeRompeElOrto en 20 de Diciembre de 2002, 04:13:48 AM
                                Te doy un consejo : Ni siquiera hace falta que rotes un vector v(0,0,1)
con la matriz de tu objeto ,ya que podes sacar los vectores de referencia del objeto de la misma matriz ,Osea:

vecRight.x = MatrizObjeto._11;
vecRight.y = MatrizObjeto._12;
vecRight.z = MatrizObjeto._13;

vecUp.x = MatrizObjeto._21;
vecUp.y = MatrizObjeto._22;
vecUp.z = MatrizObjeto._23;

vecLook.x = MatrizObjeto._31;
vecLook.y = MatrizObjeto._32;
vecLook.z = MatrizObjeto._33;

vecPosicion.x = MatrizObjeto._41;
vecPosicion.y = MatrizObjeto._42;
vecPosicion.z = MatrizObjeto._43;


El vector "veclLook" es el que apunta hacia adelante ,y es el que usarias para darle la direccion al lasser o misil de la nave.

Conclusion: estos vectores son ni mas ni menos que los ejes del sistema local del objeto definida por la matriz de transformacion ,otra cosa si queres construir la matriz vista a partir de la de transformacion solo tenes
que transponer la matriz y guala!

ha ..me olvidava , y lo que haces mal con:
"D3DXVec3Transform(&vec4,&v,&matrizRotacionDeLaNave); "
es que la matriz en sus elementos "._41 ._42 ,._43" tienen que estar a cero ,es decir no tiene que tener traslacion , pero igual extrae el vector que queres como te lo ilustre arriba.

Un Saludo.