ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

ピクセルとピクセルの間の情報

2010年11月14日 19時04分28秒 | ソフト開発日記
あるピクセルをある点を中心に回転させたとき、
回転後の座標は、計算上はピクセルとピクセルの間になってしまうことが多い。

回転後の浮動小数点数の座標情報を利用し、
ピクセルに占める面積比を考えることで
より高度なシミュレーションを行いたいので、そのメモ。

回転後の計算上の座標を(x, y)とする。
回転後の座標が、4つのピクセルをまたいでいるとき

①左上のピクセル ②右上のピクセル
③左下のピクセル ④右下のピクセル

とすると、ピクセルの座標は

①(floor(x), ceil(y))
②(ceil(x), cail(y))
③(floor(x), floor(y))
④(ceil(x), floor(y))

で表される(floorは切捨て、ceilは切上げ)。
ここで、回転後の浮動小数点座標が各ピクセルに対して占めている面積を計算し
回転前のピクセル固有のデータを、回転後4つのピクセルに面積比を乗じて振り分けることで
より正確なデータの回転が行える。

乗じる値はそれぞれ、

① {ceil(x) - x} * {y - floor(y)}
② {x - floor(x)} * {y - floor(y)}
③ {ceil(x) - x} * {ceil(y) - y}
④ {x - floor(x)} * {ceil(y) - y}

である。このとき各値の和は必ず1となり、
座標やピクセルを占める面積比によってデータが大小することはない。と思う。

・・・思っていることを文章にするのは難しい。
1か月後の自分はこの文章を読んで理解できるだろうか。