Distancia entre duas coordenadas

13/04/2005

0

Galera, eu tenho duas coordenadar
p1(x,y) e pt2(x,y). Tem como eu saber a distância de um ponto para o outro sendo que é uma diagonal ?


Cristianopintado

Cristianopintado

Responder

Posts

13/04/2005

Edilcimar

Pitágoras


Responder

13/04/2005

Emerson Nascimento

ilustrando o q o colega disse:

var
  co, ca, hy: extended;
begin
   co := abs( p2.x-p1.x );
   ca := abs( p2.y-p1.y );
   hy := Hypot( ca,co );

   label3.caption := floattostr( hy );
end;


a função Hypot() está na unit Math (juntamente com várias outras funções de trigonometria).

se não quiser usar a função Hypot(), faça o cálculo direto:
var
  co, ca, hy: extended;
begin
   co := abs( p2.x-p1.x );
   ca := abs( p2.y-p1.y );
   hy := sqrt( (ca*ca)+(co*co) );

   label3.caption := floattostr( hy );
end;



Responder

18/12/2019

Douglas Colombo

ilustrando o q o colega disse:

[code:1:6932865ed6]var
co, ca, hy: extended;
begin
co := abs( p2.x-p1.x );
ca := abs( p2.y-p1.y );
hy := Hypot( ca,co );

label3.caption := floattostr( hy );
end;[/code:1:6932865ed6]

a função Hypot() está na unit Math (juntamente com várias outras funções de trigonometria).

se não quiser usar a função Hypot(), faça o cálculo direto:
[code:1:6932865ed6]var
co, ca, hy: extended;
begin
co := abs( p2.x-p1.x );
ca := abs( p2.y-p1.y );
hy := sqrt( (ca*ca)+(co*co) );

label3.caption := floattostr( hy );
end;[/code:1:6932865ed6]




Olá, como calculo para metros ou km o resultado desta função?
Responder

19/12/2019

Emerson Nascimento

é preciso saber em qual unidade estão suas coordenadas.

- se estiverem em metros e você quer o resultado em km, divida o resultado por 1000
- se estiverem em km e você quer em metros, multiplique por 1000
- se estiver em latitude e longitude, dá um pouco mais de trabalho.
          vamos dizer que temos as seguintes coordenadas:
          p1 (23° 30' 29.93" S, 46° 38' 32.90" W )
          p2 (23° 30' 36.50" S, 46° 37' 53.01" W )

          precisamos transformar as coordenadas em medidas (km - constante para cálculo: 1.852; não está considerando a curvadura da terra no cálculo):
          transformando p1
          p1.x = (23° * 60) + (30' * 1) + (29.93" / 60)
          p1.x = 1380 + 30 + 0.4988
          p1.x = 1410.4988
          p1.x = 1410.4988 * 1.852 = 2612.2438 km

          p1.y = (46° * 60) + (38' * 1) + (32.90" / 60)
          p1.y = 2760 + 38 + 0.5483
          p1.y = 2798.5483
          p1.y = 2798.5483 * 1.852 = 5182.9115 km

          p1 = (2612.2438, 5182.9115)

          transformando p2
          p2.x = (23° * 60) + (30' * 1) + (36.50" / 60)
          p2.x = 1380 + 30 + 0.6083
          p2.x = 1410.6083
          p2.x = 1410.6083 * 1.852 = 2612.4466 km

          p2.y = (46° * 60) + (37' * 1) + (53.01" / 60)
          p2.y = 2760 + 37 + 0.8835
          p2.y = 2797.8835
          p2.y = 2797.8835 * 1.852 = 5181.6802 km

          p2 = (2612.4466, 5181.6802)

          com esses novas pontos em mãos, basta utilizar a mesma fórmula:
          var
            co, ca, hy: extended;
          begin
             co := abs( p2.x-p1.x ); // resulta 0.2028
             ca := abs( p2.y-p1.y ); // resulta 1.2313
             hy := sqrt( (ca*ca)+(co*co) ); // resulta raiz de (0.04112784 + 1.51609969) = raiz de (1.55722753) = 1.247889 km => 1247,89 m

             label3.caption := floattostr( hy );
          end;
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar