[マトリックス変換]OpenGL

マトリックス変換とはポリゴンを移動や回転、縮小拡大する機能です。

マトリックス変換を利用する場合まずglMatrixMode(GL_MODELVIEW)を頭につけます。 次に、マトリックスを初期化します。 その後にどうしたいかの処理を書きます。

移動

glTranslatef()を使います。 [cc lang="c"]

glTranslatef(x方向への移動量、y方向への移動量、z方向への移動量); drawSquare(); [/cc]

回転

glRotatef()を使います。 [cc lang="c"]

glRotatef(回転させる角度、回転させる軸のx値、回転させる軸のy値、回転させる軸の値); drawSquare(); [/cc]

拡大縮小

glScalef()を使います。 [cc lang="c"]

glScalef(X方向の拡大縮小率、Y方向の拡大縮小率、Z方向の拡大縮小率); drawSquare(); [/cc]

マトリックス変換に適用される範囲を指定

glPushMatrix()とglPopMatrix()を使用する。 glPushMatrix()〜glPopMatrix()の中で実行されるマトリックス変換は、その範囲内で有効になります。

[cc lang="c"]

glPushMatrix(); glTranslatef(0.5f,0.5f,0.0f); drawCircle(); glPopMatrix();

[/cc]

移動

X軸方向の移動量 = cos(現在向いている方向)* 速度 Y軸方向の移動量 = sin(現在向いている方向)* 速度

[cc lang="c"]

float theta = targetAngle(角度) / 180.0 * M_PI; targetX = targetX + cos(theta) targetspeed; targetY = targetY * sin(theta) targetspeed;

glTranslatef(targetX, targetY, 0);

[/cc]