OpenGL による 3Dグラフィックス, イベント処理

目次 解答例(ないかも)

最後の更新は次の時刻以降のはず.Time-stamp: "2003/03/25 Tue 10:23 hig"


課題24_01(ta135)OpenGL による 3Dグラフィックス

サンプル sample3d1.c に加筆して, 下のような(動かない)絵を描こう. 右がx軸の正の方向, 奥がy軸の正の方向,上がz軸の正の方向. 左前が原点(0,0,0) で, 右奥が (4,4,0). 升目は長さ1. 右奥の直方体は, 2002/12/04 の quiz で考えたものと同じ. 細かい寸法指定は, 2002/12/11 の配布物に印刷されている.

カメラ位置, 視野, 照明, 床などはそのままで, 物体を置くところだけ加筆すればよい.

なお, 立方体を置く void glutSolidCube(GLdouble size) に対応する, 原点(0,0,0)を中心とする半径 radius の球を置く関数は

void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);
である. ただし, 実際には, 球は多面体として描かれており, slices は経線の本数, stacks は緯線の本数. これを適当に多くすれば球面に見える.

暇と興味のある人は, gluPerspective, glLookAt, glMaterialf などについての樋口の説明が正しいか, パラメータを変更してチェックいれてみてね.

課題24_02(ta136) OpenGL におけるイベント処理

この課題は 課題23_01 が完成した人向きです.

プログラム epidemic1mouse.c は, 課題23_01 のサンプル プログラム epidemic1.c に加筆して, マウスを左クリックすると, マウスの位置を印字して終了する 機能を付け加えたものである.

課題23_01 の完成した プログラム epidemic1.c に加筆して, 上の終了の機能と, 右クリックするたびにアニメーションのプレイ, ポーズを繰り返す機能を追加しよう.

それには, プレイ中かどうかを表わすグローバル変数 int inanimation を宣言し, 1ならプレイ中, 0 ならポーズ中と考える. 右クリックでその値が切り替わるようにする.

画面表示は行うが n[x][y] の値は変化しないようにすればポーズ中になる.

完成例: ~hig/cs2/cp/epidemic1mouse


Copyright © 2002,2003 Saburo Higuchi. All rights reserved.
Saburo HIGUCHI, hig mail address