FineKernelToolKit  2.9.0
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
Public メソッド | すべてのメンバ一覧
クラス fk_SolidBase

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

+ fk_SolidBaseに対する継承グラフ
+ fk_SolidBaseのコラボレーション図

Public メソッド

 fk_SolidBase (void)
 コンストラクタ [詳細]
 
virtual ~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 [詳細]
 
- Public メソッド inherited from fk_Modify
 fk_Modify (fk_DataBase *=(fk_DataBase *) NULL)
 コンストラクタ [詳細]
 
virtual ~fk_Modify ()
 デストラクタ [詳細]
 
fk_LoopremoveVertexInLoop (fk_Vertex *V)
 頂点削除関数 [詳細]
 
bool contractEdge (fk_Edge *E, bool R=true)
 稜線削除関数1 [詳細]
 
bool contractEdge (fk_Edge *E, fk_Vector P, bool R=true)
 稜線削除関数2 [詳細]
 
bool checkContract (fk_Edge *E)
 稜線削除可能判定関数 [詳細]
 
fk_LoopmakePolygon (std::vector< fk_Vector > *array, bool openFlg, bool initFlg=true)
 多角形生成関数1 [詳細]
 
fk_LoopmakePolygon (int num, fk_Vector *array, bool openFlg, bool initFlg=true)
 多角形生成関数2 [詳細]
 
fk_LooppushPolygon (std::vector< fk_Vector > *array, bool openFlg=false)
 多角形追加関数1 [詳細]
 
fk_LooppushPolygon (int num, fk_Vector *array, bool openFlg=false)
 多角形追加関数2 [詳細]
 
void pushPolygonVertex (fk_Vector pos, bool openFlg)
 多角形頂点追加関数 [詳細]
 
void makePoint (std::vector< fk_Vector > *array)
 頂点群生成関数1 [詳細]
 
void makePoint (int num, fk_Vector *array)
 頂点群生成関数2 [詳細]
 
fk_VertexpushPointVertex (fk_Vector pos)
 頂点追加関数 [詳細]
 
void makeLines (std::vector< fk_Vector > *array)
 線分群生成関数1 [詳細]
 
void makeLines (int num, fk_Vector *array)
 線分群生成関数2 [詳細]
 
fk_EdgepushLines (fk_Vector pos1, fk_Vector pos2)
 線分追加関数 [詳細]
 
bool setLinePos (int ID, fk_Vector pos)
 線分頂点移動関数1 [詳細]
 
bool setLinePos (int edgeID, int vertexID, fk_Vector pos)
 線分頂点移動関数2 [詳細]
 
bool changeLine (int edgeID, fk_Vector pos1, fk_Vector pos2)
 線分両端点移動関数 [詳細]
 
void makeBlock (double x, double y, double z)
 直方体生成関数 [詳細]
 
void setBlockSize (double x, double y, double z)
 直方体辺長変更関数 [詳細]
 
void setBlockSize (double length, fk_Axis axis)
 直方体個別辺長設定関数 [詳細]
 
void setBlockScale (double scale)
 直方体全体拡大縮小関数 [詳細]
 
void setBlockScale (double scale, fk_Axis axis)
 直方体軸方向拡大縮小関数 [詳細]
 
void setBlockScale (double x, double y, double z)
 直方体軸方向個別拡大縮小関数 [詳細]
 
void makeCircle (int div, double rad)
 円形状生成関数 [詳細]
 
void setCircleRadius (double rad)
 円形状半径設定関数 [詳細]
 
void setCircleDivide (int div)
 円形状分割数設定関数 [詳細]
 
void setCircleScale (double scale)
 円形状拡大縮小関数 [詳細]
 
void makeSphere (int div, double rad)
 球形状生成関数 [詳細]
 
void setSphereRadius (double rad)
 球形状半径設定関数 [詳細]
 
void setSphereDivide (int div)
 球形状分割数設定関数 [詳細]
 
