我需要在没有浮点类型的嵌入式系统上计算两个坐标(lon,lat)之间的距离(只有整数可用,所以没有三角函数,也没有像 sqrt 这样的浮点运算)。
这些点彼此非常接近,因此准确性不是问题。
所以我不能使用 Haversine formula .我也不能使用这个基于毕达哥拉斯定理和 equirectangular projection 的简单算法:
x = Δlon * cos(lat)
y = Δlat
d = R * √(x² + y²)
因为我没有 cos 和 sqrt 函数。也许我可以以某种方式实现它们,但是这个算法必须很快(嵌入式系统)。
我最好的选择是毕达哥拉斯定理,但如何在没有三角函数(和没有 sqrt)的情况下从度数到米数?
最佳答案
传统上,航海者会使用遍历表进行此类计算——参见 American Practical Navigator 的第 24 章。 .这表明如果 trig
和 sqrt
超出了您可能实现查找表的等式 - 交易空间的复杂性。根据您的具体需求,您可能只需要针对您感兴趣的纬度的部分导线表。
关于math - 如何计算两个坐标之间的距离(没有 float )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620262/