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

ソリッドモデル変形操作用クラス [詳解]

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

+ FK_CLI::fk_Modify の継承関係図
+ 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 クラスのインスタンスにおいて、 様々な変形処理機能を提供します。 fk_Solid の位相についての詳細は、 ユーザーズマニュアルの「形状に対する高度な操作」という章を参照して下さい。

同様の意味を持つクラスとして fk_Operation がありますが、 このクラスではより複雑な変形操作を提供しています。 内部的には、本クラスの変形処理は全て fk_Operation の変形操作のみを用いて実現されています。 これにより、 fk_Operation の持つ履歴操作が、 本クラスの変形処理においても有効となっています。 fk_Solid を利用する際に、 メソッドが fk_Operation によるものか、 fk_Modify によるものかを利用者が意識する必要はありません。

このクラスの機能は、大きく分けて

の3種類があります。基本形状の生成および頂点移動については、 fk_IndexFaceSet クラスにも全て同名のメソッドが提供されており、機能も同一です。 fk_Blockfk_Sphere といった基本形状を fk_Solid によって生成したい場合に便利です。

参照
fk_Solid, fk_Operation, fk_DataAccess, fk_Reference, fk_IndexFaceSet

関数詳解

◆ RemoveVertexInLoop()

fk_Loop ^ FK_CLI::fk_Modify::RemoveVertexInLoop ( fk_Vertex V)

頂点削除メソッド

形状中の頂点と、その頂点に接続していた稜線を全て削除します。 また、頂点に接続していたループを全て結合し、新たなループを生成します。

このメソッドを実行するには、削除する頂点に隣接している頂点が、 全て3本以上の稜線と接続しているという条件を満たしているという必要があります。 隣接するループについては、必ずしもループが生成されている必要はありません。 このメソッドで削除を実行してしまうと、 それに伴い接続している稜線やループも自動的に削除されます。 削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetAllEOnV() メソッドや fk_Reference::GetAllLOnV() メソッド等によって参照しておく必要があります。

RemoveVertexInLoop
引数
[in]V削除する頂点位相インスタンス
戻り値
削除に成功した場合は、 新たに生成されたループの位相インスタンスを返します。 失敗した場合は null を返します。

◆ ContractEdge() [1/4]

bool FK_CLI::fk_Modify::ContractEdge ( fk_Edge E,
bool  R 
)

稜線削除メソッド1-1

形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置は、稜線の両端点の中点となります。 結合後の頂点位置を指定したい場合は、 ContractEdge(fk_Edge^, fk_Vector^, bool) を利用して下さい。

削除する稜線は、 fk_Operation の解説にある「定義稜線」の条件を満たしている必要があります。 その他にも、処理後に形状が矛盾を来さない多くの条件があります。 削除が可能かどうかを事前に調べるには、 CheckContract() メソッドを利用して下さい。

稜線の削除に成功した場合、以下の位相が同時に削除されます。

  • 稜線に接続していたループ2つ。
  • 稜線の端点のうち、どちらか一方の頂点。
  • 削除されていた頂点に接続していた稜線全て。

削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetRightLOnE()fk_Reference::GetLeftLOnE() メソッドや、 fk_Reference::GetAllEOnV() メソッド等によって参照しておく必要があります。

引数
[in]E削除する稜線位相院寸タンス
[in]Rtrue の場合、右側半稜線の始点側頂点が残ります。 false の場合はその反対が残ります。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
CheckContract(), ContractEdge(fk_Edge^, fk_Vector^, bool)

◆ ContractEdge() [2/4]

bool FK_CLI::fk_Modify::ContractEdge ( fk_Edge E)

稜線削除メソッド1-2

形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置は、稜線の両端点の中点となります。 結合後の頂点位置を指定したい場合は、 ContractEdge(fk_Edge^, fk_Vector^, bool) を利用して下さい。

削除する稜線は、 fk_Operation の解説にある「定義稜線」の条件を満たしている必要があります。 その他にも、処理後に形状が矛盾を来さない多くの条件があります。 削除が可能かどうかを事前に調べるには、 CheckContract() メソッドを利用して下さい。

