Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2008
Avatar de kotai
kotai kotai is offline
Miembro
 
Registrado: mar 2004
Ubicación: Gandia
Posts: 31
Poder: 0
kotai Va por buen camino
Á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.
Responder Con Cita
  #2  
Antiguo 02-10-2008
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
Hay una función llamada arctan, podés usar esa

Saludos
Responder Con Cita
  #3  
Antiguo 02-10-2008
Avatar de donald shimoda
donald shimoda donald shimoda is offline
Miembro
 
Registrado: jul 2008
Ubicación: Argentino en Santa Cruz de la Sierra
Posts: 1.083
Poder: 17
donald shimoda Va por buen camino
Cita:
Empezado por Robert01 Ver Mensaje
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.
__________________
Donald Shimoda [Team RO] - Blogs: Remobjects Pascal
Responder Con Cita
  #4  
Antiguo 02-10-2008
Avatar de kotai
kotai kotai is offline
Miembro
 
Registrado: mar 2004
Ubicación: Gandia
Posts: 31
Poder: 0
kotai Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 02-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por kotai Ver Mensaje
en delphi no existe la función Atan2.
Pero sí existe ArcTan2.

// Saludos
Responder Con Cita
  #6  
Antiguo 02-10-2008
Robert01 Robert01 is offline
Miembro
 
Registrado: feb 2006
Ubicación: Córdoba, Argentina
Posts: 895
Poder: 19
Robert01 Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 02-10-2008
Avatar de kotai
kotai kotai is offline
Miembro
 
Registrado: mar 2004
Ubicación: Gandia
Posts: 31
Poder: 0
kotai Va por buen camino
Cita:
Empezado por roman Ver Mensaje
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trazar lineas en una imagen y Calcular Angulo??? erikmx Gráficos 18 21-09-2008 01:34:45
Los puntos sobre las ies. marcoszorrilla La Taberna 14 23-04-2008 02:09:43
Determina la amplitud de un ángulo dada su tangente. Roilo Varios 4 02-05-2007 17:54:49
Cargar puntos en una DB juanchi Conexión con bases de datos 8 06-03-2007 18:06:56
Puntos Carlex Varios 2 23-09-2004 14:44:09


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


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
Copyright 1996-2007 Club Delphi