5
for (int ix = x - r; ix < x + r + 1; ix++) {
    for (int iz = z - r; iz < z + r + 1; iz++) {
        for (int iy = y - r; iy < y + r + 1; iy++) {
                       // if ix,iy,iz = something blah blah (this part isn't needed)
        }                           
    }
}

さて、これが問題です。上記の現在のコードは、x、y、z、およびr(範囲)を取得します。私が設定した特定の条件を満たすまで、「キューブ」を介して参照するのが仕事です。問題は、それが立方体の外側から始まり、基本的に1つのコーナーから別のコーナーに進むという事実にあります。

私は(私のmath / javaは私にatmを好まない)posから始めて、そのpos(pos自体を含む)から立方体の最も外側の境界に達するまで外側にループする方法を探しています。

したがって、すべてに偽の値を指定した場合、x = 5、y = 5、z = 5、r = 2を使用して、コードは5,5,5-4,5,56,5,55,6,5をチェックする必要があります。 5、4、5などは基本的にすべてのものを中心から外側に向かって繰り返します。

このコマンドはFindNearestと呼ばれますが、技術的にはFindFurthestatmのように機能します。

十分な詳細を提供したいと思います。この1時間ほどはイライラするので、誰かがスニペットや作業コードを私に投げてくれるといいのですが。forループの途中でチェックしたり、そのようなランダムなものをチェックしたりする場合は、10個は必要ありません。これを行うためのクリーンな方法を探しています。

4

1 に答える 1

3

次のようにすることで、中心から繰り返すことができます。

for (ix = x, xsign = 1, xstep = 1; 
     (ix >= x - r) && (ix <= x + r);
     ix += xsign * xstep, xsign = -xsign, xstep++)

したがってix、例では5から6、4から7などになります。このようなループをネストするだけで、少なくとも質問を正しく理解していれば、探しているものを取得できます。

于 2012-02-26T01:27:21.180 に答える