Akita National College of Technology Yamamoto's Laboratory
ホーム研究内容コンピューター講義ノート学内限定
 
 
C++
OpenGL
グラフ作成
 
 
 
 
 
 

OpenGL

目次

  1. glutのインストール
  2. ウインドウの内容をビットマップファイルへ出力
  3. 2次元波動方程式を差分法で解いて、OpenGLで表示

glutのインストール

RedHatの時代はglutが使われていたが,fedoraではfreeglutとなっている.両方のインストール方法を書いておくが,時代にあわせてfteeglutの方が良いかも・・・

glut

FedoraのパッケージにはGLUTが入っていないので、RedHat9用のGLUTをここから検索してインストールします。

"Search for rpms by name"を選び、"glut"と"glut-devel"でそれぞれ検索して出てくるRedHat9用のrpmをダウンロードします。

そして、端末から

# rpm -ivh --force glut-*.rpm
 

としてインストールします。

freeglut

freeglutのインストール方法は,以下のとおり.

# yum install freeglut-devel
# yum install freeglut
 

ウインドウの内容をビットマップファイルへ出力

OpenGLを使って表示しているウィンドウの内容を、ビットマップファイルに出力するプログラムです。1ピクセルあたり24bitまたは32bitのデータを出力することができます。

画面表示を行った後に、次のようにかきます。

gl_screenshot gs;
gs.screenshot("output.bmp", 24);

screenshot() 関数の第1引数には出力ファイル名を、第2引数には画像1ピクセルあたりのビット数を指定します。

2次元波動方程式を差分法で解いて、OpenGLで表示

2次元波動方程式

を解き、波が動く様子をOpenGLを使って表示します。

アーカイブに含まれているMakefileには、Windowsプログラムを作るように書かれています。 Linuxでコンパイルする場合は、

    CFLAGS = -I/usr/X11R6/include
    LIBS = -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread

のように変更してください。

操作方法

・SPACE : 時間を進めます
・F : X方向を軸に回転します
・G : Y方向を軸に回転します
・C : ズームイン・アウトします
・L : ライトを移動します
・S : スクリーンショットを撮ります
・ESC : プログラムを終了します

プログラムの簡単な説明

diff.cpp、diff.h

差分法で波動方程式を解くクラス(Solver)を記述しています。 コンストラクタでいろいろなパラメータを決定しています。 NTがシミュレート時間の長さ、NXとNYが格子に区切る数です。 また、75行目あたりで初期条件を決めています。

meshdraw.cpp、meshdraw.h

Solverで計算した結果をOpenGLで表示するクラス(MeshDraw)が記述してあります。 142行目あたりの MaterialStruct で、表示する波の材質を決定しています。 これは、materials.cpp でいろいろと定義してあります。