ラスターベースのペイント プログラムを作成しているとします。私のブラシは楕円形です。ユーザーはマウスをクリックしてからドラッグし、領域をペイントします。これで、pointA (クリックした場所) と pointB (マウス ドラッグから返された最初の点) の 2 つの点ができました。ブラシ領域内にあるすべてのピクセルを塗りつぶしたいと考えています。これを行う最善の方法は何ですか?
私の最初のアプローチは、2 つの点の間の勾配を計算し、次に pointA から pointB までインクリメントすることです。間の各ポイントについて、楕円の範囲内にあるすべてのピクセルを検索し、範囲内にある場合はオンにします。しかし、これは効率が悪いように思われます。なぜなら、ピクセルはしばしば 2 回以上 (ベン図を考えてください) インクリメントが楕円よりもはるかに小さいため、複数回チェックされるからです。
これに対するより良いアプローチはありますか?より効率的で、ピクセルをチェックする必要がある回数を最小限に抑える方法。