ポイントのリストとして表される閉じた 2D ポリゴンからバイナリ ビットマップを作成する必要があります。それを行うための効率的で十分に単純なアルゴリズム、またはもっと良いのは C++ コードを教えてください。
どうもありがとう!
PS: プロジェクトに依存関係を追加することは避けたいと思います。ただし、オープンソースのライブラリを提案していただければ、いつでもコードを参照できるので、それも役立ちます。
ポイントのリストとして表される閉じた 2D ポリゴンからバイナリ ビットマップを作成する必要があります。それを行うための効率的で十分に単純なアルゴリズム、またはもっと良いのは C++ コードを教えてください。
どうもありがとう!
PS: プロジェクトに依存関係を追加することは避けたいと思います。ただし、オープンソースのライブラリを提案していただければ、いつでもコードを参照できるので、それも役立ちます。
あなたが望む魔法のグーグルフレーズは、「非ゼロワインディングルール」または「奇数ポリゴン塗りつぶし」のいずれかです。
次のウィキペディアのエントリを参照してください。
どちらも実装が非常に簡単で、ほとんどの目的に対して十分に高速です。ある程度の工夫をすれば、アンチエイリアスを適用することもできます。
Pygame でポリゴン塗りつぶしルーチンを確認できます。関数を見てくださいdraw_fillpoly
。
アルゴリズムは非常に単純です。各セグメントが Y 軸に沿って交差するすべての位置を見つけます。これらの交点は並べ替えられ、次に交点の各ペアを水平方向に塗りつぶします。
これは複雑で交差する形状を処理しますが、明らかに、大量のセグメントでこのアルゴリズムを押しつぶす可能性があります。
複雑さは O(ピクセル単位の面積)