【发布时间】:2011-03-31 03:10:09
【问题描述】:
如何计算网格中从一个字段到另一个字段正交移动的“步数”?
我正在为我正在开发的游戏实现 A* 寻路系统,而这个简单的数学运算阻碍了我的工作。
我可能应该重新上三年级。哈哈。
【问题讨论】:
-
x 距离加 y 距离?我理解正确吗?
标签: c# .net math c#-4.0 mathematical-expressions
如何计算网格中从一个字段到另一个字段正交移动的“步数”?
我正在为我正在开发的游戏实现 A* 寻路系统,而这个简单的数学运算阻碍了我的工作。
我可能应该重新上三年级。哈哈。
【问题讨论】:
标签: c# .net math c#-4.0 mathematical-expressions
如果我理解正确,我认为您只需将必要的 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 个步骤。
【讨论】: