FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK_CLI::fk_SolidBase クラス

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

#include <CLI/FK_CLI/include/SolidBase_CLI.h>

+ FK_CLI::fk_SolidBase の継承関係図
+ FK_CLI::fk_SolidBase 連携図

公開メンバ関数

void MakeIFSet (int faceNum, int polyNum, IEnumerable< int >^ IFSet, int vertexNum, IEnumerable< fk_Vector^>^ posArray, int order)
 任意形状生成メソッド1-1
 
void MakeIFSet (int faceNum, int polyNum, IEnumerable< int >^ IFSet, int vertexNum, IEnumerable< fk_Vector^>^ posArray)
 任意形状生成メソッド1-2
 
void MakeIFSet (IEnumerable< IEnumerable< int >^ >^ faceArray, IEnumerable< fk_Vector^>^ posArray, int order)
 任意形状生成メソッド2-1
 
void MakeIFSet (IEnumerable< IEnumerable< int >^ >^ faceArray, IEnumerable< fk_Vector^>^ posArray)
 任意形状生成メソッド2-2
 
- 基底クラス FK_CLI::fk_Modify に属する継承公開メンバ関数
fk_LoopRemoveVertexInLoop (fk_Vertex ^ V)
 頂点削除メソッド
 
bool ContractEdge (fk_Edge ^ E, bool R)
 稜線削除メソッド1-1
 
bool ContractEdge (fk_Edge ^ E)
 稜線削除メソッド1-2
 
bool ContractEdge (fk_Edge ^ E, fk_Vector ^ P, bool R)
 稜線削除メソッド2-1
 
bool ContractEdge (fk_Edge ^ E, fk_Vector ^ P)
 稜線削除メソッド2-2
 
bool CheckContract (fk_Edge ^ E)
 稜線削除可能判定メソッド
 
fk_LoopMakePolygon (IEnumerable< fk_Vector^>^ array, bool openFlg, bool initFlg)
 多角形生成メソッド1
 
fk_LoopMakePolygon (IEnumerable< fk_Vector^>^ array, bool openFlg)
 多角形生成メソッド2
 
fk_LoopPushPolygon (IEnumerable< fk_Vector^>^ array, bool openFlg)
 多角形追加メソッド1
 
fk_LoopPushPolygon (IEnumerable< fk_Vector^>^ array)
 多角形追加メソッド2
 
void PushPolygonVertex (fk_Vector ^ pos, bool openFlg)
 多角形頂点追加メソッド
 
void MakePoint (IEnumerable< fk_Vector^>^ array)
 頂点群生成メソッド
 
fk_VertexPushPointVertex (fk_Vector ^ pos)
 頂点追加メソッド
 
void MakeLines (IEnumerable< fk_Vector^>^ array)
 線分群生成メソッド
 
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)
 頂点移動メソッド1-1
 
bool MoveVPosition (int vertexID, fk_Vector ^ pos)
 頂点移動メソッド1-2
 
bool MoveVPosition (int vertexID, double x, double y, double z, int order)
 頂点移動メソッド2-1
 
bool MoveVPosition (int vertexID, double x, double y, double z)
 頂点移動メソッド2-2
 
void SubDivShape (int count)
 細分割曲面生成メソッド
 
- 基底クラス FK_CLI::fk_Operation に属する継承公開メンバ関数
fk_VertexMakeVertex (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^ H_12, fk_Half^ H_21, fk_Half^ H_22)
 稜線生成メソッド1
 
fk_EdgeMakeEdge (fk_Vertex^ V_1, fk_Vertex^ V_2)
 稜線生成メソッド2
 
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 SetHistoryMark (void)
 履歴マーク設定メソッド
 
bool UndoHistory (void)
 UNDO 操作実行メソッド
 
bool RedoHistory (void)
 REDO 操作実行メソッド
 
- 基底クラス FK_CLI::fk_DataAccess に属する継承公開メンバ関数
bool CheckDB (void)
 データベース設定チェックメソッド
 
bool CheckTopology (void)
 位相状況チェックメソッド
 
bool ExistVertex (fk_Vertex^ vertex)
 頂点位相要素存在判定メソッド1
 
bool ExistVertex (int ID)
 頂点位相要素存在判定メソッド2
 
bool ExistHalf (fk_Half^ half)
 半稜線位相要素存在判定メソッド1
 
