2

ディスク内のタイルにアクセスするには、非常に高速なアルゴリズムが必要です。最後に、完璧なディスクは必要ありませんが、非常に高速なアルゴリズムが必要です。

x²+y²<R²境界正方形を使用して、その正方形内のすべてのタイルを反復処理し、タイルがディスク内にあるかどうかを計算して判断できることを知っています。私の場合、毎秒数千の円、つまり数百万のタイルをテストx²+y²<R²する必要があり、数百万のタイルでのテストは遅いため、これは非常に遅くなります。

あまり正確でなくても (= 完璧なディスクでなくても、変形していても) 速いものが必要です

十分に高速であれば、八角形 (塗りつぶされた) でも問題ありません。

4

2 に答える 2

3

x² + y² < R²x² < R² − y²そうx ∈ ( −√(R²−y²); +√(R²−y²))

すべての行で範囲を計算するのに十分な速度だと思います。そうでない場合は、ブレゼンハムのアルゴリズムを使用してさらに高速化します。

于 2012-12-26T15:14:39.520 に答える
0

すべてのタイルを繰り返し処理して、それらが円の領域にあるかどうかをテストする代わりに、実際に円の中にあるタイルに直接移動して、フラグを追加し、必要に応じて処理してみませんか...

八角形を使用する方がおそらくはるかに安価ですが、タイトル/領域の幅が変化するにつれて、八角形の幅の高さと適切な角度を計算する必要があるという問題が発生します。の利点x^2 + y^2は一貫性です。

最後に、極座標を調べることをお勧めします。x = rcos(theta)およびy = r*sin(theta)。とのすべての値を配列に入れるcos(theta)sin(theta)、プログラムは必要な三角関数の計算をスキップし、データの直接テストにジャンプします。クイックグーグル検索は、すべての必要な極座標関係を提供します。

于 2012-12-26T15:17:02.950 に答える