トピック
VSYNC 38 NZMKN1038

塗り潰し円のアルゴリズム

について、教えてください。 他のページからCOPYする方法しか分からない…
1そうだね
プレイ済み
返信[1]
親投稿
みむ*mim hidemimtp
GCIRCLEしてGPAINTする詳しいやり方?
0そうだね
プレイ済み
返信[2]
親投稿
VSYNC 38 NZMKN1038
はい
0そうだね
プレイ済み
返信[3]
親投稿
みむ*mim hidemimtp
特にややこしくはないと思いますが、 中心の座標をX,Y、半径をRとすると、 GCIRCLE X,Y,R,#RED などで円を描き、その中を塗るのは、 GPAINT X,Y,#RED でできます。 (知りたいことと違ってたらすみません)
0そうだね
プレイ済み
返信[4]
親投稿
MIKI ifconfig
以前れいさんが作ってましたね。 key=4K33K4A3 https://miiverse.nintendo.net/posts/AYIHAAAEAAArVRTiUNVJZg
0そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
みむさん 既に絵が描いてある所に円の塗りつぶしの話でしょう。
0そうだね
プレイ済み
返信[6]
親投稿
ツララ LongIceSword
三平方の定理を応用して FOR I=-R TO R-1 R1=SQR(POW(R,2)-POW(I+.5,2)) X1=X-R1+.5 X2=X+R1-.5 GLINE X1,Y+I,X2,Y+I,#RED NEXT っていう感じに座標計算する方法ありますけど、アルゴリズムを知りたいってことはこういう事ですか?
0そうだね
プレイ済み
返信[7]
親投稿
おちゃめ ochame_nako
すでに描いている場所へのGCIRCLE、GPAINTによる塗りつぶし円描画であればまずは画面上で使用していない色でGCIRCLEで一旦描画してその未使用色を境界としてGPAINTを行いその後で本来の描画色でGCIRCLEを行えば問題なく描画ができます。
0そうだね
プレイ済み
返信[8]
親投稿
MIKI ifconfig
おちゃめさん その「画面上で使用していない色」はどうやって見つけるんですか?
0そうだね
プレイ済み
返信[9]
親投稿
おちゃめ ochame_nako
円の描画範囲にあるドットをGSPOITで調べて使われてない色を判断するという方法を採るならば別ページに描いてGCOPYで転送する方が簡単だし効率的です。 しかし、例えば「自分で塗りつぶし円を使ったお絵かきソフトを作る」というのであればこの色は使わないという色を決めてそれを境界色に設定することが可能になります。 この方法だとRGB32階調(32768色)のうちどれか1つが使えなくなるという問題がありそうですが、これは普通は使わないARGBが0,0,0,0以外でアルファチャンネル値が0の色を設定すれば問題ありません。 私が作ったお絵かきソフト「PETIT PAINT QSP」はこの方法によってQSPという短さでQSPとしては極めて高品質なペンを60fpsの高速描画で処理することが可能になっています。さらに描画範囲を示すカーソル機能も付けることができました。
0そうだね
プレイ済み
返信[10]
親投稿
VSYNC 38 NZMKN1038
コメント遅くなりました。 皆さん沢山の回答を有難う御座います。 今回は疑似半透明処理が使えるツララさんの 方法を使わさせて頂きます。 エアブラシ的な表現が出来ました!
0そうだね
プレイ済み
返信[11]
親投稿
ツララ LongIceSword
あ、やっぱりGPAINT使わないドット単位で指定する方法が知りたかったのね。 ちなみにG系命令で指定するドットの座標は少数で指定してもエラーにならないけど、小数点以下切り捨ての整数が有効な値になるよ。GPSET .5,.5はGPSET 0,0みたいに。 でも実際に座標を算出する計算では少数使わないと誤差がとんでもないことになるから、ちょっとややこしいですよね。 今回は円だったけど、応用すれば楕円や、多角形も細かい三角形に分割してとかでGLINEとFOR文で走査線描画みたいなこと出来るよ。
0そうだね
プレイ済み
返信[12]
親投稿
おちゃめ ochame_nako
塗り潰し円のアルゴリズムは多数あるのですが自分がやりたいことができるならばどれを使っても良いと思います。 インターネットが存在してなかった昔だったら自力でアルゴリズムを見つけ出すという必要性がありましたが、今だったらネット検索するだけですぐに様々なものが見つかります。 それぞれメリットやデメリットがあります。 比較的短いものを求めているならば三平方の定理を使った方法はオススメですね。
0そうだね
プレイ済み
返信[13]
親投稿
おちゃめ ochame_nako
ツララさんへ 私がプチコンmkII用に作ったポリゴン表示プログラムではGLINEを使った塗りつぶし三角形描画ルーチンを自前で作り実現しました。 プチコン3号ならばGTRIが使えるのでポリゴン表示が楽になりましたね。(速度重視ならばスプライトによる任意三角形描画を行ったポリゴン表示の方が有利ですが)
1そうだね
プレイ済み