1.2 多面体を生成させるアルゴリズム

 次のページ

 多面体モデルのデータは、幾何学的(geometrical) と位相幾何学的(topological) と二つの制約条件を満足していなければなりません。まず、多面体の各面は、捻れがなく、完全な平面でなければなりません。これは、平面を構成する頂点の座標についての幾何学的条件になります。辺は向きのある線分として定義します。辺の左右に面が接続しますが、面を左に見て反時計回りに回る辺の向きが正しく定義されていなければなりません。この約束は、面の裏表を定義することになるのです。この約束は位相幾何学的な条件です。特殊な形状の多面体モデルのデータを、これらの条件に合うように準備するのは面倒な作業になりますので、あらかじめ単純な形状の材料(primitive) を用意して、これらを組合せて複雑な形状を合成させます。プリミティブを生成するコマンドには、PCUBE をはじめとする幾つかのコマンドが用意されています。プリミティブの形状は、直方体、三角柱(ウエッジ)、円柱、円錐、角柱、角錐、回転体、正多面体、などです。これらのプリミティブ生成用のコマンドは13ほどありますが、基本となるアルゴリズムは3種類です。

 第一のアルゴリズムは、多面体をz軸に垂直な平面で切断して得られる多角形断面が、すべて相似になるような多面体を考えます。データとしては、基本平面図形としてxy平面に投影した多角形と、z軸方向に折れ線関数f(z)を与えて、高さ方向に太い細いの変化をつけます。この条件で多面体を生成するコマンドはPTRUNCです。このコマンドで生成される多面体は、面を構成する頂点がすべて平面内にあるという条件を満足します。回転多面体とは、頂点を正多角形に位置させるという条件で作る多面体で、PREVL の名称のコマンドにまとめてあります。データの準備方法が PTRUNC よりも簡単になっています。円柱・円錐・角柱・角錐などは、z軸方向のデータが高さを与えるだけに簡略化されたコマンドです。特に、コマンドPCUBE は、縦横高さ(x,y,z軸に平行になる辺)の寸法を与えて直方体を生成します。幾何モデルは曲面を滑らかに表わすデータ構造を持っていません。そのため、円柱や円錐は、多角柱や多角錐で代用するのです。円柱と多角柱とは、投影図に描くときに区別します。すなわち、多角柱の稜線を実線で描けばそのまま多角柱を意味し、これを描かないようにすれば円柱を表わすとします。このための情報は稜線になる辺に与えます。

 第二のアルゴリズムは、材料に辺長 2*Rの長さの正四面体を使い、これを平面で切断していく方法です。これはコマンドPHDFC です。この方法では、切断面を面方程式で定義しなければなりませんが、思った通りの面を定義するには、ちょっとした計算が別に必要です。正多面体とその変種を生成するコマンドにPHEDRAが用意されていますが、これは面のデータをプログラム内部に組み込んで PHDFCを応用したものです。

 第三のアスゴリズムは、頂点や面のデータを直接与えて多面体を作らせる方法です。コマンドPHDFL がそうです。頂点の座標値のデータは、頂点番号順に準備します。面はその面を反時計回りに回る向きに頂点番号の並びで与えます。この方法では、データの順番が狂ったり、逆順であったり、データに過不足があったりすると正しい多面体ができませんので、データの準備には注意が必要です。特に、面を構成する頂点座標が幾何学的に一平面内にあるように準備することが大変です。FEMモデルは面をすべて三角形で構成するのはこの平面条件を満足させるためです。多面体のデータをファイルに保存して利用するコマンドはFSSAVE/FSLOADですが、これは第9章で扱います。このときのデータ構造は、PHDFL に要求されるデータ構造とほぼ同じにしてあります。


次のページ