Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ángulo entre dos puntos (https://www.clubdelphi.com/foros/showthread.php?t=60449)

kotai 02-10-2008 17:24:11

Ángulo entre dos puntos
 
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

Cita:

Empezado por Robert01 (Mensaje 317741)
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

Cita:

Empezado por kotai (Mensaje 317738)
en delphi no existe la función Atan2.

Pero sí existe ArcTan2.

// Saludos

Robert01 02-10-2008 17:49:00

Código Delphi [-]
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

Cita:

Empezado por roman (Mensaje 317746)
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


La franja horaria es GMT +2. Ahora son las 02:17:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi