测试了一共八组点,大概关系是这样的

计算的是那八个点从正北方向按顺时针转过的角度的大小

#include "stdafx.h"
#include <math.h>
#include <iostream>
#include <stdio.h>
#define PI                      3.141592654
#define EARTH_RADIUS            6378.137        //地球近似半径
using namespace std;
double get_distance(double lat1, double lng1, double lat2, double lng2);
int get_angle(double lat1, double lng1, double lat2, double lng2);
int _tmain(int argc, _TCHAR* argv[])
{int anglee1 = get_angle(39.9465141, 116.906654, 39.945908, 116.906084);//1cout << anglee1 << endl;int anglee2 = get_angle(39.9459305, 116.906914, 39.945908, 116.906084);//2cout << anglee2<< endl;int anglee3 = get_angle(39.9453354, 116.906685, 39.945908, 116.906084);//3cout << anglee3 << endl;int anglee4 = get_angle(39.945076, 116.906105, 39.945908, 116.906084);//4cout << anglee4 << endl;int anglee5 = get_angle(39.9453049, 116.90551, 39.945908, 116.906084);//5cout << anglee5 << endl;int anglee6 = get_angle(39.9458847, 116.905251, 39.945908, 116.906084);//6cout << anglee6 << endl;int anglee7= get_angle(39.9464798, 116.905479, 39.945908, 116.906084);//7cout << anglee7 << endl;int anglee8 = get_angle(39.9467392, 116.906059, 39.945908, 116.906084);//8cout << anglee8 << endl;return 0;
}//两点的距离(纬度,经度)
double get_distance(double lat1, double lng1, double lat2, double lng2)
{double radLat1 = lat1 * PI / 180.0;   //角度1˚ = π / 180double radLat2 = lat2 * PI / 180.0;   //角度1˚ = π / 180double a = radLat1 - radLat2;//纬度之差double b = lng1 * PI / 180.0 - lng2* PI / 180.0;  //经度之差double dst = 2 * asin((sqrt(pow(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * pow(sin(b / 2), 2))));dst = dst * EARTH_RADIUS;dst = round(dst * 10000) / 10000;return dst;
}//计算角度
int get_angle(double lat1, double lng1, double lat2, double lng2)
{double x = lat1 - lat2;//t ddouble y = lng1 - lng2;//z yint angle=-1;if (y == 0 && x > 0) angle = 0;if (y == 0 && x < 0) angle = 180;if(x ==0 && y > 0) angle = 90;if(x == 0 && y < 0) angle = 270;if (angle == -1){double dislat = get_distance(lat1, lng2, lat2, lng2);double dislng = get_distance(lat2, lng1, lat2, lng2);if (x > 0 && y > 0) angle = atan2(dislng, dislat) / PI * 180;if (x < 0 && y > 0) angle = atan2(dislat, dislng) / PI * 180+90;if (x < 0 && y < 0) angle = atan2(dislng, dislat) / PI * 180 + 180;if (x > 0 && y < 0) angle = atan2(dislat, dislng) / PI * 180 + 270;}return angle;
}

通过经纬度坐标计算两点间的距离以及角度关系(C++)相关推荐

  1. Java 根据经纬度计算两点间的距离

    Java实现 public final class DistanceUtils {/*** 地球半径,单位 km*/private static final double EARTH_RADIUS = ...

  2. 经纬度互换、换算成米、两点的经纬度计算两点间的距离

    经纬度互换 度(DDD):E 108.90593度    N 34.21630度 如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒?转换方法是将108 ...

  3. ArcGIS操作系列14- 经纬度互换、换算成米、两点的经纬度计算两点间的距离

    1. 经纬度互换 度(DDD):E 108.90593度    N 34.21630度 1.1  如何将度(DDD):: 108.90593度换算成度分秒(DMS)东经E 108度54分22.2秒? ...

  4. 根据地图经纬度计算两点间的距离

    经纬度丢失计算距离 1.纬度相同,经度不同 在纬度相同的情况下: 经度每隔0.00001度,距离相差约1米: 每隔0.0001度,距离相差约10米: 每隔0.001度,距离相差约100米: 每隔0.0 ...

  5. 1815. 计算两点间的距离

    水题也要注意一点,确实简单,不过还是错了,错在格式化输出! 1815. 计算两点间的距离     总提交数量: 5934 通过数量: 1093 评价: 1.9/5.0(38 票) 012345     ...

  6. ZZULIOJ 计算两点间的距离(多实例测试)

    计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间 ...

  7. OJ1084: 计算两点间的距离(多实例测试)(C语言)

    OJ1084: 计算两点间的距离(多实例测试) 题目描述 入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. 输入 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2 ...

  8. HDU2001 计算两点间的距离【入门】

    计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  9. 根据经纬度坐标计算两点的距离

    现在如果有个业务需求,就是要做一个根据定位坐标实现计算距离并找到附近的店铺的推荐功能,已知数据库中会存储店铺的经纬度坐标.那么,这个需求已经很明确了,在要求不高的情况下,只要计算两个坐标的距离,进行一 ...

最新文章

  1. android studio 3.1坑,Android Studio3.1升级遇到的坑
  2. hibernate开启二级缓存
  3. @所有城市:想建AI智算中心的看这里!国家认可的那种
  4. 人脸识别有哪些利与弊
  5. 定制AjaxControlToolkit:给CalendarExtender增加清除功能
  6. 邯郸学院计算机专业是本科还是专科,邯郸学院是大学吗 是本科还是专科
  7. JDBC详解系列之流程
  8. 用重构指导Clean Code(二):依恋情结和switch语句
  9. kafka消息消费有延迟_注意了!Kafka与RabbitMQ千万不要乱用…
  10. Linux文件inode用完一例
  11. python虚函数_virtual(虚函数) vtbl(虚函数表)与vptr(虚函数表指针)
  12. python右键弹出菜单编写_python实现应用程序在右键菜单中添加打开方式功能
  13. 基于多搜索引擎和深度学习技术的自动问答
  14. win7下jdk+eclipse android应用开发环境建立
  15. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(四)——差动放大器
  16. 企业网的规划与设计(eNSP)
  17. python数字转对应中文_python英文数字到中文数字的转换
  18. C语言中的fgets函数
  19. 三、Git本地仓库基本操作——git仓库忽略跟踪文件
  20. Opencv3笔记18——重映射

热门文章

  1. 为什么没前途也要学习单片机,会给你后半生享福
  2. 算法分析-子集和数,回溯法
  3. Entity、PO、VO、BO、DTO用法
  4. EPSON机械手跟相机搭配走tcp/ip协议,及跟plc通讯将手动操作部分映射到触摸屏
  5. 升级系统后,虚拟机无法启动解决方案。
  6. 14个岗位,看完就知道自己在互联网行业该怎么混
  7. linux修改网络跃点,自动跃点是什么可以修改吗
  8. 迅为龙芯2K1000开发板Linux环境变量
  9. mmdvm 接收_派之星和MMDVM热点常见问题
  10. 树莓派环境搭建(远程桌面、免驱摄像头、tensorflow)总结2018