void setSphereScale (double scale)
 球形状拡大縮小関数 [詳細]
 
void makePrism (int div, double top, double bottom, double height)
 正多角柱(円柱)形状生成関数 [詳細]
 
void setPrismDivide (int div)
 正多角柱(円柱)角数設定関数 [詳細]
 
void setPrismTopRadius (double top)
 正多角柱(円柱)上面半径設定関数 [詳細]
 
void setPrismBottomRadius (double bottom)
 正多角柱(円柱)角数設定関数 [詳細]
 
void setPrismHeight (double height)
 正多角柱(円柱)高さ設定関数 [詳細]
 
void makeCone (int div, double rad, double height)
 正多角錐(円錐)形状生成関数 [詳細]
 
void setConeDivide (int div)
 正多角錐(円錐)角数設定関数 [詳細]
 
void setConeRadius (double rad)
 正多角錐(円錐)底面半径設定関数 [詳細]
 
void setConeHeight (double height)
 正多角錐(円錐)高さ設定関数 [詳細]
 
bool moveVPosition (int vertexID, fk_Vector pos, int order=0)
 頂点移動関数1 [詳細]
 
bool moveVPosition (int vertexID, double x, double y, double z, int order=0)
 頂点移動関数2 [詳細]
 
bool moveVPosition (int vertexID, double *array, int order=0)
 頂点移動関数2 [詳細]
 
- Public メソッド inherited from fk_Operation
 fk_Operation (fk_DataBase *=(fk_DataBase *) NULL)
 コンストラクタ [詳細]
 
virtual ~fk_Operation ()
 デストラクタ [詳細]
 
fk_VertexmakeVertex (const fk_Vector P)
 頂点生成関数 [詳細]
 
bool deleteVertex (fk_Vertex *V)
 頂点削除関数 [詳細]
 
bool moveVertex (fk_Vertex *V, fk_Vector P)
 頂点移動関数 [詳細]
 
fk_EdgemakeEdge (fk_Vertex *V_1, fk_Vertex *V_2, fk_Half *H_11=(fk_Half *) NULL, fk_Half *H_12=(fk_Half *) NULL, fk_Half *H_21=(fk_Half *) NULL, fk_Half *H_22=(fk_Half *) NULL)
 稜線生成関数 [詳細]
 
bool deleteEdge (fk_Edge *E)
 稜線削除関数 [詳細]
 
fk_LoopmakeLoop (fk_Half *H)
 ループ生成関数 [詳細]
 
bool deleteLoop (fk_Loop *L)
 ループ削除関数 [詳細]
 
fk_EdgeseparateLoop (fk_Half *H1, fk_Half *H2)
 ループ分割関数 [詳細]
 
bool uniteLoop (fk_Edge *E)
 ループ結合関数 [詳細]
 
fk_VertexseparateEdge (fk_Edge *E)
 稜線分離関数 [詳細]
 
bool uniteEdge (fk_Vertex *V)
 稜線結合関数 [詳細]
 
void negateBody (void)
 形状反転関数 [詳細]
 
void setHistoryMode (bool mode)
 履歴保存モード設定関数 [詳細]
 
bool getHistoryMode (void)
 履歴保存モード参照関数 [詳細]
 
void setHistoryMark (void)
 履歴マーク設定関数 [詳細]
 
bool undoHistory (void)
 UNDO 操作実行関数 [詳細]
 
bool redoHistory (void)
 REDO 操作実行関数 [詳細]
 
void setTesselateMode (bool mode)
 形状全体テセレーション設定関数 [詳細]
 
bool getTesselateMode (void)
 形状全体テセレーション状態参照関数 [詳細]
 
- Public メソッド inherited from fk_MassProperty
 fk_MassProperty (void)
 
- Public メソッド inherited from fk_DataAccess
 fk_DataAccess (void)
 コンストラクタ [詳細]
 