bool ExistHalf (int ID)
 半稜線位相要素存在判定メソッド2
 
bool ExistEdge (fk_Edge^ edge)
 稜線位相要素存在判定メソッド1
 
bool ExistEdge (int ID)
 稜線位相要素存在判定メソッド2
 
bool ExistLoop (fk_Loop^ loop)
 ループ位相要素存在判定メソッド1
 
bool ExistLoop (int ID)
 ループ位相要素存在判定メソッド2
 
fk_VertexGetVData (int ID)
 頂点位相要素参照メソッド
 
fk_HalfGetHData (int ID)
 半稜線位相要素参照メソッド
 
fk_EdgeGetEData (int ID)
 稜線位相要素参照メソッド
 
fk_LoopGetLData (int ID)
 ループ位相要素参照メソッド
 
fk_VertexGetNextV (fk_Vertex^ vertex)
 頂点位相要素逐次参照メソッド
 
fk_HalfGetNextH (fk_Half^ half)
 半稜線位相要素逐次参照メソッド
 
fk_EdgeGetNextE (fk_Edge^ edge)
 稜線位相要素逐次参照メソッド
 
fk_LoopGetNextL (fk_Loop^ loop)
 ループ位相要素逐次参照メソッド
 
fk_VertexGetLastV (void)
 頂点位相最終要素参照メソッド
 
fk_HalfGetLastH (void)
 半稜線位相最終要素参照メソッド
 
fk_EdgeGetLastE (void)
 稜線位相最終要素参照メソッド
 
fk_LoopGetLastL (void)
 ループ位相最終要素参照メソッド
 
cli::array< fk_Vertex^> ^ GetVertexArray (void)
 頂点コンテナ取得メソッド
 
cli::array< fk_Half^> ^ GetHalfArray (void)
 半稜線コンテナ取得メソッド
 
cli::array< fk_Edge^> ^ GetEdgeArray (void)
 稜線コンテナ取得メソッド
 
cli::array< fk_Loop^> ^ GetLoopArray (void)
 ループコンテナ取得メソッド
 
- 基底クラス FK_CLI::fk_Reference に属する継承公開メンバ関数
fk_HalfGetOneHOnV (fk_Vertex^ V)
 頂点接続半稜線参照メソッド
 
fk_EdgeGetOneEOnV (fk_Vertex^ V)
 頂点接続稜線参照メソッド
 
fk_VertexGetOneNeighborVOnV (fk_Vertex^ V)
 隣接頂点参照メソッド
 
cli::array< fk_Half^> ^ GetAllHOnV (fk_Vertex^ V)
 頂点接続全半稜線参照メソッド
 
cli::array< fk_Edge^> ^ GetAllEOnV (fk_Vertex^ V)
 頂点接続全稜線参照メソッド
 
cli::array< fk_Loop^> ^ GetAllLOnV (fk_Vertex^ V)
 頂点接続全ループ参照メソッド
 
int GetENumOnV (fk_Vertex^ V)
 頂点接続稜線数参照メソッド
 
cli::array< fk_Vertex^> ^ GetAllNeighborVOnV (fk_Vertex^ V)
 全隣接頂点参照メソッド
 
cli::array< fk_Edge^> ^ GetEOnVV (fk_Vertex^ V1, fk_Vertex^ V2)
 頂点間稜線参照メソッド
 
fk_LoopGetOneLOnV (fk_Vertex^ V)
 頂点接続ループ参照メソッド
 
fk_VertexGetVOnH (fk_Half^ H)
 半稜線接続頂点参照メソッド
 
fk_HalfGetMateHOnH (fk_Half^ H)
 対半稜線参照メソッド
 
fk_EdgeGetParentEOnH (fk_Half^ H)
 親稜線参照メソッド
 
fk_LoopGetParentLOnH (fk_Half^ H)
 親ループ参照メソッド
 
fk_VertexGetRightVOnE (fk_Edge^ E)
 右側頂点参照メソッド
 
fk_VertexGetLeftVOnE (fk_Edge^ E)
 左側頂点参照メソッド
 
fk_HalfGetRightHOnE (fk_Edge^ E)
 右側半稜線参照メソッド
 
fk_HalfGetLeftHOnE (fk_Edge^ E)
 左側半稜線参照メソッド
 
fk_LoopGetRightLOnE (fk_Edge^ E)
 右側ループ参照メソッド
 
