ちょっと塗りつぶしのアルゴリズムで教えてほしいことがあります。
今、円の塗りつぶしを行っています。
例えば、256*256の真っ黒のビットマップに幅1ピクセルの黄色線で描かれた
円があったとします。
それで、その黄色線で書かれた円の中を塗りつぶしたいのです。
で、そこで問題なんですが、
実はその黄色線の所々が1ピクセル途切れててうまく塗りつぶせないんです。
ちなみに、以前までは黄色線の円はちゃんと閉じていたので
再帰処理を行ってうまく中身を塗れてたんですけど・・・。
よろしくお願いします。
質問の意図が見えないのですが...
円の座標(位置・大きさ)が分かれば、
1.円よりも1ピクセルづつ小さい円で塗りつぶす。(円の中に他の図形等がない場合)
2.「点(x, y)が円内であるか」と「色が塗りつぶす対象の色であるか」を判定して塗りつぶす。
の2つの方法が考えられます。
ただ、円を途切れさせずに描画することのほうを優先させるべきでは?
>ちなみに、以前までは黄色線の円はちゃんと閉じていたので
>再帰処理を行ってうまく中身を塗れてたんですけど・・・。
アルゴリズムの勉強のためであれば余計なお世話ですが、
「FloodFill」を使ったほうが早くない?
kazuさん、うまく解決できました。
恥ずかしながら、FloodFillを知りませんでした。こっちを使ったら余裕で早かったです。結果的にアルゴリズムの勉強になったので良かったかな。
四角い枠の中にいくつかの小さい四角い枠があります。小さい枠は障害物と思われてください。その中にねずみがいます。ねずみが動き出したらそこをSと表示、えさを取りにきたところをFと表示、隠れたところをTと表示して3点を線で結ぶ方法を教えて下さい。また動き出したらSが表示され線とFとTが消える方法も知りたいのですがFloodFillでよろしいのですか?教えて下さい。
ツイート | ![]() |