我反编译了System.Device.Location.GeoCoordinate.GetDistanceTo(...),发现它使用Haversine公式,它应该指定地球的半径作为计算步骤之一。
反编译代码中指定的半径为6376500.0
(米)。
在 MSDN 中,GetDistanceTo 的文档有一个注释:
Haversine 公式解释了地球的曲率,但假设地球是球形而不是椭球。
维基百科指出
将地球建模为球体的几种不同方法均产生 6,371 公里的平均半径
同样在我搜索的任何地方,我都找不到将半径指定为6,376.5
公里的任何人。
因此,即使它们非常接近,GetDistanceTo
使用6,376.5
公里,但广泛接受的半径是6,371
公里。为什么有区别?创造者是否GetDistanceTo
找到了一种更好的方法来近似地球的半径?