Haversin Formula Unity

So, I'm trying to use the haversine formula in Unity to get the distance between two different points (given latitude and length). The code works (no errors), but I am not getting the wrong result. I followed the whole formula, so I don't know where the math / code problem is. Any idea?

Here is the code:

 public float lat1 = 42.239616f;
 public float lat2 = -8.72304f;
 public float lon1 = 42.239659f;
 public float lon2 = -8.722305f;

 void operacion(){
 float R = 6371000; // metres
 float omega1 = ((lat1/180)*Mathf.PI);
 float omega2 = ((lat2/180)*Mathf.PI);
 float variacionomega1 = (((lat2 - lat1)/180)*Mathf.PI);
 float variacionomega2 = (((lon2 - lon1) / 180) * Mathf.PI);
 float a = Mathf.Sin(variacionomega1/2) * Mathf.Sin(variacionomega1/2) +
             Mathf.Cos(omega1) * Mathf.Cos(omega2) *
             Mathf.Sin(variacionomega2/2) * Mathf.Sin(variacionomega2/2);
 float c = 2 * Mathf.Atan2(Mathf.Sqrt(a), Mathf.Sqrt(1-a));

 float d = R * c;
 }
+4
source share
1 answer

I think this line is incorrect:

float c = 2 * Mathf.Atan2(Mathf.Sqrt(a), Mathf.Sqrt(1-a));

UPDATED:

The right way:

float c = 2 * Mathf.Asin(Mathf.Sqrt(a));
+4
source

Source: https://habr.com/ru/post/1652244/


All Articles