Cálculos entre pontos
EsdrasXavier opened this issue · comments
Esdras commented
Nesse projeto deve-se calcular distancia entre pontos e o ângulos entre pontos, esse seria o core do app.
Para realizar esses cálculos veja:
- Como calcular distância entre duas coordenadas
- Como calcular ângulo entre duas coordenadas
- TyneGPS plus
Exemplo de código em python
from math import sqrt, pi, radians, degrees, sin, cos, atan2
sq = lambda x: (x * x) # Eleva ao quadrado
EARTH_RADIUS = 6372795 # Tecnicamente o raio da terra é de 6372795
def course_to(lat1, long1, lat2, long2):
'''Retorna para qual angulo deve-se ir para chegar ao ponto
'''
dlon = radians(long2 - long1)
lat1 = radians(lat1)
lat2 = radians(lat2)
y0 = sin(dlon) * cos(lat2)
x0 = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(dlon)
x0 = atan2(y0, x0)
if x0 < 0.0:
x0 += 2 * pi
return degrees(x0)
def distance_between(lat1, long1, lat2, long2):
'''Retorna a distância em metros, para retornar
em KM divida o resultado por 1000
'''
delta = radians(long1 - long2)
sdlong = sin(delta)
cdlong = cos(delta)
lat1 = radians(lat1)
lat2 = radians(lat2)
slat1 = sin(lat1)
clat1 = cos(lat1)
slat2 = sin(lat2)
clat2 = cos(lat2)
y0 = (clat1 * slat2) - (slat1 * clat2 * cdlong)
y0 = sq(y0) + sq(clat2 * sdlong)
y0 = sqrt(y0)
x0 = (slat1 * slat2) + (clat1 * clat2 * cdlong)
delta = atan2(y0, x0) * EART_RADIUS
return delta
if __name__ == '__main__':
lat1 = -26.593514
long1 = -49.1298725
lat2 = -26.5935555
long2 = -49.1288856
angle = course_to(lat1, long1, lat2, long2)
distance = distance_between(lat1, long1, lat2, long2)
print("Angle: {}".format(angle))
print("Distance: {}".format(distance))