PDA

Ver la Versión Completa : Ángulo entre dos puntos


kotai
02-10-2008, 17:24:11
Hola a todos

Necesito calcular el ángulo [0º..360º[ entre dos puntos (x1,y1) y (x2,y2) (el ángulo que tendría una recta que uniera a los dos puntos)

Se que en C++ se puede hacer con la función: atan2(y2-y1,x2-x1); pero en delphi no existe la función Atan2.

¿ algúna función de delphi que haga esto u otro modo de calcularlo ?

Gracias.

Robert01
02-10-2008, 17:36:25
Hay una función llamada arctan, podés usar esa

Saludos

donald shimoda
02-10-2008, 17:39:03
Hay una función llamada arctan, podés usar esa

Saludos

Si el tema es como alimentas dos puntos. Ahi se le va a complicar al amigo, relacionar esos dos puntos y sacar un número coherente a lo que esta buscando.

kotai
02-10-2008, 17:42:36
El problema de ArcTan es que no diferencia bien los cuadrantes, he hecho:

RadToDeg(ArcTan((y2-y1)/(x2 - x1)))

pero solo devuelve un número entre [0..90] en el 1º y 3º cuadrante y [0..-90] en el 2º y 4º cuadrante por lo que no se realmente el ángulo.

Saludos.

roman
02-10-2008, 17:46:55
en delphi no existe la función Atan2.

Pero sí existe ArcTan2.

// Saludos

Robert01
02-10-2008, 17:49:00
function AngleRad(x1,y1,x2,y2:double):double;
begin
result:=ArcTan2(y2-y1,x2-x1);
end;

function AngleDeg(x1,y1,x2,y2:double):double;
begin
result:=RadToDeg(ArcTan2(y2-y1,x2-x1));
if result<0 then result:=360.0+result;
if result>=360.0 then result:=0;
end;




Espero que ande bien

kotai
02-10-2008, 17:52:37
Pero sí existe ArcTan2.

// Saludos

Muchas gracias, eso es lo que necesitaba.

Con lo fácil que era y no probarlo... me había metido en la unit pas y allí no estaba esa función, tendría que haber mirado en la unit math.

Saludos