1

如何计算网格中从一个字段到另一个字段的“步数”,正交移动?

我正在为我正在开发的游戏实现 A* 寻路系统,而这个简单的数学运算妨碍了我。

我可能应该重新上三年级。哈哈。

4

2 回答 2

3

如果我理解正确,我认为您只需将必要的 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

于 2011-03-30T19:00:54.380 回答
0

我相信这是一个简单的数学问题。

当然,您知道起始 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 个步骤。

于 2011-03-30T19:10:09.163 回答