GLUTを使わないOpeGL超入門_05【移動・回転】
前回までで基本的な描画を行う事ができたと思います。
今回は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【視点移動(球面上をなぞる)】
ディスカッション
コメント一覧
まだ、コメントがありません