2001年5月12日更新(プログラム例と図)  関谷トップページへ CGトップページへ   作者へのメッセージ

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

2000.5.10 KPC 情報技術科  関谷

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

作図プログラムやデータの説明を付けること。

 レポートには、結果の図をどのように作図したかを説明して欲しい。(プログラム名やその内容、実行でのデータなど。)
小生が提示しているプログラムでは、出来るだけ、上部に表示するように追加したので、サーバから、再度、コピーすると良い。(但し、各自が改造したプログラムは、名前を変えてから、コピーすること。)

色の反転について

 Wordなどに直接に画面のPrintScreen(クリップボード)を貼り付けると、印刷時に背景が真っ黒になってしまう。描画した線などが分かりにくい。 そのため、slsの長方形を排他的論理和で塗りつぶす関数rectfillXOR()を最後に呼べば、色の反転をすることが出来る。そこで、ファイル・サーバのslsを使ったC言語のプログラムは、すべて、この方法に変更したものをコピーしている。

 

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

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

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

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

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

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

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

2.5 レポートの提出方法

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

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

 

注) Webページの作り方については、関谷のWebページの「個人ホームページの作成と更新」のページを参照のこと。(Webサーバの再構築が完了した。)
(なお、ローカルのホームページフォルダは、c:\でなく、各自のサーバのホーム(H:)ドライブに作る方が望ましい。)
 作業としては、public_htmlフォルダのindex_htmlファイルの変更−今回のページに対するリンクを作る−が必要になる。

最初に戻る