稜線の削除に成功した場合、以下の位相が同時に削除されます。

  • 稜線に接続していたループ2つ。
  • 稜線の端点のうち、どちらか一方の頂点。
  • 削除されていた頂点に接続していた稜線全て。

削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetRightLOnE()fk_Reference::GetLeftLOnE() メソッドや、 fk_Reference::GetAllEOnV() メソッド等によって参照しておく必要があります。

なお、本メソッドは ContractEdge(fk_Edge^, bool) において、 第2引数に true を入力した場合と同義となります。

引数
[in]E削除する稜線位相院寸タンス
戻り値
成功すれば true を、失敗すれば false を返します。
参照
CheckContract(), ContractEdge(fk_Edge^, fk_Vector^, bool)

◆ ContractEdge() [3/4]

bool FK_CLI::fk_Modify::ContractEdge ( fk_Edge E,
fk_Vector P,
bool  R 
)

稜線削除メソッド2-1

形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置を指定できる以外は、 ContractEdge(fk_Edge^, bool) と同様です。

引数
[in]E削除する稜線位相院寸タンス
[in]P結合した頂点の位置ベクトル
[in]Rtrue の場合、右側半稜線の始点側頂点が残ります。 false の場合はその反対が残ります。
戻り値
成功すれば true を、失敗すれば false を返します。
参照
CheckContract(), ContractEdge(fk_Edge^, bool)

◆ ContractEdge() [4/4]

bool FK_CLI::fk_Modify::ContractEdge ( fk_Edge E,
fk_Vector P 
)

稜線削除メソッド2-2

形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置を指定できる以外は、 ContractEdge(fk_Edge^, bool) と同様です。

なお、本メソッドは ContractEdge(fk_Edge^, fk_Vector^, bool) において、 第3引数に true を入力した場合と同義となります。

引数
[in]E削除する稜線位相院寸タンス
[in]P結合した頂点の位置ベクトル
戻り値
成功すれば true を、失敗すれば false を返します。
参照
CheckContract(), ContractEdge(fk_Edge^, bool)

◆ CheckContract()

bool FK_CLI::fk_Modify::CheckContract ( fk_Edge E)

稜線削除可能判定メソッド

ContractEdge() メソッドによって、稜線が削除可能かどうかを判定するメソッドです。

引数
[in]E判定する稜線の位相インスタンス
戻り値
削除可能であれば true を、不可能であれば false を返します。

◆ MakePolygon() [1/2]

fk_Loop ^ FK_CLI::fk_Modify::MakePolygon ( IEnumerable< fk_Vector^>^  array,
bool  openFlg,
bool  initFlg 
)

多角形生成メソッド1

新たに多角形を生成します。

引数
[in]array頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。
[in]openFlgtrue の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。
[in]initFlgtrue の場合、既にあった形状を全て消去します。false の場合は消去しません。 false の場合、実質的に PushPolygon() と機能的に同一となります。
戻り値
生成に成功すれば、生成されたループ位相インスタンスを返します。 失敗した場合は nullptr を返します。
参照
PushPolygon(IEnumerable<fk_Vector^>^, bool)

◆ MakePolygon() [2/2]

fk_Loop ^ FK_CLI::fk_Modify::MakePolygon ( IEnumerable< fk_Vector^>^  array,
bool  openFlg 
)

多角形生成メソッド2

新たに多角形を生成します。 本メソッドは、 MakePolygon(IEnumerable<fk_Vector^>^, bool, bool) において、 第3引数に true を入力した場合と同義となります。

引数
[in]array頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。
[in]openFlgtrue の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。
戻り値
生成に成功すれば、生成されたループ位相インスタンスを返します。 失敗した場合は nullptr を返します。
参照
PushPolygon(IEnumerable<fk_Vector^>^, bool)

◆ PushPolygon() [1/2]

fk_Loop ^ FK_CLI::fk_Modify::PushPolygon ( IEnumerable< fk_Vector^>^  array,
bool  openFlg 
)

多角形追加メソッド1

多角形を追加します。 本メソッドは、実質的に MakePolygon(IEnumerable<fk_Vector^>^, bool, bool) メソッドで、 initFlg を false にした場合と機能的に同一となります。

