【发布时间】:2011-01-02 11:04:55
【问题描述】:
我正在为一个游戏编写一个工具,该工具涉及计算 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 相邻,我有什么方法可以调整此算法以生成准确的距离?
【问题讨论】:
标签: php mysql algorithm math coordinate-systems