я пытаюсь вычислить расстояние между двумя точками и используя acos()
функции в процессе ... но я не получаю точный result..in случая расстояния малТочности ACos функции в C++
float distance_between(dest& point1,dest point2) {
float EARTH_RADIUS = 6371.0;//in km
float point1_lat_in_radians = point1.lat*(PI/180);
float point2_lat_in_radians = point2.lat*(PI/180);
float point1_long_in_radians = point1.lon*(PI/180);
float point2_long_in_radians = point2.lon*(PI/180);
float res = acos(sin(point1_lat_in_radians) * sin(point2_lat_in_radians) + cos(point1_lat_in_radians) * cos(point2_lat_in_radians) * cos(point2_long_in_radians - point1_long_in_radians)) * EARTH_RADIUS;
cout<<res<<endl;
res = round(res*100)/100;
return res;
}
я проверить расстояние между следующими координатами 52,378281 4.900070 и 52,379141 4,880590
52,373634 4.890289 и 52,379141 4,880590 результат в обоих 0 cases..i знать расстояние небольшое, но есть способ, чтобы получить точный расстояние, например 0.xxx?
Почему один параметр передается как ссылка, а другой - копией? Я использую 'const dest &' для обоих. – Clifford
Я с подозрением отношусь к вашему алгоритму. Расстояние * большого круга * между вашими двумя примерами составляет 1,326 км и 0,8991 км соответственно, но когда я проверил ваши расчеты со всеми значениями «двойной», он дает соответственно 2,170 км и 1,240 км. Необязательное округление знаменует значительную ошибку, но это не объясняет результаты, которые я получил. – Clifford