如何在整数平面上近似欧几里德距离而不溢出?

时间:2016-02-18 23:53:20

标签: euclidean-distance integer-arithmetic

我正在开发一个只有整数运算的平台。应用程序使用地理信息,我用(x,y)坐标表示点,其中 x y 是以米为单位测量的距离。 作为近似,我想计算两点之间的欧几里德距离。但要做到这一点,我必须平方距离,并使用32位整数,我可以代表的最大距离是32公里。不好。 我的需求更多的是1000公里。但我希望能够在小于30米的范围内解决距离。

因此我的问题是:我如何计算欧几里德距离,只使用整数运算,没有溢出,对于正方形不适合单个单词的距离?

ETA:我希望能够计算距离,但我可能愿意能够比较它们。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我会将方格从游戏中移开,这样我就可以近似欧几里德距离了。但是,在比较距离时,这种方法可以提供100%的准确度,因为如果平方距离,比较将是相同的。

我很确定这一点,因为我在高维空间中搜索最近邻居时使用了这种方法。您可以在kd-GeRaF

中查看我的代码和理论