精密工学科プログラミング基礎 第6回資料 その2 (11/18実施) 今回の授業で追加で習得してほしいこと: • グラフィクスライブラリ(OpenGL)を例にして、 他の人が作った関数ライブラリを使ってみる – ライブラリ中の関数の使い方 – 繰り返し・条件分岐の復習 – 図形を表示して楽しむ 資料のURL : http://lecture.ecc.u-tokyo.ac.jp/~tohtake/ OpenGL とは? • グラフィクス出力のための面倒な計算を 行うための関数ライブラリ • 座標値を渡すだけで絵が描ける データ (0,0) (1,0) (0,1) ディスプレイに 表示 2 OpenGL で描くことができる図形 • 点・線分・多角形 などの基本図形 – glBegin(図形タイプ) で始めて、 glEnd() で閉じる。 – glVertex2d(x,y)で図形を定義する点の座標を指定 • “2d” は 2次元のdouble型という意味 3角形 glBegin(GL_POLYGON); glVertex2d(0,0); glVertex2d(1,0); glVertex2d(0,1); glEnd(); 4角形 glBegin(GL_POLYGON); glVertex2d( 1, 1); glVertex2d(-1, 1); glVertex2d(-1,-1); glVertex2d( 0,-1); glEnd(); 3 描ける図形タイプ 3点を描画 glPointSize(3); glBegin(GL_POINTS); glVertex2d(0,0); glVertex2d(1,0); glVertex2d(0,1); glEnd(); 線分2本を描画 glLineWidth(2.5); glBegin(GL_LINES); glVertex2d(0,0); glVertex2d(1,0); glVertex2d(0,1); glVertex2d(1,1); glEnd(); 描画される点(線分)の 大きさ(太さ)の設定 1本目 2本目 4 色の設定 • glColor3d で、(R, G, B) を指定する • 値は 0.0~1.0 まで glBegin(GL_POINTS); glColor3d(1,0,0); glVertex2d(0,0.5); glColor3d(0,1,0); glVertex2d(0,0); glColor3d(0,0,1); glVertex2d(0.5,0); glEnd(); 5 例: 円を点で描画 • 三角関数で、円周上に100個の点を並べる。 ・・・・ (省略) こ こ を 変 え る と 図 形 が 変 わ る /* 図形描画のためのOpenGLのプログラムをここに書く */ void paint(){ int i; /* 繰り返しのカウンタ */ glPointSize(3.0); /* 点の大きさ (単位はピクセル) */ glColor3d(1, 1, 1); /* 色の設定. 光の3原色(赤, 緑, 青) */ } /* 点で円を描く */ for(i=0; i<100; i++){ double a = 2*3.1415*i/100; /* 角度 */ glBegin(GL_POINTS); glVertex2d(200*cos(a)+250, 200*sin(a)+250); glEnd(); } 中心 (250, 250) ・・・・・ (省略) 半径 200 の円 𝑥 𝑦 ウィンドウサイズは 500 × 500 6 MACでのコンパイル方法 • OpenGL と GLUT というライブラリを使用 gcc -framework OpenGL –framework GLUT sample.c MAC のコンパイルにおいて、 ライブラリを指定するオプションです. メモ : OpenGL : 2D・3Dグラフィックス描画のためのライブラリです. GLUT : ウィンドウを出したりマウスの操作を行うための OpenGL の補助ライブラリです. 7 課題 以下を表示するプログラムを作成せよ。 • 同心円 • 3色のルーレット • 2色のチェック模様 – 3色以上も考えてみよ マウスやキーボードの利用やアニメーションなどもできる。 詳しくは下記のURLなどを参考。 http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html 8
© Copyright 2024 ExpyDoc