Distancia entre duas coordenadas
13/04/2005
0
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
Posts
13/04/2005
Emerson Nascimento
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;
18/12/2019
Douglas Colombo
[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?
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;
Clique aqui para fazer login e interagir na Comunidade :)