OpenGLライブラリを用いた3次元フラクタルの描画 2012年3月16日 福永研究室 坂上慎一
目 次 1.OpenGLの概要 2.フラクタルとは・・・ 3.OpenGLへのフラクタルの実装 4.まとめ
1.OpenGLの概要(1/3) 主に3次元CGの機能を実装するのに用いる。 CADシステムとは・・・ コンピューターによる設計支 援ツール OS非保存のマルチプラットホーム対 応で、科学技術における可視化や産 業分野のCADシステムに利用されて いる。 CADシステムとは・・・ コンピューターによる設計支 援ツール
1.OpenGLの概要(2/3) ~特長~ 3次元CGの高度な描画機能を有する。 簡潔で分かりやすいコマンド体系を有する。 標準C/C++言語の初歩的な知識のみでプログラミングが可能である。
1.OpenGLの概要(3/3) 以下の3つのライブラリを用いる OpenGLライブラリ(OpenGL) ※OpenGLには描画機能しかなく、ウィンドウ制御やイベント処理などはOSやウィンドウシステムに依存する。GLUTを併せて利用する事で汎用性の高いアプリケーション開発が可能。 以下の3つのライブラリを用いる OpenGLライブラリ(OpenGL) 点・線・などの描画、色の制御といった基本的な描画機能を備えている。 OpenGLユーティリティライブラリ(GLU) アプリケーション開発に便利な機能を提供する。簡易な投影変換設定、高度なテクスチャ処理などのコマンドを有する。 GLUTライブラリ(GLUT) ウィンドウ管理、入力イベント処理、球体・円柱などの基本立体、OpenGLやGLUを組み合わせた高度な描画を行う。
OpenGLライブラリ(OpenGL)を用いてるところ glColor3f(R,G,B) 描画する図形の色の指定 glBegin(図形のタイプ) 図形定義の開始 glVertex3f(x、y、z) 頂点の設定 glEnd() 図形定義の終了 glColor3f(1.01.01.0); glBegin(GL_LINES); glVertex3f(x1,y1,z1); glVertex3f(x2,y2,z2); glVertex3f(x3,y3,z3); glVertex3f(x4,y4,z4); glEnd();
OpenGLユーティリティライブラリ(GLU)を用いているところ gluPerspective(120.0,1.0,1.0,1000.0); //透視投影 3次元物体をスクリーン座標系に映す方法のひとつ。私たちの視覚系と同様に遠近感が得られるため、現実に近い画像生成ができる。 gluLookAt(ViewPointX+leftright,ViewPointY,ViewPointZ+updown, 0.0+leftright,0.0,0.0+updown , 0.0,0.0,Z); 始点位置と視点方向を表している。視点のx、y、z座標と目標のx、y、z座標とウィンドウに表示される画像の上の方向を示すベクトルとして設定する。
GLUTライブラリ(GLUT)を用いているところ glutInitWindowPosition(0,0); ウィンドウの左上を(0,0)にする。 glutInitWindowSize(500, 500); ウィンドウサイズを500*500に設定する。 glutInitDisplayMode(GLUT_RGBA); 色の指定にRGBAモードを用いる。 glutMouseFunc(mouse); glutKeyboardFunc(keyboard); マウス入力、キーボード入力のコールバック関数
2.フラクタルとは・・・(1/3) フランスの数学者ブノワ・マンデルブロが導入した幾何学の概念。図形の部分と全体が自己相似になっている。 自己相似とは・・・ 図形において、ある図形の断片を取ってきたとき、それより小さな断片の形状と図形全体の形状とが相似である場合を指す。
2.フラクタルとは・・・ (2/3) ~フラクタルの一例~ マンデルブロー集合 シェルピンスキー曲線
2.フラクタルとは・・・ (3/3) ~今回描画したフラクタル図形~ シェルピンスキーのギャスケット 【手順】 1.1辺の長さ1の正三角形の各辺の中点を結ぶと中心部に長さ1/2の正三角形ができる。 2.この長さ1/2の正三角形を切り取る。これによって長さ1/2の正三角形が3個残る。 3.さらにこれら3つの正三角形の各辺の中点を結んで長さ1/4の正三角形が9個残る。 4.同様に手順を繰り返すと、n回目には長さ(1/2)^nの正三角形を切り取り、長さ(1/2)^nの正三角形が3^n個残る。 今回これを3次元で描画した。
3.OpenGLへのフラクタルの実装(1/2) } 再帰処理 正四面体の 描画
3.OpenGLへのフラクタルの実装(2/2) ~キーボード操作~ ↑:視点を上に回転 ↓:視点を下に回転 →:視点を右に回転 ←:視点を左に回転 w:上方向に平行移動 s:右方向に平行移動 z:下方向に平行移動 a:左方向に平行移動 p:縮小 l:拡大 k: 1ステップ進む i:1ステップ戻る
4.まとめと今後の展望 当研究室で行っている画像解析のテスト用のアニメーションをOpenGLで作れるのでは・・・ 最後のまとめとしてプログラムの実演