1. 座標変換
形状データ
形状データは、基準となる座標系の頂点データの集まりであります。描画する際は、線で結んだり、面単位で塗りつぶしたりします。
観測者からみた、基準座標
実際に描画する際には、観測者から形状データの座標系が、どのように見えるかを知る必要があります。
遠近法
遠近法(透視変換)を用いる場合は、x座標とy座標を奥行きのz座標で割ることで求めることができます。ここでは計算が簡単になるよう、左右の座標の範囲(x座標)を-0.5から0.5の範囲を描画することにします。ちなみに視野角は60度になります。あまり、視野角を広くすると、画面の端が歪んで見えてしまいます。
座標系の回転
形状を回転させる場合は、頂点データを全て計算し直すことはせず、形状データの座標系だけを回転させます。簡単のために2次元で考えると、x座標がy座標にも、y座標がx座標にも影響を与えることになります。
回転の際の、他の軸への影響
ここで、高校数学の三角関数、sinとcosの出番です。座標系をt度、回転させると、x座標は、自身の座標はcos(t)に、y軸にはsin(t)と影響を与えます。y座標は、自身の座標はcos(t)に、x軸には-sin(t)と影響を与えます。y軸はx軸のマイナス側に向かって回転するため、このような結果になります。
スライダダイアログ
ここで扱うサンプルプログラムの多くは、ダイアログボックス内のスライダでパラメータを調整します。またスライダ自身も改良して使います。
行列
行列とは座標軸の集まりのようなものです。2次元では、座標系のX軸とY軸のベクトルの2つを持ちます。座標の頂点位置をvとすると回転を加味した位置は次のように求まります。
行列の演算
行列同士を掛け算することで、回転を合成したり、拡大・縮小と組み合わせることもできます。回転行列をM1、拡大行列をM2として、拡大を施した後に回転させる場合を考えます。拡大はx成分を2倍、y成分を3倍することにします。
トランスフォーム
行列で座標系の向き(姿勢)を表現できました。さらに座標系の原点位置を記録できるようにして、トランスフォームと呼ぶことにします。座標系の行列情報をM、原点情報をpとすると、トランスフォームを加味した頂点位置は次のように求まります。