引数
[in]array頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。
[in]openFlgtrue の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。
戻り値
生成に成功すれば、生成されたループ位相インスタンスを返します。 失敗した場合は nullptr を返します。
参照
MakePolygon(IEnumerable<fk_Vector^>^, bool, bool)

◆ PushPolygon() [2/2]

fk_Loop ^ FK_CLI::fk_Modify::PushPolygon ( IEnumerable< fk_Vector^>^  array)

多角形追加メソッド2

多角形を追加します。 本メソッドは、 PushPolygon(IEnumerable<fk_Vector^>^, bool) において、 第2引数に false を入力した場合と同義となります。

引数
[in]array頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。
戻り値
生成に成功すれば、生成されたループ位相インスタンスを返します。 失敗した場合は nullptr を返します。
参照
MakePolygon(IEnumerable<fk_Vector^>^, bool, bool)

◆ PushPolygonVertex()

void FK_CLI::fk_Modify::PushPolygonVertex ( fk_Vector pos,
bool  openFlg 
)

多角形頂点追加メソッド

このメソッドは、多角形に対して頂点を追加します。 本メソッドを用いる前提条件として、 MakePolygon() メソッドによって 1 つだけ多角形が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。

引数
[in]pos追加頂点の位置ベクトル
[in]openFlgtrue の場合、開いた多角形を生成します。 この場合は、多角形の始点と新規追加点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、多角形の始点と新規追加点の間に稜線を生成します。

◆ MakePoint()

void FK_CLI::fk_Modify::MakePoint ( IEnumerable< fk_Vector^>^  array)

頂点群生成メソッド

与えられた位置ベクトル配列による頂点群を生成します。 このメソッドを呼ぶ前に存在していた形状データは全て消去されます。

引数
[in]array頂点群の位置ベクトル配列

◆ PushPointVertex()

fk_Vertex ^ FK_CLI::fk_Modify::PushPointVertex ( fk_Vector pos)

頂点追加メソッド

形状に頂点1個を追加します。

引数
[in]pos頂点の位置ベクトル
戻り値
新規に生成された頂点位相のインスタンスを返します。

◆ MakeLines()

void FK_CLI::fk_Modify::MakeLines ( IEnumerable< fk_Vector^>^  array)

線分群生成メソッド

与えられた位置ベクトル配列を元に、線分群を生成します。 位置ベクトルは、配列中で [始点1, 終点1, 始点2, 終点2, ...] と扱われます。配列の長さが奇数であった場合、最後の要素は無視されます。 このメソッドを呼ぶ前に存在していた形状データは全て消去されます。

引数
[in]array線分の両端点を表す頂点位置ベクトル配列

◆ PushLines()

fk_Edge ^ FK_CLI::fk_Modify::PushLines ( fk_Vector pos1,
fk_Vector pos2 
)

線分追加メソッド

形状に線分1本を追加します。

引数
[in]pos1稜線の始点位置ベクトル
[in]pos2稜線の終点位置ベクトル
戻り値
新規に生成された稜線位相のインスタンスを返します。

◆ SetLinePos() [1/2]

bool FK_CLI::fk_Modify::SetLinePos ( int  ID,
fk_Vector pos 
)

線分頂点移動メソッド1

線分の端点位置を移動します。 本メソッドを用いる前提条件として、 MakeLines() によって 1 本だけ線分が生成された状況でなければなりません。 その状況が満たされていない場合の動作は保証されません。

引数
[in]ID0 であれば始点を、1 であれば終点を移動対象とします。 その他の ID が与えられた場合はエラーとなります。
[in]pos移動先の位置ベクトル
戻り値
移動に成功すれば true を、失敗すれば false を返します。

◆ SetLinePos() [2/2]

bool FK_CLI::fk_Modify::SetLinePos ( int  edgeID,
int  vertexID,
fk_Vector pos 
)

線分頂点移動メソッド2

線分の端点位置を移動します。 本メソッドを用いる前提条件として、 MakeLines()PushLines() のみによって、 複数の線分が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。

引数
[in]edgeID線分の ID。ID は生成した順に 0, 1, 2... となります。
[in]vertexID0 であれば始点を、1 であれば終点を移動対象とします。 その他の ID が与えられた場合はエラーとなります。
[in]pos移動先の位置ベクトル
戻り値
移動に成功すれば true を、失敗すれば false を返します。