fk_LoopGetLeftLOnE (fk_Edge^ E)
 左側ループ参照メソッド
 
fk_EdgeStatus GetEdgeStatus (fk_Edge^ E)
 稜線位相状態参照メソッド
 
fk_VertexGetOneVOnL (fk_Loop^ L)
 ループ所属頂点参照メソッド
 
fk_HalfGetOneHOnL (fk_Loop^ L)
 ループ所属半稜線参照メソッド
 
fk_EdgeGetOneEOnL (fk_Loop^ L)
 ループ所属稜線参照メソッド
 
cli::array< fk_Vertex^> ^ GetAllVOnL (fk_Loop^ L)
 ループ所属全頂点参照メソッド
 
cli::array< fk_Half^> ^ GetAllHOnL (fk_Loop^ L)
 ループ所属全半稜線参照メソッド
 
cli::array< fk_Edge^> ^ GetAllEOnL (fk_Loop^ L)
 ループ所属全稜線参照メソッド
 
fk_LoopGetOneNeighborLOnL (fk_Loop^ L)
 隣接ループ参照メソッド
 
fk_LoopGetNeighborLOnLH (fk_Loop^ L, fk_Half^ H)
 半稜線条件付き隣接ループ参照メソッド
 
int GetVNumOnL (fk_Loop^ L)
 ループ上頂点数参照メソッド
 
fk_LoopGetNeighborLOnLE (fk_Loop^ L, fk_Edge^ E)
 稜線条件付き隣接ループ参照メソッド
 
cli::array< fk_Loop^> ^ GetAllNeighborLOnL (fk_Loop^ L)
 全隣接ループ参照メソッド
 
- 基底クラス FK_CLI::fk_Shape に属する継承公開メンバ関数
void SetShaderAttribute (String^ name, int dim, IEnumerable< int >^ array)
 シェーダー内 attribute 変数設定メソッド1
 
void SetShaderAttribute (String^ name, int dim, IEnumerable< float >^ array)
 シェーダー内 attribute 変数設定メソッド2
 
void SetShaderAttribute (String^ name, int dim, IEnumerable< double >^ array)
 シェーダー内 attribute 変数設定メソッド3
 
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_Vector^>^ array)
 シェーダー内 attribute 変数設定メソッド4
 
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_TexCoord^>^ array)
 シェーダー内 attribute 変数設定メソッド5
 
void SetShaderAttribute (String^ name, int dim, IEnumerable< fk_HVector^>^ array)
 シェーダー内 attribute 変数設定メソッド6
 
- 基底クラス FK_CLI::fk_Attribute に属する継承公開メンバ関数
bool SetAttrII (int key, int value)
 キーが int 型、値が int 型である属性設定メソッド
 
bool SetAttrID (int key, double value)
 キーが int 型、値が double 型である属性設定メソッド
 
bool SetAttrIS (int key, String^ value)
 キーが int 型、値が String 型である属性設定メソッド
 
bool SetAttrSI (String^ key, int value)
 キーが String 型、値が int 型である属性設定メソッド
 
bool SetAttrSD (String^ key, double value)
 キーが String 型、値が double 型である属性設定メソッド
 
bool SetAttrSS (String ^ key, String^ value)
 キーが String 型、値が String 型である属性設定メソッド
 
int GetAttrII (int key)
 キーが int 型、値が int 型である属性参照メソッド
 
double GetAttrID (int key)
 キーが int 型、値が double 型である属性参照メソッド
 
String ^ GetAttrIS (int key)
 キーが int 型、値が String 型である属性参照メソッド
 
int GetAttrSI (String^ key)
 キーが String 型、値が int 型である属性参照メソッド
 
double GetAttrSD (String^ key)
 キーが String 型、値が double 型である属性参照メソッド
 
String ^ GetAttrSS (String^ key)
 キーが String 型、値が String 型である属性参照メソッド
 
bool ExistAttrII (int key)
 キーが int 型、値が int 型である属性存在参照メソッド
 
bool ExistAttrID (int key)
 キーが int 型、値が double 型である属性存在参照メソッド
 
bool ExistAttrIS (int key)
 キーが int 型、値が String 型である属性存在参照メソッド
 
bool ExistAttrSI (String^ key)
 キーが String 型、値が int 型である属性存在参照メソッド
 
bool ExistAttrSD (String^ key)
 キーが String 型、値が double 型である属性存在参照メソッド
 
