添加信息:
我正在使用广场的内部作为竞技场。启动时,方块在随机位置和旋转中生成,我无法访问任何方块属性。
然后我在广场内有一个移动的物体,我正在为它构建人工智能,我希望这个物体“了解”竞技场墙壁的位置。每次物体撞到墙上时,我都会得到一个触摸返回,所以我知道它是否击中。我正在使用它来映射物体撞击墙壁的全局位置并保存它......在同一面墙上击中 3 次后,我想在数学上“画一条直线”沿着那些代表竞技场墙壁的点- 有了这个,我可以告诉我的对象不要靠近这些坐标。
3个点的原因?好吧,如果物体撞到墙的一侧,然后撞到墙的另一侧,我会从一侧到另一侧画一条线,给出关于墙在哪里的错误数据。
如果 Java 看到三个(或更多)内联点,它就知道该对象撞到了同一堵墙上(或者更远一些)。
继续:
我正在尝试使用给定的坐标数据绘制线条。基本上我有一个包含 X 和 Y 坐标的数组,我希望能够在数学上检测它们是否构成一条直线(给定或取几个像素)。(坐标是正方形的边界)
例如,数组可能是这样的:
[x0][y0] - 1,1
[x1][y1] - 2,2
[x2][y2] - 5,5
这将呈现正方形一侧的对角线,如下所示:
但有时我可能会得到正方形一侧的一个坐标,然后是另一侧的坐标,所有这些都混合在一起(也不一定是 90 度角!)。所以我希望能够遍历数组,并检测什么坐标构成一条线(或正方形的边界边),如下所示:
所以现在,我有一个二维数组:
private double wallLocations[][] = new double[10][10];
和一个不起作用的while循环。我什至不知道从哪里开始:
for(int r = 0; r < wallIndex; r++){
for(int c = 0; c < wallIndex; c++){
int index = 0;
if(wallLocations[r][index] == wallLocations[r][c] && wallLocations[r][index + 1] == wallLocations[r][c] &&
wallLocations[r][index + 2] == wallLocations[r][c]){
System.out.println("***** Wall Here! *****");
index++;
}
}
}
- - 更新 - -
这是我正在寻找的一个更好的例子。红点代表进入的坐标,当 3 个或更多点排列时检测到一条线(如果是 2 个点,那么它会检测到任何一个点)......你注意到这开始看起来像边界一个正方形?