◆ ChangeLine()

bool FK_CLI::fk_Modify::ChangeLine ( int  edgeID,
fk_Vector pos1,
fk_Vector pos2 
)

線分両端点移動メソッド

線分の、両端点の位置を同時に移動します。 本メソッドを用いる前提条件として、 MakeLines()PushLines() のみによって、 複数の線分が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。

引数
[in]edgeID線分の ID。ID は生成した順に 0, 1, 2... となります。
[in]pos1始点の移動先位置ベクトル
[in]pos2終点の移動先位置ベクトル
戻り値
移動に成功すれば true を、失敗すれば false を返します。

◆ MakeBlock()

void FK_CLI::fk_Modify::MakeBlock ( double  x,
double  y,
double  z 
)

直方体生成メソッド

直方体を生成します。

直方体は、原点の物体の中心が来るように配置されます。 従って、(x, y, z) という大きさで直方体を生成した場合、 各頂点の位置ベクトルは以下のようになります。

  • (x/2, y/2, z/2)
  • (-x/2, y/2, z/2)
  • (-x/2, -y/2, z/2)
  • (x/2, -y/2, z/2)
  • (x/2, y/2, -z/2)
  • (-x/2, y/2, -z/2)
  • (-x/2, -y/2, -z/2)
  • (x/2, -y/2, -z/2)

このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数
[in]xx方向の辺長
[in]yy方向の辺長
[in]zz方向の辺長
参照
fk_Block

◆ SetBlockSize() [1/2]

void FK_CLI::fk_Modify::SetBlockSize ( double  x,
double  y,
double  z 
)

直方体辺長変更メソッド

MakeBlock() によって直方体を生成した後に、 直方体の辺長を一括して設定しなおします。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]xx方向の辺長
[in]yy方向の辺長
[in]zz方向の辺長
参照
MakeBlock(), fk_Block

◆ SetBlockSize() [2/2]

void FK_CLI::fk_Modify::SetBlockSize ( double  length,
fk_Axis  axis 
)

直方体個別辺長設定メソッド

MakeBlock() によって直方体を生成した後に、 直方体の辺長を個別に設定します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]length辺長
[in]axis軸方向。以下のいずれかを指定します。
参照
MakeBlock(), fk_Block

◆ SetBlockScale() [1/3]

void FK_CLI::fk_Modify::SetBlockScale ( double  scale)

直方体全体拡大縮小メソッド

MakeBlock() によって直方体を生成した後に、 直方体全体を指定された倍率で拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]scale倍率
参照
MakeBlock(), fk_Block

◆ SetBlockScale() [2/3]

void FK_CLI::fk_Modify::SetBlockScale ( double  scale,
fk_Axis  axis 
)

直方体軸方向拡大縮小メソッド

MakeBlock() によって直方体を生成した後に、 指定された軸方向についてのみ拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]scale倍率
[in]axis軸方向。以下のいずれかを指定します。
参照
MakeBlock(), fk_Block

◆ SetBlockScale() [3/3]

void FK_CLI::fk_Modify::SetBlockScale ( double  x,
double  y,
double  z 
)

直方体軸方向個別拡大縮小メソッド

MakeBlock() によって直方体を生成した後に、 各軸方向に対し個別の倍率で拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]xx方向の倍率
[in]yy方向の倍率
[in]zz方向の倍率
参照
MakeBlock(), fk_Block

◆ MakeCircle()

void FK_CLI::fk_Modify::MakeCircle ( int  div,
double  rad 
)

円形状生成メソッド

円形状を生成します。

ここでの「円」は実際には正多角形を円に近似して扱っています。 多角形の角数は (分割数) * 4 となっています。 この多角形は、実質的には設定された半径の円に内接するものです。 円としての見栄えを良くするには分割数を大きめに設定すべきですが、 分割数の大きい円を大量に利用すると描画処理が遅くなるという問題が生じます。

初期状態では、中心を原点とし、 面の法線ベクトルが (0, 0, 1) となるように配置されます。

このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数
[in]div分割数。実際には円弧全体をこの数値の 4 倍で分割します。
[in]rad半径
参照
fk_Circle

