我正在为一个游戏编写一个工具,该工具涉及计算 500 个单位的环形平面上两个坐标之间的距离。也就是说,[0,0] 到 [499,499] 是有效坐标,并且 [0,0] 和 [499,499] 也彼此相邻。
目前,在我的应用程序中,我正在比较具有 [X,Y] 位置的城市与他们预先配置的用户自己的 [X,Y] 位置之间的距离。
为此,我找到了这个算法,它的工作原理是:
Math.sqrt ( dx * dx + dy * dy );
因为按距离对分页列表进行排序是一件很有用的事情,所以我在 MySQL 查询中实现了这个算法,并使用我的 SELECT 语句的以下部分使其可用于我的应用程序:
SQRT( POW( ( ".strval($sourceX)." - cityX ) , 2 ) + POW( ( ".strval($sourceY)." - cityY ) , 2 ) ) AS distance
这适用于许多计算,但没有考虑到 [0,0] 和 [499,499] 是彼此靠近的事实。
鉴于 0 和 499 相邻,有什么方法可以调整此算法以生成准确的距离?