bool ExistAttrSS (String^ key)
 キーが String 型、値が String 型である属性存在参照メソッド
 
bool DeleteAttrII (int key)
 キーが int 型、値が int 型である属性消去メソッド
 
bool DeleteAttrID (int key)
 キーが int 型、値が double 型である属性消去メソッド
 
bool DeleteAttrIS (int key)
 キーが int 型、値が String 型である属性消去メソッド
 
bool DeleteAttrSI (String^ key)
 キーが String 型、値が int 型である属性消去メソッド
 
bool DeleteAttrSD (String^ key)
 キーが String 型、値が double 型である属性消去メソッド
 
bool DeleteAttrSS (String^ key)
 キーが String 型、値が String 型である属性消去メソッド
 

その他の継承メンバ

- 基底クラス FK_CLI::fk_Operation に属する継承プロパティ
bool HistoryMode [get, set]
 履歴保存モードプロパティ
 
bool TesselateMode [get, set]
 形状全体テセレーションプロパティ
 
- 基底クラス FK_CLI::fk_DataAccess に属する継承プロパティ
int VNum [get]
 頂点数プロパティ
 
int HNum [get]
 半稜線数プロパティ
 
int ENum [get]
 稜線数プロパティ
 
int LNum [get]
 ループ数プロパティ
 
- 基底クラス FK_CLI::fk_Shape に属する継承プロパティ
fk_RealShapeTypeRealShapeType [get]
 形状データ構造プロパティ
 

詳解

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

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

関数詳解

◆ MakeIFSet() [1/4]

void FK_CLI::fk_SolidBase::MakeIFSet ( int  faceNum,
int  polyNum,
IEnumerable< int >^  IFSet,
int  vertexNum,
IEnumerable< fk_Vector^>^  posArray,
int  order 
)

任意形状生成メソッド1-1

与えられたIFSデータから、形状を生成します。 このメソッド形式の場合、全ての面が同じ角数である必要があります。 角数の異なる面が混在する形状を作成したい場合は、 MakeIFSet(IEnumerable< IEnumerable<int>^ >^, IEnumerable<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を補正するオーダー。通常は 0 を入力して下さい。
参照
fk_IndexFaceSet::MakeIFSet()

◆ MakeIFSet() [2/4]

void FK_CLI::fk_SolidBase::MakeIFSet ( int  faceNum,
int  polyNum,
IEnumerable< int >^  IFSet,
int  vertexNum,
IEnumerable< fk_Vector^>^  posArray 
)

任意形状生成メソッド1-2

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

本メソッドは、 MakeIFSet(int, int, IEnumerable<int>^, int, IEnumerable<fk_Vector^>^, int) において、 第6引数に 0 を入力した場合と同義となります。

引数
[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頂点位置ベクトルの配列。配列の長さは頂点数以上である必要があります。
参照
fk_IndexFaceSet::MakeIFSet()

◆ MakeIFSet() [3/4]

void FK_CLI::fk_SolidBase::MakeIFSet ( IEnumerable< IEnumerable< int >^ >^  faceArray,
IEnumerable< fk_Vector^>^  posArray,
int  order 
)

任意形状生成メソッド2-1

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

引数
[in]faceArray面データ配列。この配列は「ジャグ配列」となっており、 頂点IDの1次元配列が一つの面の頂点IDの集合となります。 この「頂点IDの1次元配列」の配列とすることで、 形状全体の位相情報を表します。
[in]posArray頂点位置ベクトルデータ配列
[in]order最初の頂点IDを補正するオーダー。通常は省略して問題ありません。

◆ MakeIFSet() [4/4]

void FK_CLI::fk_SolidBase::MakeIFSet ( IEnumerable< IEnumerable< int >^ >^  faceArray,
IEnumerable< fk_Vector^>^  posArray 
)

任意形状生成メソッド2-2

与えられたIFSデータから、形状を生成します。 本メソッドは、 MakeIFSet(IEnumerable< IEnumerable<int>^ >^, IEnumerable<fk_Vector^>^, int) において、 第3引数の 0 を入力した場合と同義となります。

引数
[in]faceArray面データ配列。この配列は「ジャグ配列」となっており、 頂点IDの1次元配列が一つの面の頂点IDの集合となります。 この「頂点IDの1次元配列」の配列とすることで、 形状全体の位相情報を表します。
[in]posArray頂点位置ベクトルデータ配列