◆ SetCircleRadius()

void FK_CLI::fk_Modify::SetCircleRadius ( double  rad)

円形状半径設定メソッド

MakeCircle() によって円形状を生成した後に、 半径を設定しなおします。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]rad半径
参照
MakeCircle(), fk_Circle

◆ SetCircleDivide()

void FK_CLI::fk_Modify::SetCircleDivide ( int  div)

円形状分割数設定メソッド

MakeCircle() によって円形状を生成した後に、 分割数を設定しなおします。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]div分割数
参照
MakeCircle(), fk_Circle

◆ SetCircleScale()

void FK_CLI::fk_Modify::SetCircleScale ( double  scale)

円形状拡大縮小メソッド

MakeCircle() によって円形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]scale倍率
参照
MakeCircle(), fk_Circle

◆ MakeSphere()

void FK_CLI::fk_Modify::MakeSphere ( int  div,
double  rad 
)

球形状生成メソッド

球形状を生成します。

実際には、球を近似する3角形面集合として表現されています。 3角形面の数は分割数を \( d \) とした場合 \( 8d(d-1) \) 枚となります。 分割数が高いほど球としての描画精度は高くなりますが、 面数も多くなるため描画速度が低下することになります。 特に多くのオブジェクトを同時に配置する場合は注意が必要です。

初期状態では、中心を原点とするように配置されます。

このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数
[in]div分割数
[in]rad半径
参照
fk_Sphere

◆ SetSphereRadius()

void FK_CLI::fk_Modify::SetSphereRadius ( double  rad)

球形状半径設定メソッド

MakeSphere() によって球形状を生成した後に、 半径を設定しなおします。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]rad半径
参照
MakeSphere(), fk_Sphere

◆ SetSphereDivide()

void FK_CLI::fk_Modify::SetSphereDivide ( int  div)

球形状分割数設定メソッド

MakeSphere() によって球形状を生成した後に、 分割数を設定しなおします。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]div分割数
参照
MakeSphere(), fk_Sphere

◆ SetSphereScale()

void FK_CLI::fk_Modify::SetSphereScale ( double  scale)

球形状拡大縮小メソッド

MakeSphere() によって球形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]scale倍率
参照
MakeSphere(), fk_Sphere

◆ MakePrism()

void FK_CLI::fk_Modify::MakePrism ( int  div,
double  top,
double  bottom,
double  height 
)

正多角柱(円柱)形状生成メソッド

正多角柱(円柱)を生成します。

円柱は、分割数の多い正多角柱として生成します。 通常、分割数が 20 を超える程度でほとんど円柱と見分けがつかなくなります。 配置は、底面の中心が原点となり、 多角柱の上面が -z 方向、底面が +z 方向となります。

設定できる要素は角数、上面半径、底面半径、高さの4要素です。 上面と底面の半径とは、それぞれの面を構成する正多角形の外接円半径を指します。

このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数
[in]div角数
[in]top上面半径
[in]bottom底面半径
[in]height高さ
参照
fk_Prism

◆ SetPrismDivide()

void FK_CLI::fk_Modify::SetPrismDivide ( int  div)

正多角柱(円柱)角数設定メソッド

MakePrism() によって正多角柱(円柱)を生成した後に、 角数を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]div角数
参照
MakePrism(), fk_Prism

◆ SetPrismTopRadius()

void FK_CLI::fk_Modify::SetPrismTopRadius ( double  top)

正多角柱(円柱)上面半径設定メソッド

MakePrism() によって正多角柱(円柱)を生成した後に、 上面の外接円半径を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]top上面半径
参照
MakePrism(), fk_Prism

◆ SetPrismBottomRadius()

void FK_CLI::fk_Modify::SetPrismBottomRadius ( double  bottom)

正多角柱(円柱)角数設定メソッド

MakePrism() によって正多角柱(円柱)を生成した後に、 底面の外接円半径を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]bottom底面半径
参照
MakePrism(), fk_Prism

◆ SetPrismHeight()

void FK_CLI::fk_Modify::SetPrismHeight ( double  height)

正多角柱(円柱)高さ設定メソッド

MakePrism() によって正多角柱(円柱)を生成した後に、 高さを設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]height高さ
参照
MakePrism(), fk_Prism

