/*THK Analytics用解析タグ*/

GLUTを使わないOpeGL超入門_05【移動・回転】

2023年1月22日

前回までで基本的な描画を行う事ができたと思います。
今回はOpenGLの醍醐味、作成したデータをぐりぐり回転させて見ましょう。

OpenGL回転

glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);

OpenGLで回転を行う為にはglRoatedを使います(floatの場合はglRoatef)
angleは回転角x,y,zは回転軸を示します。
1回で指定する必要は無くサンプルのようにx,yを順次与えても構いません。

OpneGL移動

glTranslated(GLdouble x,GLdouble y,GLdouble z);

平行移動を行う為の関数です。
x,y,zにそれぞれ移動量を設定します。

サンプルコード説明

平行移動

平行移動のパラメータはグローバル変数mov_h,mov_vを用意しています。
windowsのキーダウンメッセージを受け取るとAキーでmov_hの減算、Dキーで加算、Wキーでmov_vの減算、Sキーで加算を行っています。
これらの変数はopengl_view関数内の
glTranslated(mov_h, mov_v, -5);
で利用されています。
z軸に関しては少し離れたところから全体を見るため-5の固定としています。

回転

グローバル変数として回転制御パラメータ、rot_h_rot_vを用意しています。
平行移動同様Winodwsのキーダウンメッセージで変更しています。
回転もopengl_view関数内でY軸、X軸の順で回転を掛けています。
glRotated(rot_h,0,1,0);←Y軸で回転
glRotated(rot_v,1,0,0);←X軸で回転

サンプルコード全文

回転をかけるとこのようにそれぞれの面を見ることが出来ます。

 

OpenGL関連記事一覧

GLUTを使わないOpeGL超入門_01【Visual Studio設定】
GLUTを使わないOpeGL超入門_02【立方体の表示】
GLUTを使わないOpeGL超入門_03【立方体の塗りつぶし】
GLUTを使わないOpeGL超入門_04【ビューポート】
GLUTを使わないOpeGL超入門_05【移動・回転】
GLUTを使わないOpeGL超入門_06【視点移動(球面上をなぞる)】

 

 Visual studio関連書籍