Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





[AYUDA] Obtener angulo para que un objeto "mire" a

Iniciado por kittie4man, 16 de Julio de 2008, 06:03:00 PM

« anterior - próximo »

kittie4man

Hola a todos!!

Estoy teniendo problema con las matemáticas.
Tengo claro que tengo que usar seno y coseno pero no logro entender el algoritmo a aplicar para realizar lo que necesito.

Mi problema es sencillo.
Tengo un objeto que tiene que rotar ( glRotatef ) según la X e Y del mouse. Lo que no logro hacer es obtener el ángulo del mouse respecto al objeto.

Buscando por ahí encontré que se hace con la función atan2f. Yo lo tengo implementado así:
_angleMouse = atan2f( x - _x, y - _y )*180;
Esto hace que el objeto gire pero mirando hacia cualquier lado. No corresponde con la posición del mouse.

Lo que busco es obtener el ángulo según X e Y de origen (objeto a girar) y de destino (mouse).
Mi idea es entender esto y no solo solucionar mi problema actual.

Desde ya muchas gracias.

Salu2
Juan Pablo

[EX3]

A tu funcion le falta dividir por pi (3,141592) para obtener el resultado correcto, osease:
_angleMouse = atan2f( x - _x, y - _y )*180\pi;
Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

kittie4man

Cita de: "[EX3"]A tu funcion le falta dividir por pi (3,141592) para obtener el resultado correcto, osease:
_angleMouse = atan2f( x - _x, y - _y )*180\pi;
Salu2...

Gracias por responder.

El método que uso es así:
void cCharacter::rotate(float x, float y){
float xTmp = x-_x;
float yTmp = y-_y;

_angleView = atan2f( xTmp, yTmp )*180/M_PI;
}


Por parámetro le paso las coordenadas del mouse (x e y). _x e _y (con guión bajo delante) son las del objeto que debe mirar al mouse.
Con _angleView giro el objeto con el glRotatef( _angleView, 0.0, 0.0, 1.0 );.

Por algún motivo sigue girando mal, osea, no sigue al mouse con su rotación y no puedo encontrar el error.
Espero que puedas ayudarme.

Gracias
Salu2
Juan Pablo

[EX3]

Verifica de la funcion de calculo de angulo te devuelve el angulo correcto. Al menos asi la tengo yo en mi libreria y esta funciona correctamente. Si el error esta en la funcion de OpenGL ahi no se decirte por que no programo con esta api.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

kittie4man

Cita de: "[EX3"]Verifica de la funcion de calculo de angulo te devuelve el angulo correcto. Al menos asi la tengo yo en mi libreria y esta funciona correctamente. Si el error esta en la funcion de OpenGL ahi no se decirte por que no programo con esta api.

Salu2...

Ex3, muchas gracias.

El problema no estaba en la función que usaba para calcular el ángulo (o eso creo por el momento) sino en el manejo de la cámara y glLookAt.

La cámara es algo que nunca voy a poder dominar ya que hace tiempo que tengo problemas y no los puedo solucionar. Pensé que ya estaba solucionado lo de la cámara y glLookAt pero ahora veo que no estaban solucionados.

Nuevamente, muchas gracias por la respuesta.

Salu2
Juan Pablo

Buffon

hazte una miniaplicación que sólo haga eso y resuélvelo, debuggalo, etc.

kittie4man

Cita de: "Buffon"hazte una miniaplicación que sólo haga eso y resuélvelo, debuggalo, etc.

http://mail.google.com/mail/?ui=2&view=js&name=js&ver=80lCHVuPxfI&am=T_E4pcLnE08YZQ

Que es el link ese??
Parece ser un link a un mail de google. =S

Buffon

Cita de: "kittie4man"
Cita de: "Buffon"hazte una miniaplicación que sólo haga eso y resuélvelo, debuggalo, etc.

http://mail.google.com/mail/?ui=2&view=js&name=js&ver=80lCHVuPxfI&am=T_E4pcLnE08YZQ

Que es el link ese??
Parece ser un link a un mail de google. =S

imagínate si estaba dormido xD

http://betterexplained.com/articles/measure-any-distance-with-the-pythagorean-theorem/

kittie4man

Cita de: "Buffon"
Cita de: "kittie4man"
Cita de: "Buffon"hazte una miniaplicación que sólo haga eso y resuélvelo, debuggalo, etc.

http://mail.google.com/mail/?ui=2&view=js&name=js&ver=80lCHVuPxfI&am=T_E4pcLnE08YZQ

Que es el link ese??
Parece ser un link a un mail de google. =S

imagínate si estaba dormido xD

http://betterexplained.com/articles/measure-any-distance-with-the-pythagorean-theorem/

Jajaja, muchas gracias por el link, esta muy bueno por lo poco que vi.
Después lo vere con mas cuidado.

Salu2
Juan Pablo






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.