◆ MakeCone()

void FK_CLI::fk_Modify::MakeCone ( int  div,
double  rad,
double  height 
)

正多角錐(円錐)形状生成メソッド

正多角錐(円錐)を生成します。

円錐は、分割数の多い正多角錐として生成します。 通常、分割数が 20 を超える程度でほとんど円錐と見分けがつかなくなります。 配置は、底面の中心が原点となり、 頂点 -z 方向、底面が +z 方向となります。

設定できる要素は角数、底面半径、高さの3要素です。 底面半径とは、面を構成する正多角形の外接円半径を指します。

このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。

引数
[in]div角数
[in]rad底面半径
[in]height高さ
参照
fk_Cone

◆ SetConeDivide()

void FK_CLI::fk_Modify::SetConeDivide ( int  div)

正多角錐(円錐)角数設定メソッド

MakeCone() によって正多角錐(円錐)を生成した後に、 角数を設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]div角数
参照
MakeCone(), fk_Cone

◆ SetConeRadius()

void FK_CLI::fk_Modify::SetConeRadius ( double  rad)

正多角錐(円錐)底面半径設定メソッド

MakeCone() によって正多角錐(円錐)を生成した後に、 底面外接円半径を設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]rad底面半径
参照
MakeCone(), fk_Cone

◆ SetConeHeight()

void FK_CLI::fk_Modify::SetConeHeight ( double  height)

正多角錐(円錐)高さ設定メソッド

MakeCone() によって正多角錐(円錐)を生成した後に、 高さを設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。

引数
[in]height高さ
参照
MakeCone(), fk_Cone

◆ MoveVPosition() [1/4]

bool FK_CLI::fk_Modify::MoveVPosition ( int  vertexID,
fk_Vector pos,
int  order 
)

頂点移動メソッド1-1

指定された頂点を移動します。

引数
[in]vertexID頂点ID。
[in]pos移動先の位置ベクトル
[in]order最初の頂点IDを補正するオーダー。通常は 0 を入力して下さい。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ MoveVPosition() [2/4]

bool FK_CLI::fk_Modify::MoveVPosition ( int  vertexID,
fk_Vector pos 
)

頂点移動メソッド1-2

指定された頂点を移動します。 本メソッドは、 MoveVPosition(int, fk_Vector^, int) において、 第3引数に 0 を入力した場合と同義となります。

引数
[in]vertexID頂点ID。
[in]pos移動先の位置ベクトル
戻り値
成功すれば true を、失敗すれば false を返します。

◆ MoveVPosition() [3/4]

bool FK_CLI::fk_Modify::MoveVPosition ( int  vertexID,
double  x,
double  y,
double  z,
int  order 
)

頂点移動メソッド2-1

指定された頂点を移動します。

引数
[in]vertexID頂点ID。
[in]x移動先位置ベクトルの x 成分
[in]y移動先位置ベクトルの y 成分
[in]z移動先位置ベクトルの z 成分
[in]order最初の頂点IDを補正するオーダー。通常は 0 を入力して下さい。
戻り値
成功すれば true を、失敗すれば false を返します。

◆ MoveVPosition() [4/4]

bool FK_CLI::fk_Modify::MoveVPosition ( int  vertexID,
double  x,
double  y,
double  z 
)

頂点移動メソッド2-2

指定された頂点を移動します。 本メソッドは、 MoveVPosition(int, double, double, double, int) において、 第5引数に 0 を入力した場合と同義となります。

引数
[in]vertexID頂点ID。
[in]x移動先位置ベクトルの x 成分
[in]y移動先位置ベクトルの y 成分
[in]z移動先位置ベクトルの z 成分
戻り値
成功すれば true を、失敗すれば false を返します。

◆ SubDivShape()

void FK_CLI::fk_Modify::SubDivShape ( int  count)

細分割曲面生成メソッド

このメソッドは、細分割曲面 (Subdivision Surface) 手法に基づいた面分割を行います。 分割回数を増加するほど細分割曲面に形状は近くなりますが、 面数は大きく増加します。 現状では、曲面生成手法は「Catmull-Clark 手法」のみをサポートしています。

引数
[in]count分割回数。