Yamamoto's Laboratory
OpenGL

ライブラリーのインストール

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 でいろいろと定義してあります。



no counter