virtual ~fk_DataAccess ()
 デストラクタ [詳細]
 
bool checkDB (void) const
 データベース設定チェック関数 [詳細]
 
bool checkTopology (void)
 位相状況チェック関数 [詳細]
 
void printTopology (void)
 位相状況出力関数 [詳細]
 
bool existVertex (fk_Vertex *vertex) const
 頂点位相要素存在判定関数1 [詳細]
 
bool existVertex (int ID) const
 頂点位相要素存在判定関数2 [詳細]
 
bool existHalf (fk_Half *half) const
 半稜線位相要素存在判定関数1 [詳細]
 
bool existHalf (int ID) const
 半稜線位相要素存在判定関数2 [詳細]
 
bool existEdge (fk_Edge *edge) const
 稜線位相要素存在判定関数1 [詳細]
 
bool existEdge (int ID) const
 稜線位相要素存在判定関数2 [詳細]
 
bool existLoop (fk_Loop *loop) const
 ループ位相要素存在判定関数1 [詳細]
 
bool existLoop (int ID) const
 ループ位相要素存在判定関数2 [詳細]
 
fk_VertexgetVData (int ID) const
 頂点位相要素参照関数 [詳細]
 
fk_HalfgetHData (int ID) const
 半稜線位相要素参照関数 [詳細]
 
fk_EdgegetEData (int ID) const
 稜線位相要素参照関数 [詳細]
 
fk_LoopgetLData (int ID) const
 ループ位相要素参照関数 [詳細]
 
fk_VertexgetNextV (fk_Vertex *vertex) const
 頂点位相要素逐次参照関数 [詳細]
 
fk_HalfgetNextH (fk_Half *half) const
 半稜線位相要素逐次参照関数 [詳細]
 
fk_EdgegetNextE (fk_Edge *edge) const
 稜線位相要素逐次参照関数 [詳細]
 
fk_LoopgetNextL (fk_Loop *loop) const
 ループ位相要素逐次参照関数 [詳細]
 
fk_VertexgetLastV (void) const
 頂点位相最終要素参照関数 [詳細]
 
fk_HalfgetLastH (void) const
 半稜線位相最終要素参照関数 [詳細]
 
fk_EdgegetLastE (void) const
 稜線位相最終要素参照関数 [詳細]
 
fk_LoopgetLastL (void) const
 ループ位相最終要素参照関数 [詳細]
 
int getVNum (void) const
 頂点数参照関数 [詳細]
 
int getHNum (void) const
 半稜線数参照関数 [詳細]
 
int getENum (void) const
 稜線数参照関数 [詳細]
 
int getLNum (void) const
 ループ数参照関数 [詳細]
 
- Public メソッド inherited from fk_ReferenceL3
std::vector< fk_Vertex * > getAllNeighborVOnV (fk_Vertex *V) const
 全隣接頂点参照関数 [詳細]
 
std::vector< fk_Edge * > getEOnVV (fk_Vertex *V1, fk_Vertex *V2) const
 頂点間稜線参照関数 [詳細]
 
fk_LoopgetOneLOnV (fk_Vertex *V) const
 頂点接続ループ参照関数 [詳細]
 
fk_LoopgetNeighborLOnLE (fk_Loop *L, fk_Edge *E) const
 稜線条件付き隣接ループ参照関数 [詳細]
 
std::vector< fk_Loop * > getAllNeighborLOnL (fk_Loop *L) const
 全隣接ループ参照関数 [詳細]
 
- Public メソッド inherited from fk_ReferenceL2
fk_VertexgetOneNeighborVOnV (fk_Vertex *V) const
 隣接頂点参照関数 [詳細]
 
std::vector< fk_Half * > getAllHOnV (fk_Vertex *V) const
 頂点接続全半稜線参照関数 [詳細]
 
std::vector< fk_Edge * > getAllEOnV (fk_Vertex *V) const
 頂点接続全稜線参照関数 [詳細]
 
