• 検索結果がありません。

4 実装仕様

4.6 モデルの描画

4.6.12 ウェッジ

104 // 描画の開始

glBegin(GL_POLYGON);

// 描画の実行

glVertex3d(m_dLengthX, 0, 0);

glVertex3d(m_dLengthX, 0, m_dLengthZ);

glVertex3d(m_dLengthX, m_dLengthY, m_dLengthZ);

glVertex3d(m_dLengthX, m_dLengthY, 0);

// 描画の終了 glEnd();

// 左面 // 描画の開始

glBegin(GL_POLYGON);

// 描画の実行

glVertex3d(0, 0, m_dLengthZ);

glVertex3d(0, 0, 0);

glVertex3d(0, m_dLengthY, 0);

glVertex3d(0, m_dLengthY, m_dLengthZ);

// 描画の終了 glEnd();

また,面要素を持つモデルは,表示方法をワイヤフレームモデルとサーフェスモデルに 切り替えることができる.モデルの表示方法の切り替えにはglPolygonMode関数を使用する.

glPolygonMode関数の定義を次に示す.

void glPolygonMode( GLenum face, GLenum mode )

glPolygonMode関数は2個の引数をとり,戻り値はない.glPolygonMode関数の引数を次

に示す.

引数名 引数名引数名

引数名 型型 型型 引数引数引数引数のののの意味意味意味 意味

face GLenum 多角形の描画面

mode GLenum 描画モード

本システムでは,faceにはGL_FRONT_AND_BACKを設定する.また,modeには,ワイ ヤフレームモデルを描画する場合,GL_LINEを設定し,サーフェスモデルを描画する場合,

GL_FILLを設定する.

105 幾何情報

ウェッジの幾何情報を次に示す.

配置点のx座標 配置点のy座標 配置点のz座標

配置点のx座標 配置点のy座標 配置点のz座標 x

y z x y z

x y

z x y

z

x軸方向への大きさ y軸方向への大きさ

z軸方向への大きさ

x軸方向の短い辺の大きさ> 0

x軸方向への大きさ y軸方向への大きさ

z軸方向への大きさ

x軸方向の短い辺の大きさ= 0

位相情報

本システムでは,ウェッジの位相情報として,頂点,稜線と面に関する情報を保持する.

ウェッジの位相情報を次に示す.

パラメータ パラメータ パラメータ

パラメータ 型型型型 説明説明説明説明

m_hFace Hashtable 面に関する情報

本システムでは,8 個の頂点,12 個の稜線と6 個の面を基にウェッジの位相情報を設定 する.ウェッジの位相情報を次に示す.

106

a b

e f

b c

f g

a d

h

e

a b

d c

f h g

e

d c h g

A C

D B

B E G

F

D I

K L

H

E

A K

C

G J

L

F H I

J

ウェッジの面,稜線と頂点の対応を次に示す.

面番号面番号面番号

面番号 稜線稜線稜線稜線 頂点頂点 頂点頂点

1 A,B,C,D a,b,f,e

2 E,F,G,B b,c,g,f

3 H,I,J,F c,d,h,g

4 K,D,L,I d,a,e,h

5 A,E,H,K a,b,c,d

6 C,G,J,L e,f,g,h

描画方法

本システムでは,モデル空間上においてマウス操作でウェッジを描画する.ウェッジの 描画手順を次に示す.

107

X軸 Y軸

Z軸

①配置点を指定

②長方形の対角を指定

X軸 Y軸

Z軸

③高さを指定

X軸 Y軸

Z軸

④ウェッジを描画

本システムでは,まず,配置点(X ,Y ,Z)をマウス操作で指定する.次に,長方形の対 角線上の点をマウス操作で指定する.そして,ウェッジの高さを表す点(X ,Y ,Z)をマウ ス操作で指定する.最後に,配置点,対角線上の点と高さを表す点からウェッジを描画す る.ただし,配置点と対角線上の点は同一平面上に投影し,高さを表す点は,配置点を通 り,配置点と対角線上の点からなる平面に垂直な平面に投影する.また,ウェッジの描画 の際,ラバーバンド表示を行う.ウェッジのラバーバンド表示では,まず,配置点を指定 後,長方形の対角を指定するまで,マウスの移動を検知し,マウスの3次元座標を算出し,

長方形を描画する.次に,ウェッジの高さを指定するまで,同様にマウスの移動を検知し,

マウスの3次元座標を算出し,ウェッジを描画する.

ウェッジの描画方法として,OpenGL には,ウェッジを描画する関数が用意されていな い.そのため,本システムでは,直方体の描画と同様に 6 個の面を描画することによりウ ェッジを描画する.また,ウェッジにおいても,ワイヤフレームモデルとサーフェスモデ ルに切り替えを可能にする.

108

関連したドキュメント