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