2011年5月20日金曜日

2次元グラフィックライブラリを作る的なはなし(3)

単純に横方向へスキャンするときの欠点。

横方向へスキャンをして、面積比でアルファチャンネルを決定するだけでも、
垂直に近い辺に関しては、結構キレイに表示できます。

元の線は、こんな感じですかねー。

しかしこのやりかただけでは、大きな欠点がありますね。
それは、水平に近いせんの場合です。

こんな場合ですね。


の部分が、ガタガタです。ね 


本当はこうしたいところなのです

単純なスキャンだけではすまなそうですね。
はい、ダメですね。
じゃぁ、どうしましょうねー。
どこに書いてあったってわけじゃぁないんですけど、私はこう考えました。

ずいぶん前に紹介した絶版の本、
によると、1ピクセルを、さらに細かくスキャンする方法、
例としては、4回スキャンして足し合わせるようなことが紹介されていました。
しかしそれでは、グラデっぽく表示されるピクセルが4ドットを超える場合に、
やっぱり、多少ガタガタしてきますね。
だからといって、数十回やればいいかっていう、交点を求めるコストを考えると、
それはやりすぎです。

ということで、1ピクセルの中で交点を、2点求め、直線補完をします。

今度はピクセルの中間ではなく、1ピクセルのはじまり近くと終わり近くの
2つの位置でスキャンし、交点を2つ求めます。
それが、A,Bですね。

そうしたら、下図のように色わけした部分(青・黄)部分の面積比(↓図のCに対する面積比)で、
アルファチャンネルを決定します。


こんな程度でも、結構、イイ感じになります。

まぁ、これはこれで問題があるにはあるんですけどね。^^;^^;




0 件のコメント:

コメントを投稿