Closed. This question needs to be more focused. It is not currently accepting answers. Learn more。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
我正在寻找一种有效的方法来检查一个物体是否会从A点切角到B点,或者如果物体之间有一个对角线不可接近的位置,则防止物体从A点移动到B点。
已知情况:
每个点都是宽度和高度的平方1
每个点都有8个相邻点的列表
点可以是可行走的或不可行走的
下面是一些例子(a
是来源,b
是目的地,X
是不可接近的点):
aX
b
在上述情况下,
a
无法行走,因为在点a
和点b
附近都有一个不可行走的点。因此,在当前情况下,b
从a
变为不可行走(即,a
必须向下移动才能继续b
)以下是一个类似的情况,即
a
无法步行到b
:aX
Xb
我现在做的方法是得到点
A
和点B
的正交相邻点集,并将这两个点集相交如果相交结果中没有元素,则点A
可以移动到点B
。…而且很有效。
但是,有没有一种,也许,更数学和更有效的方法来实现这一点呢?
最佳答案
我假设你只对b是a'a邻居的情况感兴趣,然后只对对角相邻的情况感兴趣那就是
if ((abs(a.x - b.x) == 1) && (abs(a.y - b.y) == 1))
在这种情况下,我们只需要检查两个点相邻的两个点。
if ((abs(a.x - b.x) == 1) && (abs(a.y - b.y) == 1)) {
if (blocked(a.x, b.y) || blocked(b.x, a.y)) {
// unwalkable
} else {
// walkable
}
}
当然可以合并if语句。
关于algorithm - 确定点A是否需要拐弯才能到达点B ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3439313/
10-12 18:36