App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando
-- Tutorial de iniciación de App Inventor 2 en español --
Volver al índice del tutorial
____________________________
46D.- Procedimientos con Resultado (V). Distancia entre dos puntos en la esfera. Haversine.
- Presentación.
- Vamos a ver otro Procedimiento con Resultado.
- En principio para poner más instrucciones dentro del Procediento con resultado, utilizamos el Bloque: Ejecutar resultado, que se encuentra en la parte de Control
- También se pueden utilizar variables locales.
________________________________________________________________
- Cálculo de la distancia en kilómetros entre dos puntos de la tierra.
- Para medir distancias en los mapa de Google, pulsa sobre un punto con el Botón derecho del ratón y luego en "Hacer medición"
- Se trata de calcular la distancia entre dos puntos de la tierra conociendo la longitud y latitud de cada uno de ellos.
- Hay que tener en cuenta que la tierra tiene forma esférica. No es totalmente esférica. El radio terrestre
en el Ecuador es de 6378,1 km, en el Polo es de 6356,8 km. El radio Medio se toma en 6371,0 km.
- Al ser una esfera no podemos utilizar la expresión para calcular la distancia entre dos puntos de un plano, como hicimos en el tutorial anterior.
- La expresión que se suele utilizar para calcular dos puntos en la superficie esférica es la fórmula de Haversine:
Φ : latitud en radianes
λ : longitud en radianes
r : radio de la tierra, 6371 km
Puedes encontrar información en...
http://www.movable-type.co.uk/scripts/latlong.html
Fórmula aproximada:
d = acos( sin Φ1 sin Φ2 + cos Φ1 cos Φ2 cos Δλ ) R
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Voy a exponer dos ejemplos:
- uno el 46D con fórmula de Haversine y resultado más exacto y
- otro el 46E (obtenido de los tutoriales de App inventor) de peor resultado.
______________________________________
46D- Cálculo de la distancia entre dos puntos por Haversine.
p46D_procedimientos_distancia_tierra_haversine.aia
- Vamos a crear nuestro propio código utilizando la fórmula de Haversine.
Φ : latitud
λ : longitud
r : radio de la tierra, 6371 km
- Estoy comentando los Procedimientos con resultado, en realidad este código se podría haber realizado perfectamente y más sencillamente sin utilizar Procedimientos, el objetivo de utilizar este algoritmo es sencillamente presentar la manera de introducir instrucciones dentro de un Procedimiento.
_________________
- Diseño.
|
Resultado |
_________________
- Bloques.
__________________________
- Comentarios.
- La fórmula de Haversine para calcular la distancia entre dos puntos de la tierra conociendo la latitud y longitud es:
- Para facilitar el código a las partes del seno al cuadrado las he llamado X e Y
- En la mayoría de los tutoriales de internet leerás que la longitud y latitud se deben introducir en radianes, eso es porque en la mayoría de los lenguajes de programación (Java, C,...) las funciones trigonométricas están en radianes.
- En App inventor las operaciones trigonométricas (seno, coseno, tangente,...) se realizan en grados, por lo cual nosotros no cambiaremos a radianes, haremos las operaciones en grados.
- Pero... hay una parte en esa expresión, el arco-seno, en donde el ángulo obtenido deberá estar en radianes para poderse multiplicar por 2 y por 6371, por lo cual después de calcular el arco-seno (que se obtiene en grados), debemos pasar ese número de grados a radianes, para eso utilizaremos el bloque: convertir grados a radianes.
- Estoy comentando los Procedimientos con resultado, en realidad este código se podría haber realizado perfectamente y más sencillamente sin utilizar Procedimientos, el objetivo de utilizar este algoritmo es sencillamente comentar la manera de introducir instrucciones dentro de un Procedimiento.
- Has visto la manera de introducir variables locales e instrucciones dentro del Bloque "Ejecutar - resultado".
- Dentro del Bloque "Ejecutar - resultado", además de operaciones matemáticas, también se pueden introducir operaciones con cadenas de caracteres y Propiedades de los componentes.
- Ejecución del código:
- Comprobar resultados en una web:
http://www.movable-type.co.uk/scripts/latlong.html
______________________________________ ______________________________________
46E.- Cálculo de la distancia entre dos puntos de la tierra.
p46E_procedimientos_distancia_tierra.aia
- Vamos a calcular la distancia sobre la esfera de dos puntos en los que conocemos su latitud y longitud.
- Lo vamos a realizar en el código que encontramos en el tutorial oficial de App inventor, aunque observaremos que se obtiene un resultado bastante erróneo comparado con el código de Haversine visto anteriormente.
http://www.appinventor.org/Procedures2
_________________
- Diseño.
_________________
- Bloques.
__________________________
- Comentarios.
- Sin embargo al realizar el cálculo sale un gran error comparado con los mapas de Google. Debería salir 9.000 kilómetros.
__________________________
- Propuesta.
- Lee esta información sobre
loxodromía y ortodromía.
- En resumidas cuentas:
- Imagínate que un avión va a realizar un viaje entre Roma y Los Ángeles, parece que la línea recta roja del mapa es la opción más factible, pero no.
- Debido a la esfericidad de la tierra el camino más corto es dirigiéndose a Groenlandia y luego luego hacia Los Ángeles, según indico con la línea negra.
- Para apreciar esto es conveniente que lo observes en un globo terrestre.
https://www.geografiainfinita.com/2018/04/loxodromia-y-ortodromia/
https://www.ennaranja.com/es-noticia/por-que-un-vuelo-de-roma-a-los-angeles-pasa-por-groenlandia-el-ahorro-lo-explica/
__________________________________
|