如何计算网格中从一个字段到另一个字段的“步数”,正交移动?
我正在为我正在开发的游戏实现 A* 寻路系统,而这个简单的数学运算妨碍了我。
我可能应该重新上三年级。哈哈。
如何计算网格中从一个字段到另一个字段的“步数”,正交移动?
我正在为我正在开发的游戏实现 A* 寻路系统,而这个简单的数学运算妨碍了我。
我可能应该重新上三年级。哈哈。
如果我理解正确,我认为您只需将必要的 x,y 动作相加即可。给定两个点(x1,y1)
和(x2,y2)
,那么距离(假设“正交移动”意味着仅水平和/或垂直移动)那么它是:
abs(x1-x2) + abs(y1-y2)
例如,从位置 (1,1) 移动到 (3,4) 意味着向右移动 2 个空格,向上移动 3 个空格,总共 5 个空格。 abs(1-3)+abs(1-4) = 2 + 3 = 5
我相信这是一个简单的数学问题。
当然,您知道起始 x / y 值和结束 x / y 值。要获得两者之间的距离,请执行以下操作:
dist = sqrt(dx^2 + dy^2 )
其中 dx 是点的 x 坐标之间的差异 其中 dy 是点的 y 坐标之间的差异。
所以,例如。假设坐标 A 是 A(15,20),坐标 B 是 B(35,5);
dx = 35 - 15 = 20;dy = 20-5 = 15;
所以;
AB = sqrt(20^2 + 15^2) = 25.0 单位之间的距离。
现在对于您的最终答案,这取决于您的程序中有多少个“步骤”。如果一个步骤是 5 个单位,则 (25/5) 比从 A 点到 B 点需要 5 个步骤。