最初に-私はここで超高密度になっていることを知っています。
これで、このアルゴリズムのC#実装を記述しようとしています。
var results = []
for each -N ≤ dx ≤ N:
for each max(-N, -dx-N) ≤ dy ≤ min(N, -dx+N):
var dz = -dx-dy
results.append(cube_add(center, Cube(dx, dy, dz)))
私の問題は、これまでに試したすべての実装で、すばらしい結果が得られたことです。たとえば、以下に示すコードは現在、この結果になります。
この:
私のコードは現在次のようになっています:
for (int x = this.CellPositionX - distance; x <= this.CellPositionX + distance; x++)
{
for (int y = this.CellPositionY - Math.Max(-distance, -x - distance); y <= this.CellPositionY + Math.Min(distance, -x + distance); y++)
{
HexPosition rangePosition = new HexPosition(x, y);
range.Add(rangePosition);
}
}
誰かがここで何かがおかしいのを発見できますか?すべての提案を歓迎します。私はしばらくの間、これに頭をぶつけてきました。
ありがとう!
更新されたメモ:グリッドで軸座標を使用しています。アップデート#2:以下で指摘するように、for..eachループが間違っていて、ワークアウトにデルタを使用していませんでした。助けてくれてありがとう!
私は現在、回答からの実装で以下に示すような問題を抱えています:
私は調査を続けます-もし私がそれを見つけたら、私はここにすべての結果を投稿します。皆さんありがとう!