Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen ...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
Hola hermanos,
os dejo esta pagina, que escribí, del WIKI del foro italiano, contenente dos maneras para calcular la distancia entre dos puntos geográficos, conociendo latitud y longitud:

http://www.gambas-it.org/wiki/index...e_e_longitudine
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
+1
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
vuott escribió: [Ver mensaje]
Hola hermanos,
os dejo esta pagina, que escribí, del WIKI del foro italiano, contenente dos maneras para calcular la distancia entre dos puntos geográficos, conociendo latitud y longitud:

http://www.gambas-it.org/wiki/index...e_e_longitudine


¡¡Chuuuulo!!
Yo lo tengo hecho para distancias angulares entre objetos celestes a partir de las coordenadas equivalentes, ascensión recta y declinación.
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
Grandamakulo escribió: [Ver mensaje]
Yo lo tengo hecho para......


Eh ! ..y donde está ?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
vuott escribió: [Ver mensaje]
Grandamakulo escribió: [Ver mensaje]
Yo lo tengo hecho para......


Eh ! ..y donde está ?


Lo busco...  
 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
Bueno, me ha costado encontrarlo —y eso que hasta tenía el programa en una calculadora CASIO, sí, hombre, de éstas que se programaban en BASIC—, pero aquí está.
La función más directa que has empleado es matemáticamente perfecta, pero tiene el problema de que en los polos puede dar lugar a «cosas divertidas» como división por cero. Claro, que no creo que haya muchos de nosotros que vaya a alguno de los polos   , por tanto, la función es completamente válida.
Pero con los astros es distinto, porque puedes necesitar conocer distancias cerca de los polos (p.e. galaxia Polarissima Borealis )
Para solucionar este asunto se puede recurrir a dos métodos. El primero consiste en pasar las coordenadas a cartesianas, considerando un radio arbitrario de la esfera celeste igual a uno, y después calcular el ángulo entre dos vectores. Esto funciona en cualquier condición.
Otro método lo sugiere Jean Meeus y consiste en emplear la antigua función trigonométrica «Verseno», o haversine en la lengua de la Pérfida Albión. Aunque tiene alguna dificultad en torno a los 180º, no es crítica y es mucho más sencillo de programar.

Private Function DistAng(Ar1 As Float, Dc1 As Float, Ar2 As Float, Dc2 As Float) As Float
  ' **** Cálculo de la distancia angular entre dos objetos celestes.
  ' <<<< Devuelve la distancia en radianes
  ' >>>>
  '     Ar1: Ascensión recta del primer objeto (rad)
  '     De1: Declinación del primer objeto (rad)
  '     Ar2: Ascensión recta del segundo objeto (rad)
  '     De2: Declinación del segundo objeto (rad)

  Dim Pas As Float      ' Variable de paso, hav(distancia)
  
  Pas = hav(Dc1 - Dc2) + Cos(Dc1) * Cos(Dc2) * hav(Ar1 - Ar2)
  Return 2 * ASin(Sqr(Pas))

End

Private Function hav(Ang As Float) As Float
  ' **** Antigua función trigonométrica Verseno o HAV.
  ' <<<< Devuelve HAV=(1- cos(ang))/2=sin²(Ang/2) (adimensional)
  ' >>>>
  '     Ang: Ángulo (rad)
  
  Return (Sin(Ang / 2)) ^ 2
  

End
 

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
Muchas gracias, Grandamakulo.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
Muy interesante todo.
Gracias
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Calcular La Distancia Entre Dos Puntos Geográficos, De Los Que Se Conocen Latitud Y Longitud 
 
¡¡¡No me he podido aguantar!!!  
Tenía que poner el método que me gusta, sí ése que tenía en la calculadora, un pelín más largo, pero mucho más robusto. Sólo que ni siquiera lo he probado   .
Ahí queda:
Private Function DistAng2(Ar1 As Float, Dc1 As Float, Ar2 As Float, Dc2 As Float) As Float
  ' **** Cálculo de la distancia angular entre dos objetos celestes.
  ' <<<< Devuelve la distancia en radianes
  ' >>>>
  '     Ar1: Ascensión recta del primer objeto (rad)
  '     De1: Declinación del primer objeto (rad)
  '     Ar2: Ascensión recta del segundo objeto (rad)
  '     De2: Declinación del segundo objeto (rad)

  Dim x1 As Float       ' coords cartesianas en uds arbitrarias
  Dim y1 As Float
  Dim z1 As Float
  Dim x2 As Float
  Dim y2 As Float
  Dim z2 As Float
  Dim C1 As Float       ' Colatitud [Pi/2, -Pi/2] --> [0, Pi]
  Dim C2 As Float
  
  C1 = Pi / 2 - Dc1
  x1 = Sin(Dc1) * Cos(Ar1)
  y1 = Sin(Dc1) * Sin(Ar1)
  z1 = Cos(Dc1)
  
  C2 = Pi / 2 - Dc2
  x2 = Sin(Dc2) * Cos(Ar2)
  y2 = Sin(Dc2) * Sin(Ar2)
  z2 = Cos(Dc2)
  
  
  Return ACos(x1 * x2 + y1 * y2 + z1 * z2)

End

 



 
Grandamakulo - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
10.00 10 10 1
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mostrar Texto Entre Puntos user3304mm7126 General 9 Sabado, 26 Diciembre 2009, 19:50 Ver último mensaje
user3304mm7126
No hay nuevos mensajes Medir En X La Distancia Del Ratón tincho Aplicaciones/Fragmentos de Código 1 Miercoles, 11 Octobre 2017, 18:31 Ver último mensaje
jsbsan
No hay nuevos mensajes Mid, Longitud Negativa Shell General 0 Jueves, 20 Septiembre 2018, 15:17 Ver último mensaje
Shell
No hay nuevos mensajes Longitud Máxima De Un Textbox shordi General 3 Jueves, 11 Diciembre 2014, 21:15 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario