如何计算两个坐标之间的距离(没有浮点数)?

时间:2012-03-08 15:33:55

标签: math language-agnostic gps geospatial

我需要计算嵌入式系统上两个坐标(lon,lat)之间的距离,这个坐标没有浮点类型(只有整数可用,因此没有三角函数,也没有像sqrt那样的浮点运算)。

这些点非常接近,所以准确性不是问题。

所以我不能使用Haversine formula。我也不能使用这个基于毕达哥拉斯定理的简单算法和equirectangular projection

x = Δlon * cos(lat)
y = Δlat
d = R * √(x² + y²)

因为我没有cos和sqrt功能。也许我可以以某种方式实现它们,但这种算法必须快速(嵌入式系统)。

我最好的选择是毕达哥拉斯定理但是如何在没有三角函数的情况下从度数到米数(并且没有sqrt)?

4 个答案:

答案 0 :(得分:3)

传统上,水手会使用Traverse Tables进行此类计算 - 请参阅American Practical Navigator的第24章。这表明,如果trigsqrt不在等式中,您可能会实现查找表 - 为复杂性交易空间。根据您的精确需求,您可能只需要一个部分遍历表来表示您感兴趣的纬度。

答案 1 :(得分:2)

实际上,你可以使用sqrt功能。查看Newton's method。它并不完美,因为你显然只有整数可以使用,我认为这意味着你的尾巴会在每一步都被砍掉,但这是一个选择。那里也有其他平方根近似。 (为了实现余弦函数,也许你可以使用泰勒近似,但我不确定它在这里有多好用。)

答案 2 :(得分:0)

根据您的使用情况,出租车/城市街区的距离可能会有所帮助: {{3P>

答案 3 :(得分:-1)

地球上的每个学位都是111133.333米。

如何在没有sqrt的情况下到达那里是另一回事!我觉得你使用哪种系统/软件没有这个基本的数学功能,我有点失落?

您可以通过将所有内容提升到1000的功能来解决浮点问题。这就是我们以前与Java ME有关的事情(如果我没记错!!!)