none
Calcular distancia entre dos puntos (latitud, longitud)

    Pregunta

  • Buenas!

    Mi pregunta es la siguiente: tengo un método que calcula la distancia entre dos puntos mediante unos calculos en lo que se deberia utilizar valores decimales para devolver la distancia con una precisión aceptable.
    El problema es que hay operadores y funciones que no me permiten utilizar variables deicmal, por ejemplo Math.Cos...

    Puedo cambiar los tipos de las variables a double y funcionaria correctamente pero la precisión se vería reducida considerablemente.

    Gracias de antemano!

    jueves, 03 de noviembre de 2011 11:32

Respuestas

Todas las respuestas

  • hola

    pero porque necesitarias el Math.Cos() para calcular distinacia ?

    digo si haces

    double punto1 = (decimal)20.5;

    double punto2 = (decimal)26.1;

    double distancia = punto2 - punto1;

    o sea imagino la formula deberia ser algo simple, me suana raro que un coseno intervenga

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 03 de noviembre de 2011 11:38
  • Una porción del código sería esta para que sirva de ejemplo.

      // paso los grados a radianes
                LatA = LatA * Math.PI / 180;
                LatB = LatB * Math.PI / 180;
                LngA = LngA * Math.PI / 180;
                LngB = LngB * Math.PI / 180;

                // 6371 es el radio de la tierra
                // 6371 * ACos(Math.Cos(LatA) * Cos(LatB) * Cos(LngB - LngA)+ Sin(LatA) * Sin(LatB))
                double operacion = Math.Cos(LatA) * Math.Cos(LatB) * Math.Cos(LngB - LngA) + Math.Sin(LatA) * Math.Sin(LatB);
         

    jueves, 03 de noviembre de 2011 11:45
  • hola

    pero analziando la funcion de calculo

    Math.Cos Method

     

    esta soporta como parametro un double, con eso ya puede usar decimales

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 03 de noviembre de 2011 12:13
  • Creo que no me he explicado bien, necesito usar valores de tipo decimal que tienen mas precisión que los de tipo double. No me refiero a decimal de valores decimales.

    No se si me explico o te estoy liando mas ^^.

    jueves, 03 de noviembre de 2011 12:20
  • Los elementos de tipo decimal no almacenan la distancia en km, lo que referencian son las coordenadas. Un ejemplo de coordenadas podría ser (37,391699803993100, -6,428940268233420). Esas coordenadas referencian a un punto y busca la distancia entre esas  coordenadas y las de otro punto que yo seleccione en el mapa.
    jueves, 03 de noviembre de 2011 15:28