Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: FernandoNavarro en Marzo 26, 2020, 06:02:01 am

Título: Calcular ángulo según la posición
Publicado por: FernandoNavarro en Marzo 26, 2020, 06:02:01 am
Hola buenas. Tengo una consulta, ¿cómo puedo invertir la fórmula: X = Xo + cos(ángulo) * radio para calcular el ángulo teniendo dos puntos?
Título: Re:Calcular ángulo según la posición
Publicado por: kostra en Marzo 26, 2020, 06:14:55 pm
si te refieres a saber hacia qué dirección mira un punto cuando está mirando a otro, prueba point_direction(x1,y1,x2,y2)

sino, almenos especifica qué es X y qué es Xo ángulo de quién y radio de qué?, pues la fórmula se traduciría exactamente igual, con la misma sintaxis.
Título: Re:Calcular ángulo según la posición
Publicado por: BssString en Marzo 28, 2020, 01:25:22 am
Hola FernandoNavarro

Al ángulo súmale 180 grados y ya inviertes la dirección.

En radianos usando la función "cos" sería multiplicar por la constante "pi".
X = Xo + cos(angulo+pi) * radio

A partir de GMS, se creó la función "dcos" para colocar los ángulos en grados.
X = Xo + dcos(angulo+180) * radio

Saludos
Título: Re:Calcular ángulo según la posición
Publicado por: FernandoNavarro en Marzo 28, 2020, 05:27:47 am
Hola, gracias a ambos. La fórmula que puse es una que había usado una vez pasada para que un objeto orbitara alrededor de otro.

Para ponerlos en contexto, estaba jugando Warcraft III y se me vino a la mente cómo hacer una torre de vigilancia. Entonces me puse a calcular ángulos en función de la posición del objeto al que la torre deba lanzar el proyectil. Hice algo así, luego lo optimizo:

Tengo tres variables que son de referencia para un triángulo.

Ax = x;
Ay = y;
Cx = objEnemy.x;
Cy = objEnemy.y;
AB = abs(Ax - Cx);
BC = abs(Ay - Cy);
Hyp = sqrt(power(AB, 2) + power(BC, 2);
Angle = arcsin(BC/Hyp);

¿Me podrían dar una ayuda con lo del ángulo? Hasta ahora va bien, pero algo me falta porque llega a 90° y comienza a bajar nuevamente el valor del ángulo, la idea sería que pueda calcular los 360°
Título: Re:Calcular ángulo según la posición
Publicado por: BssString en Marzo 28, 2020, 06:03:41 am
Hola FernandoNavarro

Te recomiendo usar la función:
direction = point_direction(x,y,objEnemy.x,objEnemy.y)
Que toma el ángulo que se forma entre 2 puntos y luego se lo asigna a la variable "direction".

Saludos