CLewaimaiDistance.cpp 612 B

12345678910111213141516171819202122232425262728293031
  1. #include "../pch/pch.h"
  2. #include "CLewaimaiDistance.h"
  3. #define PI 3.141592657
  4. #define EARTH_RADIUS 6378137
  5. CLewaimaiDistance::CLewaimaiDistance()
  6. {
  7. }
  8. CLewaimaiDistance::~CLewaimaiDistance()
  9. {
  10. }
  11. double CLewaimaiDistance::getDistance(CLewaimaiPos pos1, CLewaimaiPos pos2)
  12. {
  13. double Rad = PI / 180.0;
  14. double radlat1 = pos1.lat * Rad;
  15. double radlat2 = pos2.lat * Rad;
  16. double a = radlat1 - radlat2;
  17. double b = (pos1.lng - pos2.lng) * Rad;
  18. double s = 2 * asin(sqrt(pow(sin(a / 2), 2) + cos(radlat1)*cos(radlat2)*pow(sin(b / 2), 2)));
  19. s = s * EARTH_RADIUS;
  20. s = round(s * 10000) / 10000;
  21. return s;
  22. }