【问题标题】:Haversine Formula Implementation on ArduinoArduino上的Haversine公式实现
【发布时间】:2014-06-21 12:34:24
【问题描述】:

我正在使用 GPS 和 Arduino 创建地理围栏。我想实现Ha​​versine公式来找到两点之间的距离,以便用半径计算它。问题是我发现很难在 Arduino IDE 上实现 Haversine 公式,我是 Arduino 的初学者。

a = sin²(Δφ/2) + cos(φ1).cos(φ2).sin²(Δλ/2)
c = 2.atan2(√a, √(1−a))
d = R.c

如何在 Arduino IDE 上实现上述公式?

【问题讨论】:

标签: arduino-ide haversine


【解决方案1】:

TinyGPS arduino 库具有测量两点之间的距离以及两点之间的航向/方位的功能。

【讨论】:

    【解决方案2】:

    要使用 Haversine 或 Spherical Law of Cosines,您需要 atan2() 或 acos() 函数,这在 Arduino 中似乎不可用。

    毕达哥拉斯定理可用于等角投影来计算距离。这比Haversine 或Spherical Law of Cosines 简单,但仍允许向极点收敛并使用Arduino 中可用的trig 函数。

    理论

    赤道处的地球周长 = 40,076 公里。赤道被划分为360度的经度,所以赤道的每一度代表大约111.32公里。从赤道向极点移动,这个距离在极点处减小到零。

    1 degrees aproximates to 111.32 km at equator.
    96.41km at 30 degrees N/S
    78.71 km at 45 degrees N/S
    55.66 km at 60 degrees N/S
    28.82 km at 75 degrees N/S
    

    应用程序

    在伪代码中,因为我不知道 Arduino

    R = 6371;km
    lat/lng in radians
    
    var x = (lng2-lng1) * cos((lat1+lat2)/2);
    var y = (lat2-lat1);
    var dist = sqrt(x*x + y*y) * R;
    

    结果

    coordinates = (0,0) to (1,0) Haversine 157.293809 km Equirectangular 157.294807 km
    coordinates = (10,0) to (11,0) Haversine 155.985273 km Equirectangular 155.986379 km
    coordinates = (20,0) to (21,0) Haversine 152.397156 km Equirectangular 152.39855 km
    coordinates = (30,0) to (31,0) Haversine 146.81715 km Equirectangular 146.818975 km
    coordinates = (40,0) to (41,0) Haversine 139.728101 km Equirectangular 139.730447 km
    coordinates = (50,0) to (51,0) Haversine 131.817706 km Equirectangular 131.820603 km
    coordinates = (60,0) to (61,0) Haversine 123.976838 km Equirectangular 123.980256 km
    coordinates = (70,0) to (71,0) Haversine 117.255674 km Equirectangular 117.259525 km
    coordinates = (80,0) to (81,0) Haversine 112.726966 km Equirectangular 112.731106 km
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2011-09-12
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2015-02-26
      • 1970-01-01
      相关资源
      最近更新 更多