2次元座標の平行移動・拡大・回転
GrWinを使ったグラフィックスの理解の第2ステップとして、座標の平行移動・拡大縮小・回転 について解説を行う。
// 平行移動 // 授業では行列表記も説明したけど、 X = x + x0 ; // blogでmimetexを使って行列はつらい... Y = y + y0 ; // 拡大縮小 X = k * x ; Y = k * y ; // 回転 X = x cosθ - y sinθ ; Y = x sinθ + y cosθ ;
これに加えて、これらの変換を1つの行列で表現するアフィン変換の式も示しておいた。
[ X ] [ a11 a12 a13 ] [ x ] [ Y ] = [ a21 a22 a23 ] × [ y ] [ 1 ] [ a31 a32 a33 ] [ 1 ]
また、このプログラムを書くにあたり、座標を構造体struct XY{ float x,y ; } で扱う場合や、 サイズ2の配列で扱う方法について説明し、変換用関数を作る際に、関数配列渡しや 構造体ポインタ渡しなどの違いを解説する。
グラフィックス2次元演習課題
ここまでの2次元の移動・拡大・回転をしていることが解るプログラムを作成し、 レポートとして作成する。授業後半で3次元グラフィックスの課題を出すことから、 レポートでは、プログラムリストと実行結果と簡単な説明でいい。
表示するための図は、関数グラフでもいいし、座標列を定数で与えた図形でも良い。