Ver Mensaje Individual
  #3  
Viejo 21/06/15, 20:09:48
Avatar de WillyWeb
WillyWeb WillyWeb no está en línea
Usuario muy activo
Mensajes: 2,067
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Versión de ROM: OxygenOS 9.0.6 | MIUI 12.5.1
Versión de Radio: Stock
Tu operador: Vodafone
Mencionado: 75 comentarios
Tagged: 3 hilos
Versión de la "Fórmula de Haversine" en JavaScript

Aquí está la tarea para calcular la distancia entre dos coordenadas usando la "Fórmula de Haversine". He usado JavaScript porque no es posible implementarla directamente en Tasker ya que su librería matemática no tiene la función trigonométrica "atan2".

Código:
DistHaversine (333)
	A1: Devolver [ Valor:ERROR Detener:Encendido ] Si (if) [ %par1 No ajust. | %par2 No ajust. ]
	A2: JavaScriptlet [ Código:
pos1=par[0].split(","); pos2=par[1].split(","); radio=6371000; gra2rad=Math.PI/180; lat1=pos1[0]*gra2rad; lat2=pos2[0]*gra2rad; latd=(pos2[0]-pos1[0])*gra2rad; lond=(pos2[1]-pos1[1])*gra2rad; a = Math.sin(latd/2) * Math.sin(latd/2) + Math.cos(lat1) * Math.cos(lat2) * Math.sin(lond/2) * Math.sin(lond/2); c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); d = radio * c; var dist=d.toFixed(3);
Librerías: Salida Automática:Encendido Cuenta atrás (segundos):1 ] A3: Devolver [ Valor:%dist Detener:Encendido ]
Como en la otra implementación que hice en JavaScript el número de decimales del resultado es ajustable cambiando el valor dentro del paréntesis de "toFixed".

Nota: En esta ecuación se usa un radio terrestres de 6.371 Km. Curiosamente si se sustituye este valor por el radio medio cuadrático (6.372,795477598 Km) que propuse para el "Teorema del Coseno" los resultados son casi iguales.

Por lo que he visto los resultados con las "Fórmulas de Vincenty" difieren muy poco de los que se obtienen con la "Fórmula de Harversine", en cambio la complejidad del algoritmo es mucho mayor y el esfuerzo de adaptarla a Tasker/JavaScript no merece la pena, así que aquí me planto.

Hasta otra ...
Responder Con Cita
Los siguientes 2 usuarios han agradecido a WillyWeb su comentario: