160 likes | 421 Vues
OpenGL ライブラリを用いた 3 次元フラクタルの描画. 201 2年3月 1 6日 福永研究室 坂上慎一 . 目 次. 1. OpenGL の概要 2.フラクタルとは・・・ 3. OpenGL へのフラクタルの実装 4.まとめ. 主に3次元 CG の機能を実装するのに用いる。 OS 非保存のマルチプラットホーム対 応で、科学技術における可視化や産 業分野の CAD システムに利用されて いる。. CAD システムとは・・・ コンピューターによる設計支 援ツール. 1. OpenGL の概要( 1/3 ).
E N D
OpenGLライブラリを用いた3次元フラクタルの描画OpenGLライブラリを用いた3次元フラクタルの描画 2012年3月16日 福永研究室 坂上慎一
目 次 • 1.OpenGLの概要 • 2.フラクタルとは・・・ • 3.OpenGLへのフラクタルの実装 • 4.まとめ
主に3次元CGの機能を実装するのに用いる。 OS非保存のマルチプラットホーム対 応で、科学技術における可視化や産 業分野のCADシステムに利用されて いる。 CADシステムとは・・・ コンピューターによる設計支 援ツール 1.OpenGLの概要(1/3)
1.OpenGLの概要(2/3) • ~特長~ • 3次元CGの高度な描画機能を有する。 • 簡潔で分かりやすいコマンド体系を有する。 • 標準C/C++言語の初歩的な知識のみでプログラミングが可能である。
以下の3つのライブラリを用いる OpenGLライブラリ(OpenGL) 点・線・などの描画、色の制御といった基本的な描画機能を備えている。 OpenGLユーティリティライブラリ(GLU) アプリケーション開発に便利な機能を提供する。簡易な投影変換設定、高度なテクスチャ処理などのコマンドを有する。 GLUTライブラリ(GLUT) ウィンドウ管理、入力イベント処理、球体・円柱などの基本立体、OpenGLやGLUを組み合わせた高度な描画を行う。 ※OpenGLには描画機能しかなく、ウィンドウ制御やイベント処理などはOSやウィンドウシステムに依存する。GLUTを併せて利用する事で汎用性の高いアプリケーション開発が可能。 1.OpenGLの概要(3/3)
glColor3f(1.01.01.0); glBegin(GL_LINES); glVertex3f(x1,y1,z1); glVertex3f(x2,y2,z2); glVertex3f(x1,y1,z1); glVertex3f(x3,y3,z3); glVertex3f(x1,y1,z1); glVertex3f(x4,y4,z4); glVertex3f(x2,y2,z2); glVertex3f(x3,y3,z3); glVertex3f(x2,y2,z2); glVertex3f(x4,y4,z4); glVertex3f(x3,y3,z3); glVertex3f(x4,y4,z4); glEnd(); glColor3f(R,G,B) 描画する図形の色の指定 glBegin(図形のタイプ) 図形定義の開始 glVertex3f(x、y、z) 頂点の設定 glEnd() 図形定義の終了 OpenGLライブラリ(OpenGL)を用いてるところ
OpenGLユーティリティライブラリ(GLU)を用いているところ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で作れるのでは・・・ • 最後のまとめとしてプログラムの実演