std::vector< fk_Loop * > getAllLOnV (fk_Vertex *V) const
 頂点接続全ループ参照関数 [詳細]
 
int getENumOnV (fk_Vertex *V) const
 頂点接続稜線数参照関数 [詳細]
 
std::vector< fk_Vertex * > getAllVOnL (fk_Loop *L) const
 ループ所属全頂点参照関数 [詳細]
 
std::vector< fk_Half * > getAllHOnL (fk_Loop *L) const
 ループ所属全半稜線参照関数 [詳細]
 
std::vector< fk_Edge * > getAllEOnL (fk_Loop *L) const
 ループ所属全稜線参照関数 [詳細]
 
fk_LoopgetOneNeighborLOnL (fk_Loop *L) const
 隣接ループ参照関数 [詳細]
 
fk_LoopgetNeighborLOnLH (fk_Loop *L, fk_Half *H) const
 半稜線条件付き隣接ループ参照関数 [詳細]
 
int getVNumOnL (fk_Loop *L) const
 ループ上頂点数参照関数 [詳細]
 
- Public メソッド inherited from fk_ReferenceL1
fk_HalfgetOneHOnV (fk_Vertex *V) const
 頂点接続半稜線参照関数 [詳細]
 
fk_EdgegetOneEOnV (fk_Vertex *V) const
 頂点接続稜線参照関数 [詳細]
 
fk_VertexgetVOnH (fk_Half *H) const
 半稜線接続頂点参照関数 [詳細]
 
fk_HalfgetMateHOnH (fk_Half *H) const
 対半稜線参照関数 [詳細]
 
fk_EdgegetParentEOnH (fk_Half *H) const
 親稜線参照関数 [詳細]
 
fk_LoopgetParentLOnH (fk_Half *H) const
 親ループ参照関数 [詳細]
 
fk_VertexgetRightVOnE (fk_Edge *E) const
 右側頂点参照関数 [詳細]
 
fk_VertexgetLeftVOnE (fk_Edge *E) const
 左側頂点参照関数 [詳細]
 
fk_HalfgetRightHOnE (fk_Edge *E) const
 右側半稜線参照関数 [詳細]
 
fk_HalfgetLeftHOnE (fk_Edge *E) const
 左側半稜線参照関数 [詳細]
 
fk_LoopgetRightLOnE (fk_Edge *E) const
 右側ループ参照関数 [詳細]
 
fk_LoopgetLeftLOnE (fk_Edge *E) const
 左側ループ参照関数 [詳細]
 
fk_EdgeStatus getEdgeStatus (fk_Edge *E) const
 稜線位相状態参照関数 [詳細]
 
fk_VertexgetOneVOnL (fk_Loop *L) const
 ループ所属頂点参照関数 [詳細]
 
fk_HalfgetOneHOnL (fk_Loop *L) const
 ループ所属半稜線参照関数 [詳細]
 
fk_EdgegetOneEOnL (fk_Loop *L) const
 ループ所属稜線参照関数 [詳細]
 
- Public メソッド inherited from fk_Shape
 fk_Shape (fk_ObjectType=FK_SHAPE)
 コンストラクタ [詳細]
 
virtual ~fk_Shape ()
 デストラクタ [詳細]
 
fk_PalettegetPaletteData (void)
 パレット取得関数 [詳細]
 
void clearMaterial (void)
 パレット初期化関数 [詳細]
 
void setObjMaterialID (int ID)
 オブジェクトマテリアル ID 設定関数 [詳細]
 
void pushPalette (fk_Material &mat)
 マテリアル追加関数 [詳細]
 
void setPalette (fk_Material &mat, int ID)
 マテリアル設定関数 [詳細]
 
void setMaterialMode (fk_MaterialMode mode)
 マテリアルモード設定関数 [詳細]
 
