C++ —— (两个经纬度计算距离、方位角)、(经纬度A+距离+方位,计算目标经纬度)、(多个经纬度计算面积)

这篇博客介绍了如何使用C++进行经纬度计算,包括两经纬度间距离和方位角的计算,以及已知起点经纬度、距离和方位角如何确定目标经纬度。此外,还涉及了多个经纬度点计算面积的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

顺看

编码不易,觉得文章好,请给作者点赞关注、一键三连。谢谢!

     

* 计算两经纬度之间的距离、方位角
* 已知A经纬度、根据距离、方位,计算目标经纬度

     
     测试了三组数据,并与在线工具测试后对比效果:
在这里插入图片描述
     方位角,距离,海拔在线计算器 (侵删)

     
     
具体理论这里不做介绍,大家可以看如下代码再去理解公式:

#include <iostream>

// PI
#define M_PI		3.14159265358979323846

// 地球半径
const double EARTH_RADIUS = 6371000;

// 大地坐标系资料WGS-84,长半径 6378137
const double WGS84_L_RADIUS = 6378137;

// 大地坐标系资料WGS-84,短半径 6356752.3142 */
const double WGS84_S_RADIUS = 6356752.3142;

// 扁率
const double M_F = 1 / 298.2572236;

// 角度转弧度
double A2R(double d) {
   
    return d * M_PI / 180.0; }

// 弧度转角度
double R2A(double d) {
   
    return d / M_PI * 180.0; }

// 1、计算两个经纬度之间的距离(m)
double GetDistanceCpp(double lat1, double lng1, double lat2, double lng2)
{
   
   
    double radLat1 = A2R(lat1);
    double radLat2 = A2R(lat2);
    double a = radLat1 - radLat2;
    double b = A2R(lng1) - A2R(lng2);
    double s = 2 * asin(sqrt(pow(sin(a/2),2) +cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
    s = s * EARTH_RADIUS;
    return s;
}

// 2、计算两个经纬度之间的方位角(偏北角)(°)
double GetYaw(double lat1, double lon1, double lat2, double lon2)
{
   
   
	double result = 0.0;

    int ilat1 = (int) (0.50 + lat1 * 360000.0);
    int ilat2 = (int) (0.50 + lat2 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信必诺

嗨,支持下哥们呗。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值