クラス fk_SolidBase

ソリッドモデル形状変換クラス [詳細]

fk_SolidBaseに対する継承グラフ
Inheritance graph
[凡例]
fk_SolidBaseのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 fk_SolidBase (void)
 コンストラクタ
 ~fk_SolidBase ()
 デストラクタ
void makeIFSet (int faceNum, int polyNum, int *IFSet, int vertexNum, fk_Vector *posArray, int order=0)
 任意形状生成関数1
void makeIFSet (std::vector< std::vector< int > > *faceArray, std::vector< fk_Vector > *posArray, int order=0)
 任意形状生成関数2

説明

ソリッドモデル形状変換クラス

このクラスは、 fk_Solid クラスのインスタンスにおいて、 インデックスフェースセットによるデータ(以下「IFSデータ」) から形状を生成する機能を提供します。 IFSデータとは、位置ベクトルの配列からなる頂点データと、 頂点IDを格納した面データ集合の2つのデータから成る形状データです。

一般形状を表すクラスとして、 fk_Solid の他に fk_IndexFaceSet クラスがあります。 fk_IndexFaceSet クラスにも fk_IndexFaceSet::makeIFSet() 関数によって、 IFS データから形状を生成することが可能です。 ただし、 fk_IndexFaceSet においては面が3角形か4角形のみ (そして混在は不可)という制限があります。また、生成後の位相変化にも対応していません。 fk_Solid の場合、任意角数の多角形を混在して扱うことが可能であるため、 より表現力が高いと言えます。ただし、 fk_Solidfk_IndexFaceSet と比較して描画速度は若干遅くなる、 メモリ使用量は若干増えるなどのデメリットがあります。

参照:
fk_Solid, fk_IndexFaceSet

コンストラクタとデストラクタ

fk_SolidBase::fk_SolidBase ( void   ) 

コンストラクタ

fk_SolidBase::~fk_SolidBase (  ) 

デストラクタ


関数

void fk_SolidBase::makeIFSet ( int  faceNum,
int  polyNum,
int *  IFSet,
int  vertexNum,
fk_Vector posArray,
int  order = 0 
)

任意形状生成関数1

与えられたIFSデータから、形状を生成します。 この関数形式の場合、全ての面が同じ角数である必要があります。 角数の異なる面が混在する形状を作成したい場合は、 makeIFSet(std::vector< std::vector<int> > *, std::vector<fk_Vector> *, int) を利用して下さい。

引数:
[in] faceNum 面数
[in] polyNum 面の角数。3以上の値を入力できます。
[in] IFSet インデックスフェースセット配列。 この配列は、各面を構成する頂点 ID を並べたものになります。 たとえば、頂点 ID が [0, 1, 2] と [2, 1, 3] という構成を持つ 2面からなる形状を生成する場合、 int 型の配列に対して [0, 1, 2, 2, 1, 3] という数値を入力しておきます。 結果的に、この配列の長さは面数と角数を 掛けたもの以上である必要があります。
[in] vertexNum 頂点数
[in] posArray 頂点位置ベクトルの配列。 配列の長さは頂点数以上である必要があります。
[in] order 最初の頂点IDを補正するオーダー。 通常は省略して問題ありません。
参照:
fk_IndexFaceSet::makeIFSet()
void fk_SolidBase::makeIFSet ( std::vector< std::vector< int > > *  faceArray,
std::vector< fk_Vector > *  posArray,
int  order = 0 
)

任意形状生成関数2

与えられたIFSデータから、形状を生成します。

引数:
[in] faceArray 面データ配列。 IFSet を vector< vector<int> > 型、 polygon を vector<int> 型としたとき、 以下のようにして面データを生成していきます。

    polygon.clear();
    polygon.push_back(頂点ID1);
    polygon.push_back(頂点ID2);
        :
    polygon.push_back(頂点IDn);
    IFSet.push_back(polygon);
[in] posArray 頂点位置ベクトルデータ配列
[in] order 最初の頂点IDを補正するオーダー。 通常は省略して問題ありません。

FineKernelToolKitに対してSat Sep 26 20:35:36 2009に生成されました。  doxygen 1.6.1