【发布时间】:2012-11-24 15:25:13
【问题描述】:
我正在研究一些人工智能,我希望我的 AI 不会遇到给定的坐标,因为这些是墙/边界的参考。
首先,每次我的 AI 撞到墙时,它都会引用那个位置 (x, y)。当它击中同一面墙 3 次时,它会使用线性检查点来“想象”有一堵墙穿过这些坐标。
我现在想阻止我的 AI 再次进入那堵墙。
为了检测我的坐标是否成直线,我使用:
private boolean collinear(double x1, double y1, double x2, double y2, double x3, double y3) {
return (y1 - y2) * (x1 - x3) == (y1 - y3) * (x1 - x2);
}
如果给定的点彼此成线性关系,则返回 true。
所以我的问题是:
如何确定我的机器人是否从当前轨迹接近墙壁?
不是 Java 的“想象”,而是从 1 到 3 的一条线。但是要“想象”一条线一直穿过这些线性坐标,直到无穷大(或接近)。
我感觉这需要一些令人困惑的三角函数?
【问题讨论】:
-
“检查”是什么意思?
-
就墙的位置而言,与我的AI的位置相对。所以如果 AI 正在接近墙壁(线性坐标),我想停止移动,然后转身(但现在,一个简单的 PRINT 就可以了)
-
所以你不是指你的 AI 的位置,你是指你的 AI 的速度,你想知道你的 AI 是否会在它当前的轨迹上撞墙。
-
哦,是的,这对我正在寻找的东西很重要。我只使用职位。如果 AI 位置接近 Wall 位置 - 发出警告。
标签: java trigonometry coordinate-systems game-ai