Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cambio de sistema de referencia para un vector

Iniciado por CoLSoN2, 18 de Diciembre de 2002, 04:29:47 PM

« anterior - próximo »

CoLSoN2

                                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?                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

Forum Master

                                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                                
tratos

Haddd

                                Lo haces bien. Quizás tu problema esté en la matriz.                                

CordayUK

                                estas utilizando valores dentro de la matriz mundo o de la matriz vista ???                                

CoLSoN2

                                nada nada, ya está arreglado, thx a todos =)                                
Manuel F. Lara
Descargar juegos indie  - blog sobre juegos indie y casual
El Desarrollo Personal.com  - blog sobre productividad, motivación y espíritu emprendedor

ethernet

Podrias decir como lo has hecho para futuros problemas similares ;DDDD

saludos

ElQueSeRompeElOrto

                                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.                                






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.