追加情報:
正方形の内側をアリーナとして使っています。起動時に、正方形がランダムな位置と回転でスポーンし、正方形の属性にアクセスできません。
次に、AIを構築している正方形の中に移動するオブジェクトがあり、アリーナの壁がどこにあるかをオブジェクトに「学習」させたいと思います。オブジェクトが壁にぶつかるたびにタッチリターンが返されるので、オブジェクトがヒットしたかどうかがわかります。これを使用して、オブジェクトが壁に当たった場所のグローバル位置をマッピングして保存します...同じ壁に3回当たった後、アリーナの壁を表すドットの下に数学的に「直線を描きます」 -これで、これらの座標に近づかないようにオブジェクトに指示できます。
3ドットの理由は?オブジェクトが壁の片側に当たった後、壁の別の側に当たった場合、一方の側からもう一方の側に線が引かれ、壁がどこにあるかについて誤ったデータが得られます。
Javaが3つ(またはそれ以上)のドットをインラインで検出した場合、オブジェクトが同じ壁にぶつかったことを認識しています(さらに上かそこら)。
続き:
与えられた座標データで線をマッピングしようとしています。基本的に、私はX座標とY座標を保持する配列を持っており、それらが直線を構成しているかどうかを数学的に検出できるようにしたいと考えています(数ピクセルを与えるか取るか)。(座標は正方形の境界線です)
たとえば、配列は次のようになります。
[x0] [y0]-1,1
[x1] [y1]-2,2
[x2] [y2]-5,5
これは、次のように、正方形の側面に対角線を表示します。
しかし、正方形の片側の1つの座標を取得し、次に別の側の座標を取得する場合があります。これらはすべて混同されます(90度の角度である必要はありません)。したがって、配列を実行して、どの座標が線(または正方形の境界側)を構成するかを検出できるようにしたいのです。
だから今、私は2D配列を持っています:
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つの点の場合は、すべての点が検出されます)...これがボーダーのように見え始めていることに気付きます正方形の?