SSブログ

ポリゴンレンダラ - その4 [プログラミング]

こないだの退屈な座標変換の計算の続き。とっとと終わらせて次の作業に入りたい。

前回wまわりに回転させて視線の方向ベクトルkw軸の方向の両方を含む平面内にu軸を持ってきた。あとはkuw面内で回転させてdと一致させるが、これはさっきと同じことができて、回転のマトリクスAv(θ)は
0403eq08.png
で、さっきとおなじように
0403eq09.png
ただし、
0403eq11.png
である。

また、これも実は簡単になって
0403eq12.png
だから
0403eq13.png
となる。

これで視線とdとが一致したことになる。

このあとはviewVerticalが上、つまりv=(0,1,0)の方向を向くように回転させる。

これもまったく同じで、viewVerticalの最初のベクトルをqとすると、ふたつの回転を受けた結果
0403eq15.png
となっている。このベクトルのu成分が0でv成分が正になればいい。q′のw成分を0とおいて規格化したベクトルをq0、つまり
0403eq16.png
とすると、まったく同じように
0403eq17.png
として回転のマトリクスAd(ψ)を使えばいい。こんどは簡単にならないので、さっきの一般的な形に書いたのは正解だった。

結局もとの(x,y,z)座標での任意の点a=(ax,ay,az)は
0403eq19.png
として変換される。そしてこれは同次座標でひとつのマトリクスのかけ算で表現できる。

ちなみに、同次座標へは
0403eq20.png
とすればいい。

この後は簡単で、(u,v)平面へは
0403eq22.png
でできる。ただしここでαはunitViewAngleである。最後の射影も含めて同次座標で表現できるので、(x,y,z)から(u,v)の変換は最終的に同次座標のマトリクスのかけ算1回(と同次座標の第4要素による割り算と)で計算できることになる。

ちなみに式-22の同次座標による表現は(ベクトルの縦横を区別せずに書いて)
0403eq23.png
である。

これで3次元のモデル空間から2次元の表示座標に変換することができた。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立04/03献立04/04 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。