locked
Findind distance between two POINTS help

    Question

  • So  i was trying to duplicate the distance formula on this page in C#

    http://itouchmap.com/latlong.html

    This is for distance between two locations.

    This is my code

      int R = 6371;
                double Lat1 = ((Double.Parse(SLat))*(Math.PI/180));
           
    
                double Lat2 = ((Double.Parse(SLat2)) * (Math.PI / 180));
               
                
    
                double deltaOmega = (Double.Parse(SLat) - Double.Parse(SLat2)) * (Math.PI / 180);
                double deltaLambda = (Double.Parse(SLong) - Double.Parse(SLong2)) * (Math.PI / 180);
    
                double a = Math.Sin(deltaOmega / 2) * Math.Sin(deltaOmega / 2) + Math.Cos(Lat1) * Math.Cos(Lat2) * Math.Sin(deltaLambda / 2) * Math.Sin(deltaLambda/ 2);
    
                double c = 2* Math.Atan2(Math.Sqrt(a), Math.Sqrt(1-a));
    
                double dis = R * c;

    but i keep getting a distance that is two decimal places off

    Can anyone verify that my translation of the equation is correct?


    • Edited by kalel111 Tuesday, October 21, 2014 4:25 AM
    Tuesday, October 21, 2014 4:24 AM

All replies

  • Could you post the direct link to the formula you are implementing? I have not been able to find it on the website you linked to.
    Tuesday, October 21, 2014 8:01 AM
  • Sorry, wrong link.

    this is the correct one:

    http://www.movable-type.co.uk/scripts/latlong.html

    Wednesday, October 22, 2014 1:04 AM
  • No one can verify this for me???  Come on guys. You just have to look at my code!
    Thursday, October 23, 2014 2:22 PM
  • So  i was trying to duplicate the distance formula on this page in C#

    http://www.movable-type.co.uk/scripts/latlong.html

    This is for distance between two locations.

    This is my code

    int R = 6371;
                double Lat1 = ((Double.Parse(SLat))*(Math.PI/180));
           
    
                double Lat2 = ((Double.Parse(SLat2)) * (Math.PI / 180));
               
                
    
                double deltaOmega = (Double.Parse(SLat) - Double.Parse(SLat2)) * (Math.PI / 180);
                double deltaLambda = (Double.Parse(SLong) - Double.Parse(SLong2)) * (Math.PI / 180);
    
                double a = Math.Sin(deltaOmega / 2) * Math.Sin(deltaOmega / 2) + Math.Cos(Lat1) * Math.Cos(Lat2) * Math.Sin(deltaLambda / 2) * Math.Sin(deltaLambda/ 2);
    
                double c = 2* Math.Atan2(Math.Sqrt(a), Math.Sqrt(1-a));
    
                double dis = R * c;

    but i keep getting a distance that is two decimal places off

    Can anyone verify that my translation of the equation is correct?

    Thursday, October 23, 2014 2:23 PM