Hola buenas. Tengo una consulta, ¿cómo puedo invertir la fórmula: X = Xo + cos(ángulo) * radio para calcular el ángulo teniendo dos puntos?
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.
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".
[gml]X = Xo + cos(angulo+pi) * radio[/gml]
A partir de GMS, se creó la función "dcos" para colocar los ángulos en grados.
[gml]X = Xo + dcos(angulo+180) * radio[/gml]
Saludos
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°
Hola FernandoNavarro
Te recomiendo usar la función:
[gml]direction = point_direction(x,y,objEnemy.x,objEnemy.y)[/gml]
Que toma el ángulo que se forma entre 2 puntos y luego se lo asigna a la variable "direction".
Saludos