2014/05/28(水) [n年前の日記]
#1 [dxruby][cg_tools] アンチエイリアス有りの直線描画について調べていたり
直線を描く際にアンチエイリアス有りで描きたいなと。
まずは直線を描く際のアルゴリズムについてググってたのだけど。 _ブレゼンハムのアルゴリズム - Wikipedia の中に、
_Xiaolin Wu's line algorithm - Wikipedia, the free encyclopedia に、説明とソースがあったものの、英文なので何がなんだか。とりあえず 1991年頃に発表されたアルゴリズムらしいけど。
_Source code for Xiaolin Wu's line algorithm in C? - Stack Overflow 経由で、以下のページに遭遇。
_Wu Anti-aliased Lines
_Xiaolin Wu's line algorithm - Rosetta Code
_Antialiasing: Wu Algorithm - CodeProject
ソースをコピペして Ruby + DXRuby で描画実験中。しかしちゃんと描画されない。どうもアルファチャンネル値の計算で失敗してる予感。
どのページも英文ページなので、英語がさっぱりな自分にはチンプンカンプンだけど。図を眺めた感じでは、「直線を描く際の1点分は、えてして2ドットにまたがるのだから、2ドットのそれぞれの割合を求めて塗る濃さを変えればいいんじゃね?」てな方法に思えたり。サンプルソース中でも必ず2ドットを1セット扱いで描画しているようだし。
まずは直線を描く際のアルゴリズムについてググってたのだけど。 _ブレゼンハムのアルゴリズム - Wikipedia の中に、
アンチエイリアスをサポートした直線描画アルゴリズム(例えば、Xiaolin Wu's line algorithm)もあるが、という記述を見かけて、ソレは何だろうと興味が湧いて。
_Xiaolin Wu's line algorithm - Wikipedia, the free encyclopedia に、説明とソースがあったものの、英文なので何がなんだか。とりあえず 1991年頃に発表されたアルゴリズムらしいけど。
_Source code for Xiaolin Wu's line algorithm in C? - Stack Overflow 経由で、以下のページに遭遇。
_Wu Anti-aliased Lines
_Xiaolin Wu's line algorithm - Rosetta Code
_Antialiasing: Wu Algorithm - CodeProject
ソースをコピペして Ruby + DXRuby で描画実験中。しかしちゃんと描画されない。どうもアルファチャンネル値の計算で失敗してる予感。
どのページも英文ページなので、英語がさっぱりな自分にはチンプンカンプンだけど。図を眺めた感じでは、「直線を描く際の1点分は、えてして2ドットにまたがるのだから、2ドットのそれぞれの割合を求めて塗る濃さを変えればいいんじゃね?」てな方法に思えたり。サンプルソース中でも必ず2ドットを1セット扱いで描画しているようだし。
◎ 線幅を持った直線の描画についても悩む。 :
事前にブラシ画像を作って、1ドット描く代わりにブラシ画像で描画、てなやり方ならそこそこ速く描画できたけど。もうちょっと速くできないかなと。
線幅を持った直線を、回転した矩形と考えれば、4点を求めて三角形の塗りつぶしでなんとかなるかもしれないなと。試してみたら上手くできた。始点と終点がアレだけど、そこは円で塗り潰してお茶を濁したり。
ただ、この方法だと、アンチエイリアスはかかってないわけで。何かいい手はないかなと。
線幅を持った直線を、回転した矩形と考えれば、4点を求めて三角形の塗りつぶしでなんとかなるかもしれないなと。試してみたら上手くできた。始点と終点がアレだけど、そこは円で塗り潰してお茶を濁したり。
ただ、この方法だと、アンチエイリアスはかかってないわけで。何かいい手はないかなと。
[ ツッコむ ]
#2 [nitijyou] 自転車で買い物に
ホーマック、Seria、ヨークベニマルまで自転車で。犬の糞を取るための袋を購入。犬の鎖も買いたかったのだけど、ヨサゲな長さ・価格のものが見つからず。常時繋いでおくために使うわけじゃなくて、少し場所を変えて繋いでおきたいときに使いたいので、ガッチリしたものじゃなくてもいいのだけど。
[ ツッコむ ]
以上、1 日分です。