2001年5月14日更新  関谷トップページへ CG2001 トップページへ  

図形処理・計算処理実習2001 No.4 SLSとGlibwv.hを使ったグラフィックス(3) 立体モデル

2001.5.14 KPC 情報技術科  関谷

0. 前回のレポートを見てのコメント

考察:学習事項のまとめと演習(作図プログラムやデータ)の説明を付けること。

 レポートには、考察として、@学習事項のまとめとA演習での結果の図をどのように作図したかを説明すること。(プログラム名やその内容、実行でのデータなど。)描画した図の中に、それらの説明を加えると,解りやすくなる。(小生が提示しているプログラムでは、出来るだけ、上部に表示するようにしている。)

色の反転について

 Wordなどに直接に画面のPrintScreenでクリップボードにコピーしたものを貼り付けると、印刷時に背景が真っ黒になってしまう。描画した線などが分かりにくい。 そのため、slsの長方形を排他的論理和で塗りつぶす関数rectfillXOR()を最後に呼べば、色の反転をすることが出来る。小生の例題は、すべて、描画した後で、これを呼んでいる。
 しかし、この反転により描画された線分などの色が変わってしまうので、元の色が見たいときには、反転をしないように(コメント)するとよい。

 

1. 3次元座標変換、Glibwv.hとそのビューポート座標系についての補足

3次元座標変換式をベクトルで考える

 3次元座標変換(回転移動)式は、河西の8.4節に解説がある。
 これらの変換式については、変換前のある点(x,y,z)を原点からのベクトルの成分表示と考えると、変換後の成分(x1,y1,z1))は、前のそれぞれの成分ごとの回転による座標を加えることで求まる。これは、三角関数の加法定理を使うものよりも分かりやすい。なお、y軸回りの回転は、2Dでのzx平面の回転に相当する。

Glibwv.hでのビューポート座標系

 河西のGlib.hからの小生の移植では、図8.4での仮想物理座標系(原点をスクリーン左下)を使わず、原点は左上隅として、ビューポートの左下隅と右上隅を指定するようにしている。

ビューポートの効果と自作関数

 ビューポートを変えることで、同じ図形データでの描画処理をしても、表示される大きさを変えることが出来る。前回の3次元処理での例のように、違った処理結果の表示も3ケースは並べて表示できる。

2.河西-8-5 立体モデルの学習

2.1 立体の基本図形とそのデータ

 立体の基本図形で、比較的簡単に作れるものは、錐体、柱体、回転体がある。

 錐体のデータ:底面の各点の座標、頂点の座標
 柱体のデータ:底面の各点の座標、高さ
 回転体のデータ:断面の座標

2.2 河西-回転体モデルの軸測投影

 回転体は、断面の2次元図形を、y軸の回りに回転させることにより生成できる。
 各点のy座標と、y軸からの距離(半径)rがわかっていれば、各点がy軸回りにθ回転(x軸=0としてz軸方向を正とする)したときの座標は、次式で示される。
  x=rcos(θ)
  y=y
  z=rsin(θ)
 この点を回転変換(軸測投影での式)で表示する。それだけでは、複数個の楕円が描けるだけで、とても立体には見えない。そこで、断面を表す直線(稜線)をある回転角度ごとに何箇所かに描くことにする。

2.3 河西-例題60 回転体モデルによる軸測投影プログラム

 ワイングラスのデータを軸測投影する。

・データとして、高さyと半径rを配列で持つ。(データの終わりは、-999とする。)
・Y軸回りの回転の軌跡では、10度ごとに計算する。
・稜線の描画角度は、上の角度の整数倍が望ましい。例では6倍、小生は、2倍としている。
(ある程度小さいほうが、立体のイメージが湧き易いと思う。)
・軸測投影のプログラムと同じで、最初の投影パラメータ(Y軸回りは0)は定数であるが、後の2組はキー入力による。
・3組の回転表示の後、色の反転を行うようにした。

この投影では、中央と右の2つでは、底から見上げているあるいは上から見下ろしているのであるが、同じ図になっている。

回転体モデルによる軸測投影の課題

1)ファイルサーバのIドライブのsekiya\図形処理\ka_ce60.cを各自のホームドライブの科目のフォルダにコピーする。これを各自の名前に編集後、コンパイル・実行して、キーボードから回転のパラメータ(α、β、γ)を与える。
2)Y軸回りの回転角度増分、稜線の描画角度増分などを変えた場合を実験して、考察すること。
3)テキストのp.380にあるような「こま」や「小太鼓」あるいは各自の独自形状データに変えて、表示すること。

2.4 河西-練習問題60  柱体モデルによる軸測投影プログラム

 6点の頂点を持つ多角形データの柱体を軸測投影する。

・データとして、底面の各点の座標と高さyを配列で持つ。(データの終わりは、-999とする。)
・底面の多角形、上面の多角形をそれぞれ描くとともに、その投影座標を配列に持つ。
・稜線の描画は、2つの対応する投影座標を直線で結ぶ。
・軸測投影のプログラムと同じで、最初の投影パラメータは定数であるが、後の2組はキー入力による。
・x軸周りの回転角αにより見える面(上面か底面か)の塗りつぶしを追加した。(回転後の立体の向きを確認しやすいように-2001.5.19)
・x,y,z軸の描画を追加した。(回転後の立体の向きを確認しやすいように)
・3組の回転表示の後、色の反転を行うようにした。

この投影でも、中央の図は、底から見上げているのであるが、その感じが最初はつかめないであろう。

柱体モデルによる軸測投影の課題

1)ファイルサーバから各自のフォルダにコピーし、自分の名前に編集後、コンパイルして、回転のパラメータを与えて実行のこと。
2)各自の独自形状データに変えたり、色を変えたり、その他のパラメータを変えて、表示すること。

2.5 レポートの提出方法

1)WordあるいはFrontPageExpressに、考察、ソースリスト、実行グラフィックス画面を貼り付けたものを「Webページ」の形式(拡張子はhtml)で、各自のMyHomeに、cg_04aなどの名前をつけて保存する。

2)情報系Webサーバの各自のpublic_htmlフォルダにindex.htmlからのハイパーリンクを作って、登録する。その概略は以下のとおり。
 htmlファイルは、WordなどでWebページとして保存する(前述)か、AZUKIなどのhtmlエディタで編集する。そして、各自のホームページindex.htmlから、今回のレポートページへのリンクを張る。それらをWebサーバの各自のホームディレクトリの直ぐ下のpublic_htmlフォルダ(サブディレクトリ)にftpする。

  最初に戻る