# クラス fk_SolidBase

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

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

すべてのメンバ一覧

## 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_Solid は fk_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を補正するオーダー。 通常は省略して問題ありません。