Witajcie.
Tak jak w temacie, potrzebuję obliczyć odległość między dwoma punktami na kuli ziemskiej.
Zaimplementowałem obliczanie ortodromy, ale niestety wyniki są trochę rozbierzne, mianowicie dla odległości między współrzędnymi 0,0 i 10,10 wychodzi mi 87km, a powinno wyjść 1568,59 więc coś grubo sknociłem ale nie widzę co konkretnie.
Oto kod:
public static decimal CalculateOrtodroma(decimal pointAX, decimal pointAY, decimal pointBX, decimal pointBY)
{
double ax = (double)pointAX;
double ay = (double)pointAY;
double bx = (double)pointBX;
double by = (double)pointBY;
// sinuses cosinuses
//wzór D = arccos((sin(ay)*sin(by))+(cos(ay)*cos(by)*cos(|ax-bx|))
// deltaX
double deltaX = Math.Abs(ax - bx);
double sinuses = Math.Sin(ay) * Math.Sin(by);
double cosinuses = Math.Cos(ay) * Math.Cos(by) * Math.Cos(deltaX);
double D = Math.Acos(sinuses + cosinuses);
decimal x = (decimal)D * 111.195M;
return x;
}