fk_MaterialMode getMaterialMode (void)
 マテリアルモード取得関数 [詳細]
 
int getObjMaterialID (void)
 オブジェクトマテリアル ID 取得関数 [詳細]
 
int getPaletteSize (void)
 パレット中のマテリアル格納数取得関数 [詳細]
 
fk_MaterialgetMaterial (int id)
 マテリアル取得関数 [詳細]
 
std::vector< fk_Material > * getMaterialVector (void)
 マテリアル配列取得関数 [詳細]
 
- Public メソッド inherited from fk_Attribute
 fk_Attribute (void)
 コンストラクタ [詳細]
 
virtual ~fk_Attribute ()
 デストラクタ [詳細]
 
bool setAttrII (const int key, const int value)
 キーが int 型、値が int 型である属性設定関数 [詳細]
 
bool setAttrID (const int key, const double value)
 キーが int 型、値が double 型である属性設定関数 [詳細]
 
bool setAttrIS (const int key, const std::string value)
 キーが int 型、値が string 型である属性設定関数 [詳細]
 
bool setAttrSI (const std::string key, const int value)
 キーが string 型、値が int 型である属性設定関数 [詳細]
 
bool setAttrSD (const std::string key, const double value)
 キーが string 型、値が double 型である属性設定関数 [詳細]
 
bool setAttrSS (const std::string key, const std::string value)
 キーが string 型、値が string 型である属性設定関数 [詳細]
 
int getAttrII (const int key) const
 キーが int 型、値が int 型である属性参照関数 [詳細]
 
double getAttrID (const int key) const
 キーが int 型、値が double 型である属性参照関数 [詳細]
 
std::string getAttrIS (const int key) const
 キーが int 型、値が string 型である属性参照関数 [詳細]
 
int getAttrSI (const std::string key) const
 キーが string 型、値が int 型である属性参照関数 [詳細]
 
double getAttrSD (const std::string key) const
 キーが string 型、値が double 型である属性参照関数 [詳細]
 
std::string getAttrSS (const std::string key) const
 キーが string 型、値が string 型である属性参照関数 [詳細]
 
bool existAttrII (const int key) const
 キーが int 型、値が int 型である属性存在参照関数 [詳細]
 
bool existAttrID (const int key) const
 キーが int 型、値が double 型である属性存在参照関数 [詳細]
 
bool existAttrIS (const int key) const
 キーが int 型、値が string 型である属性存在参照関数 [詳細]
 
bool existAttrSI (const std::string key) const
 キーが string 型、値が int 型である属性存在参照関数 [詳細]
 
bool existAttrSD (const std::string key) const
 キーが string 型、値が double 型である属性存在参照関数 [詳細]
 
bool existAttrSS (const std::string key) const
 キーが string 型、値が string 型である属性存在参照関数 [詳細]
 
bool deleteAttrII (const int key)
 キーが int 型、値が int 型である属性消去関数 [詳細]
 
bool deleteAttrID (const int key)
 キーが int 型、値が double 型である属性消去関数 [詳細]
 
bool deleteAttrIS (const int key)
 キーが int 型、値が string 型である属性消去関数 [詳細]
 
bool deleteAttrSI (const std::string key)
 キーが string 型、値が int 型である属性消去関数 [詳細]
 
bool deleteAttrSD (const std::string key)
 キーが string 型、値が double 型である属性消去関数 [詳細]
 
bool deleteAttrSS (const std::string key)
 キーが string 型、値が string 型である属性消去関数 [詳細]
 
- Public メソッド inherited from fk_BaseObject
 fk_BaseObject (fk_ObjectType type=FK_BASEOBJECT)
 コンストラクタ [詳細]
 
fk_ObjectType getObjectType (void) const
 タイプ取得関数 [詳細]
 

説明

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

このクラスは、 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  )

コンストラクタ

virtual fk_SolidBase::~fk_SolidBase ( )
virtual

デストラクタ

関数

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