画像処理
3日間部屋にこもってフルスクラッチによるグラフィックスプログラミング入門で画像処理を勉強。
色々と画像処理のテクニックが分かってきたのが嬉しい。
カラーキー付き転送やαブレンド、加算合成
これらは理屈は分かっていたけど、やっぱり実際に作ってみてこそ理解できますね。
カラーキーは、指定の色を転送しない。
αブレンドは、既にある色と重ねたい色を按分してブレンドする。
加算合成は、そのまま足しこむ。
ですね。
直線を引く、三角形を塗りつぶす
直線は、指定した2点から、y = ax + bを求めれば簡単に出ますね。
三角形はちょっと面倒で、任意の座標と3つの角それぞれにおけるベクトルとのz方向への外積がプラスであれば、その座標の点をセットする、ということですね。
画像を揺らす、回転する
画像を揺らすには、
X0,Y0:元の画像の座標
X1,Y1:描画先の座標
X1 = X1 + (ずらす幅X + cos(波の数X * (変化幅 + (Y1 / 元の画像高さ * π))))
Y1 = Y1 + (ずらす幅Y + sin(波の数Y * (変化幅 + (X1 / 元の画像幅 * π))))
うーん、これがよく分からない、、。
たぶんサイン波やコサイン波を使っているのではないでしょうか。
回転は、走査方向をsin/cosで回転させるだけですね。
sin/cosはこんな使い方ができたんですねぇ、、。
モザイク
モザイクに指定したサイズの色の平均を求める。
これも簡単。
今まで、ブラックボックスだった画像処理ライブラリの中身が見えてきて、
ヒジョーに面白いですね。
あと、Cのメモリ操作やポインタの使い方も分かってきていい感じ。