多角形のアンチエイリアス描画
アンチエイリアスのアルゴリズムというのはどっかに定番があるのだろうか。フォントだろうが図形だろうが、輪郭がギザギザにならないように、境界部分に中間色を配して滑らかに見せるテクニックは普通に用いられているが、ネットで検索してもなかなかその方法を解説した文書は見つからない。
そもそも多角形の内部を塗りつぶす方法は一般に走査線方式が用いられる。上から下まで水平線を走査し、多角形の辺とぶつかったら塗りつぶし開始、もう一度辺とぶつかったら塗りつぶし停止。要するに横に走査していって奇数番目の辺と交差したらピクセルを塗り、偶数版目の線と交差したらやめるというのが用いられる。このため、線が交差するような複雑な図形の場合、内部に塗られない島ができる。
問題となるのは、多角形の辺がピクセルを切断する場合だ。斜めの直線と水平の走査線の交点を整数に丸めてしまうと、1か0にきっちり分かれ、特定のピクセルを完全に塗りつぶすか、全く塗りつぶさないかの二通りになる。
アンチエイリアスを実現するためには、線が切断しているピクセルを、その切断部の大きさに応じた濃さのグレーで塗りつぶす必要がある。その方法として僕が考えたのは次の二通り。


Recent Comments