|   FOROS      |     Tutoriales    |     KIO4 |      
   Inicio B4A (Basic4Android) App inventor 2 WAMP - PHP - MySQL
   Elastix - VoIP Cosas de Windows Webs interesantes Arduino
  Estación meteorológica Visual Basic Script (VBS) Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

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                    Return to index tutorial

____________________________

Procedures. Result. Distance between two points.

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.


__________________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información