FineKernelToolKit 4.2.13
|
ソリッドモデル変形操作用クラス [詳解]
#include <CLI/FK_CLI/include/Modify_CLI.h>
公開メンバ関数 | |
位相操作メソッド | |
fk_Loop ^ | RemoveVertexInLoop (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_Loop ^ | MakePolygon (IEnumerable< fk_Vector^>^ array, bool openFlg, bool initFlg) |
多角形生成メソッド1 | |
fk_Loop ^ | MakePolygon (IEnumerable< fk_Vector^>^ array, bool openFlg) |
多角形生成メソッド2 | |
fk_Loop ^ | PushPolygon (IEnumerable< fk_Vector^>^ array, bool openFlg) |
多角形追加メソッド1 | |
fk_Loop ^ | PushPolygon (IEnumerable< fk_Vector^>^ array) |
多角形追加メソッド2 | |
void | PushPolygonVertex (fk_Vector ^ pos, bool openFlg) |
多角形頂点追加メソッド | |
頂点群生成メソッド | |
void | MakePoint (IEnumerable< fk_Vector^>^ array) |
頂点群生成メソッド | |
fk_Vertex ^ | PushPointVertex (fk_Vector ^ pos) |
頂点追加メソッド | |
線分生成メソッド | |
void | MakeLines (IEnumerable< fk_Vector^>^ array) |
線分群生成メソッド | |
fk_Edge ^ | PushLines (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_Vertex ^ | MakeVertex (fk_Vector^ P) |
頂点生成メソッド | |
bool | DeleteVertex (fk_Vertex^ V) |
頂点削除メソッド | |
bool | MoveVertex (fk_Vertex^ V, fk_Vector^ P) |
頂点移動メソッド | |
fk_Edge ^ | MakeEdge (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_Edge ^ | MakeEdge (fk_Vertex^ V_1, fk_Vertex^ V_2) |
稜線生成メソッド2 | |
bool | DeleteEdge (fk_Edge^ E) |
稜線削除メソッド | |
fk_Loop ^ | MakeLoop (fk_Half ^ H) |
ループ生成メソッド | |
bool | DeleteLoop (fk_Loop^ L) |
ループ削除メソッド | |
fk_Edge ^ | SeparateLoop (fk_Half^ H1, fk_Half^ H2) |
ループ分割メソッド | |
bool | UniteLoop (fk_Edge^ E) |
ループ結合メソッド | |
fk_Vertex ^ | SeparateEdge (fk_Edge^ E) |
稜線分離メソッド | |
bool | UniteEdge (fk_Vertex^ V) |
稜線結合メソッド | |
void | NegateBody (void) |
形状反転メソッド | |
void | SetHistoryMark (void) |
履歴マーク設定メソッド | |
bool | UndoHistory (void) |
UNDO 操作実行メソッド | |
bool | RedoHistory (void) |
REDO 操作実行メソッド | |
![]() | |
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_Vertex ^ | GetVData (int ID) |
頂点位相要素参照メソッド | |
fk_Half ^ | GetHData (int ID) |
半稜線位相要素参照メソッド | |
fk_Edge ^ | GetEData (int ID) |
稜線位相要素参照メソッド | |
fk_Loop ^ | GetLData (int ID) |
ループ位相要素参照メソッド | |
fk_Vertex ^ | GetNextV (fk_Vertex^ vertex) |
頂点位相要素逐次参照メソッド | |
fk_Half ^ | GetNextH (fk_Half^ half) |
半稜線位相要素逐次参照メソッド | |
fk_Edge ^ | GetNextE (fk_Edge^ edge) |
稜線位相要素逐次参照メソッド | |
fk_Loop ^ | GetNextL (fk_Loop^ loop) |
ループ位相要素逐次参照メソッド | |
fk_Vertex ^ | GetLastV (void) |
頂点位相最終要素参照メソッド | |
fk_Half ^ | GetLastH (void) |
半稜線位相最終要素参照メソッド | |
fk_Edge ^ | GetLastE (void) |
稜線位相最終要素参照メソッド | |
fk_Loop ^ | GetLastL (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_Half ^ | GetOneHOnV (fk_Vertex^ V) |
頂点接続半稜線参照メソッド | |
fk_Edge ^ | GetOneEOnV (fk_Vertex^ V) |
頂点接続稜線参照メソッド | |
fk_Vertex ^ | GetOneNeighborVOnV (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_Loop ^ | GetOneLOnV (fk_Vertex^ V) |
頂点接続ループ参照メソッド | |
fk_Vertex ^ | GetVOnH (fk_Half^ H) |
半稜線接続頂点参照メソッド | |
fk_Half ^ | GetMateHOnH (fk_Half^ H) |
対半稜線参照メソッド | |
fk_Edge ^ | GetParentEOnH (fk_Half^ H) |
親稜線参照メソッド | |
fk_Loop ^ | GetParentLOnH (fk_Half^ H) |
親ループ参照メソッド | |
fk_Vertex ^ | GetRightVOnE (fk_Edge^ E) |
右側頂点参照メソッド | |
fk_Vertex ^ | GetLeftVOnE (fk_Edge^ E) |
左側頂点参照メソッド | |
fk_Half ^ | GetRightHOnE (fk_Edge^ E) |
右側半稜線参照メソッド | |
fk_Half ^ | GetLeftHOnE (fk_Edge^ E) |
左側半稜線参照メソッド | |
fk_Loop ^ | GetRightLOnE (fk_Edge^ E) |
右側ループ参照メソッド | |
fk_Loop ^ | GetLeftLOnE (fk_Edge^ E) |
左側ループ参照メソッド | |
fk_EdgeStatus | GetEdgeStatus (fk_Edge^ E) |
稜線位相状態参照メソッド | |
fk_Vertex ^ | GetOneVOnL (fk_Loop^ L) |
ループ所属頂点参照メソッド | |
fk_Half ^ | GetOneHOnL (fk_Loop^ L) |
ループ所属半稜線参照メソッド | |
fk_Edge ^ | GetOneEOnL (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_Loop ^ | GetOneNeighborLOnL (fk_Loop^ L) |
隣接ループ参照メソッド | |
fk_Loop ^ | GetNeighborLOnLH (fk_Loop^ L, fk_Half^ H) |
半稜線条件付き隣接ループ参照メソッド | |
int | GetVNumOnL (fk_Loop^ L) |
ループ上頂点数参照メソッド | |
fk_Loop ^ | GetNeighborLOnLE (fk_Loop^ L, fk_Edge^ E) |
稜線条件付き隣接ループ参照メソッド | |
cli::array< fk_Loop^> ^ | GetAllNeighborLOnL (fk_Loop^ L) |
全隣接ループ参照メソッド | |
![]() | |
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 | |
![]() | |
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 型である属性消去メソッド | |
その他の継承メンバ | |
![]() | |
bool | HistoryMode [get, set] |
履歴保存モードプロパティ | |
bool | TesselateMode [get, set] |
形状全体テセレーションプロパティ | |
![]() | |
int | VNum [get] |
頂点数プロパティ | |
int | HNum [get] |
半稜線数プロパティ | |
int | ENum [get] |
稜線数プロパティ | |
int | LNum [get] |
ループ数プロパティ | |
![]() | |
fk_RealShapeType^ | RealShapeType [get] |
形状データ構造プロパティ | |
ソリッドモデル変形操作用クラス
このクラスは、 fk_Solid クラスのインスタンスにおいて、 様々な変形処理機能を提供します。 fk_Solid の位相についての詳細は、 ユーザーズマニュアルの「形状に対する高度な操作」という章を参照して下さい。
同様の意味を持つクラスとして fk_Operation がありますが、 このクラスではより複雑な変形操作を提供しています。 内部的には、本クラスの変形処理は全て fk_Operation の変形操作のみを用いて実現されています。 これにより、 fk_Operation の持つ履歴操作が、 本クラスの変形処理においても有効となっています。 fk_Solid を利用する際に、 メソッドが fk_Operation によるものか、 fk_Modify によるものかを利用者が意識する必要はありません。
このクラスの機能は、大きく分けて
の3種類があります。基本形状の生成および頂点移動については、 fk_IndexFaceSet クラスにも全て同名のメソッドが提供されており、機能も同一です。 fk_Block や fk_Sphere といった基本形状を fk_Solid によって生成したい場合に便利です。
頂点削除メソッド
形状中の頂点と、その頂点に接続していた稜線を全て削除します。 また、頂点に接続していたループを全て結合し、新たなループを生成します。
このメソッドを実行するには、削除する頂点に隣接している頂点が、 全て3本以上の稜線と接続しているという条件を満たしているという必要があります。 隣接するループについては、必ずしもループが生成されている必要はありません。 このメソッドで削除を実行してしまうと、 それに伴い接続している稜線やループも自動的に削除されます。 削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetAllEOnV() メソッドや fk_Reference::GetAllLOnV() メソッド等によって参照しておく必要があります。
[in] | V | 削除する頂点位相インスタンス |
bool FK_CLI::fk_Modify::ContractEdge | ( | fk_Edge ^ | E, |
bool | R | ||
) |
稜線削除メソッド1-1
形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置は、稜線の両端点の中点となります。 結合後の頂点位置を指定したい場合は、 ContractEdge(fk_Edge^, fk_Vector^, bool) を利用して下さい。
削除する稜線は、 fk_Operation の解説にある「定義稜線」の条件を満たしている必要があります。 その他にも、処理後に形状が矛盾を来さない多くの条件があります。 削除が可能かどうかを事前に調べるには、 CheckContract() メソッドを利用して下さい。
稜線の削除に成功した場合、以下の位相が同時に削除されます。
削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetRightLOnE()、 fk_Reference::GetLeftLOnE() メソッドや、 fk_Reference::GetAllEOnV() メソッド等によって参照しておく必要があります。
[in] | E | 削除する稜線位相院寸タンス |
[in] | R | true の場合、右側半稜線の始点側頂点が残ります。 false の場合はその反対が残ります。 |
bool FK_CLI::fk_Modify::ContractEdge | ( | fk_Edge ^ | E | ) |
稜線削除メソッド1-2
形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置は、稜線の両端点の中点となります。 結合後の頂点位置を指定したい場合は、 ContractEdge(fk_Edge^, fk_Vector^, bool) を利用して下さい。
削除する稜線は、 fk_Operation の解説にある「定義稜線」の条件を満たしている必要があります。 その他にも、処理後に形状が矛盾を来さない多くの条件があります。 削除が可能かどうかを事前に調べるには、 CheckContract() メソッドを利用して下さい。
稜線の削除に成功した場合、以下の位相が同時に削除されます。
削除される稜線やループの情報が必要な場合は、 事前に fk_Reference::GetRightLOnE()、 fk_Reference::GetLeftLOnE() メソッドや、 fk_Reference::GetAllEOnV() メソッド等によって参照しておく必要があります。
なお、本メソッドは ContractEdge(fk_Edge^, bool) において、 第2引数に true を入力した場合と同義となります。
[in] | E | 削除する稜線位相院寸タンス |
稜線削除メソッド2-1
形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置を指定できる以外は、 ContractEdge(fk_Edge^, bool) と同様です。
[in] | E | 削除する稜線位相院寸タンス |
[in] | P | 結合した頂点の位置ベクトル |
[in] | R | true の場合、右側半稜線の始点側頂点が残ります。 false の場合はその反対が残ります。 |
稜線削除メソッド2-2
形状中の稜線を削除し、その両端点を結合します。 結合後の頂点位置を指定できる以外は、 ContractEdge(fk_Edge^, bool) と同様です。
なお、本メソッドは ContractEdge(fk_Edge^, fk_Vector^, bool) において、 第3引数に true を入力した場合と同義となります。
[in] | E | 削除する稜線位相院寸タンス |
[in] | P | 結合した頂点の位置ベクトル |
bool FK_CLI::fk_Modify::CheckContract | ( | fk_Edge ^ | E | ) |
稜線削除可能判定メソッド
ContractEdge() メソッドによって、稜線が削除可能かどうかを判定するメソッドです。
[in] | E | 判定する稜線の位相インスタンス |
fk_Loop ^ FK_CLI::fk_Modify::MakePolygon | ( | IEnumerable< fk_Vector^>^ | array, |
bool | openFlg, | ||
bool | initFlg | ||
) |
多角形生成メソッド1
新たに多角形を生成します。
[in] | array | 頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。 |
[in] | openFlg | true の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。 |
[in] | initFlg | true の場合、既にあった形状を全て消去します。false の場合は消去しません。 false の場合、実質的に PushPolygon() と機能的に同一となります。 |
多角形生成メソッド2
新たに多角形を生成します。 本メソッドは、 MakePolygon(IEnumerable<fk_Vector^>^, bool, bool) において、 第3引数に true を入力した場合と同義となります。
[in] | array | 頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。 |
[in] | openFlg | true の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。 |
多角形追加メソッド1
多角形を追加します。 本メソッドは、実質的に MakePolygon(IEnumerable<fk_Vector^>^, bool, bool) メソッドで、 initFlg を false にした場合と機能的に同一となります。
[in] | array | 頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。 |
[in] | openFlg | true の場合、開いた多角形を生成します。 この場合は、頂点の始点と終点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、始点と終点の間に稜線を生成します。 |
多角形追加メソッド2
多角形を追加します。 本メソッドは、 PushPolygon(IEnumerable<fk_Vector^>^, bool) において、 第2引数に false を入力した場合と同義となります。
[in] | array | 頂点の位置ベクトル配列。 要素数が 3 以上である必要があります。 多角形頂点は、この配列の順番に繫がります。 |
void FK_CLI::fk_Modify::PushPolygonVertex | ( | fk_Vector ^ | pos, |
bool | openFlg | ||
) |
多角形頂点追加メソッド
このメソッドは、多角形に対して頂点を追加します。 本メソッドを用いる前提条件として、 MakePolygon() メソッドによって 1 つだけ多角形が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。
[in] | pos | 追加頂点の位置ベクトル |
[in] | openFlg | true の場合、開いた多角形を生成します。 この場合は、多角形の始点と新規追加点の間に線分を生成しません。 false の場合は閉じた多角形を生成します。 つまり、多角形の始点と新規追加点の間に稜線を生成します。 |
void FK_CLI::fk_Modify::MakePoint | ( | IEnumerable< fk_Vector^>^ | array | ) |
頂点群生成メソッド
与えられた位置ベクトル配列による頂点群を生成します。 このメソッドを呼ぶ前に存在していた形状データは全て消去されます。
[in] | array | 頂点群の位置ベクトル配列 |
頂点追加メソッド
形状に頂点1個を追加します。
[in] | pos | 頂点の位置ベクトル |
void FK_CLI::fk_Modify::MakeLines | ( | IEnumerable< fk_Vector^>^ | array | ) |
線分群生成メソッド
与えられた位置ベクトル配列を元に、線分群を生成します。 位置ベクトルは、配列中で [始点1, 終点1, 始点2, 終点2, ...] と扱われます。配列の長さが奇数であった場合、最後の要素は無視されます。 このメソッドを呼ぶ前に存在していた形状データは全て消去されます。
[in] | array | 線分の両端点を表す頂点位置ベクトル配列 |
線分追加メソッド
形状に線分1本を追加します。
[in] | pos1 | 稜線の始点位置ベクトル |
[in] | pos2 | 稜線の終点位置ベクトル |
bool FK_CLI::fk_Modify::SetLinePos | ( | int | ID, |
fk_Vector ^ | pos | ||
) |
線分頂点移動メソッド1
線分の端点位置を移動します。 本メソッドを用いる前提条件として、 MakeLines() によって 1 本だけ線分が生成された状況でなければなりません。 その状況が満たされていない場合の動作は保証されません。
[in] | ID | 0 であれば始点を、1 であれば終点を移動対象とします。 その他の ID が与えられた場合はエラーとなります。 |
[in] | pos | 移動先の位置ベクトル |
bool FK_CLI::fk_Modify::SetLinePos | ( | int | edgeID, |
int | vertexID, | ||
fk_Vector^ | pos | ||
) |
線分頂点移動メソッド2
線分の端点位置を移動します。 本メソッドを用いる前提条件として、 MakeLines() と PushLines() のみによって、 複数の線分が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。
[in] | edgeID | 線分の ID。ID は生成した順に 0, 1, 2... となります。 |
[in] | vertexID | 0 であれば始点を、1 であれば終点を移動対象とします。 その他の ID が与えられた場合はエラーとなります。 |
[in] | pos | 移動先の位置ベクトル |
線分両端点移動メソッド
線分の、両端点の位置を同時に移動します。 本メソッドを用いる前提条件として、 MakeLines() と PushLines() のみによって、 複数の線分が生成された状況でなければなりません。 その条件が満たされていない場合の動作は保証されません。
[in] | edgeID | 線分の ID。ID は生成した順に 0, 1, 2... となります。 |
[in] | pos1 | 始点の移動先位置ベクトル |
[in] | pos2 | 終点の移動先位置ベクトル |
void FK_CLI::fk_Modify::MakeBlock | ( | double | x, |
double | y, | ||
double | z | ||
) |
直方体生成メソッド
直方体を生成します。
直方体は、原点の物体の中心が来るように配置されます。 従って、(x, y, z) という大きさで直方体を生成した場合、 各頂点の位置ベクトルは以下のようになります。
このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。
[in] | x | x方向の辺長 |
[in] | y | y方向の辺長 |
[in] | z | z方向の辺長 |
void FK_CLI::fk_Modify::SetBlockSize | ( | double | x, |
double | y, | ||
double | z | ||
) |
直方体辺長変更メソッド
MakeBlock() によって直方体を生成した後に、 直方体の辺長を一括して設定しなおします。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | x | x方向の辺長 |
[in] | y | y方向の辺長 |
[in] | z | z方向の辺長 |
void FK_CLI::fk_Modify::SetBlockSize | ( | double | length, |
fk_Axis | axis | ||
) |
直方体個別辺長設定メソッド
MakeBlock() によって直方体を生成した後に、 直方体の辺長を個別に設定します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
void FK_CLI::fk_Modify::SetBlockScale | ( | double | scale | ) |
直方体全体拡大縮小メソッド
MakeBlock() によって直方体を生成した後に、 直方体全体を指定された倍率で拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | scale | 倍率 |
void FK_CLI::fk_Modify::SetBlockScale | ( | double | scale, |
fk_Axis | axis | ||
) |
直方体軸方向拡大縮小メソッド
MakeBlock() によって直方体を生成した後に、 指定された軸方向についてのみ拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
void FK_CLI::fk_Modify::SetBlockScale | ( | double | x, |
double | y, | ||
double | z | ||
) |
直方体軸方向個別拡大縮小メソッド
MakeBlock() によって直方体を生成した後に、 各軸方向に対し個別の倍率で拡大・縮小します。 このメソッドは、 MakeBlock() によって直方体を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | x | x方向の倍率 |
[in] | y | y方向の倍率 |
[in] | z | z方向の倍率 |
void FK_CLI::fk_Modify::MakeCircle | ( | int | div, |
double | rad | ||
) |
円形状生成メソッド
円形状を生成します。
ここでの「円」は実際には正多角形を円に近似して扱っています。 多角形の角数は (分割数) * 4 となっています。 この多角形は、実質的には設定された半径の円に内接するものです。 円としての見栄えを良くするには分割数を大きめに設定すべきですが、 分割数の大きい円を大量に利用すると描画処理が遅くなるという問題が生じます。
初期状態では、中心を原点とし、 面の法線ベクトルが (0, 0, 1) となるように配置されます。
このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。
[in] | div | 分割数。実際には円弧全体をこの数値の 4 倍で分割します。 |
[in] | rad | 半径 |
void FK_CLI::fk_Modify::SetCircleRadius | ( | double | rad | ) |
円形状半径設定メソッド
MakeCircle() によって円形状を生成した後に、 半径を設定しなおします。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | rad | 半径 |
void FK_CLI::fk_Modify::SetCircleDivide | ( | int | div | ) |
円形状分割数設定メソッド
MakeCircle() によって円形状を生成した後に、 分割数を設定しなおします。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | div | 分割数 |
void FK_CLI::fk_Modify::SetCircleScale | ( | double | scale | ) |
円形状拡大縮小メソッド
MakeCircle() によって円形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 このメソッドは、 MakeCircle() によって円形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | scale | 倍率 |
void FK_CLI::fk_Modify::MakeSphere | ( | int | div, |
double | rad | ||
) |
球形状生成メソッド
球形状を生成します。
実際には、球を近似する3角形面集合として表現されています。 3角形面の数は分割数を \( d \) とした場合 \( 8d(d-1) \) 枚となります。 分割数が高いほど球としての描画精度は高くなりますが、 面数も多くなるため描画速度が低下することになります。 特に多くのオブジェクトを同時に配置する場合は注意が必要です。
初期状態では、中心を原点とするように配置されます。
このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。
[in] | div | 分割数 |
[in] | rad | 半径 |
void FK_CLI::fk_Modify::SetSphereRadius | ( | double | rad | ) |
球形状半径設定メソッド
MakeSphere() によって球形状を生成した後に、 半径を設定しなおします。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | rad | 半径 |
void FK_CLI::fk_Modify::SetSphereDivide | ( | int | div | ) |
球形状分割数設定メソッド
MakeSphere() によって球形状を生成した後に、 分割数を設定しなおします。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | div | 分割数 |
void FK_CLI::fk_Modify::SetSphereScale | ( | double | scale | ) |
球形状拡大縮小メソッド
MakeSphere() によって球形状を生成した後に、 形状全体を与えられた倍率で拡大・縮小します。 このメソッドは、 MakeSphere() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | scale | 倍率 |
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 | 高さ |
void FK_CLI::fk_Modify::SetPrismDivide | ( | int | div | ) |
正多角柱(円柱)角数設定メソッド
MakePrism() によって正多角柱(円柱)を生成した後に、 角数を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | div | 角数 |
void FK_CLI::fk_Modify::SetPrismTopRadius | ( | double | top | ) |
正多角柱(円柱)上面半径設定メソッド
MakePrism() によって正多角柱(円柱)を生成した後に、 上面の外接円半径を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | top | 上面半径 |
void FK_CLI::fk_Modify::SetPrismBottomRadius | ( | double | bottom | ) |
正多角柱(円柱)角数設定メソッド
MakePrism() によって正多角柱(円柱)を生成した後に、 底面の外接円半径を設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | bottom | 底面半径 |
void FK_CLI::fk_Modify::SetPrismHeight | ( | double | height | ) |
正多角柱(円柱)高さ設定メソッド
MakePrism() によって正多角柱(円柱)を生成した後に、 高さを設定しなおします。 このメソッドは、 MakePrism() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | height | 高さ |
void FK_CLI::fk_Modify::MakeCone | ( | int | div, |
double | rad, | ||
double | height | ||
) |
正多角錐(円錐)形状生成メソッド
正多角錐(円錐)を生成します。
円錐は、分割数の多い正多角錐として生成します。 通常、分割数が 20 を超える程度でほとんど円錐と見分けがつかなくなります。 配置は、底面の中心が原点となり、 頂点 -z 方向、底面が +z 方向となります。
設定できる要素は角数、底面半径、高さの3要素です。 底面半径とは、面を構成する正多角形の外接円半径を指します。
このメソッドを呼ぶ前に生成されていた形状や各種属性は破棄されます。
[in] | div | 角数 |
[in] | rad | 底面半径 |
[in] | height | 高さ |
void FK_CLI::fk_Modify::SetConeDivide | ( | int | div | ) |
正多角錐(円錐)角数設定メソッド
MakeCone() によって正多角錐(円錐)を生成した後に、 角数を設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | div | 角数 |
void FK_CLI::fk_Modify::SetConeRadius | ( | double | rad | ) |
正多角錐(円錐)底面半径設定メソッド
MakeCone() によって正多角錐(円錐)を生成した後に、 底面外接円半径を設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | rad | 底面半径 |
void FK_CLI::fk_Modify::SetConeHeight | ( | double | height | ) |
正多角錐(円錐)高さ設定メソッド
MakeCone() によって正多角錐(円錐)を生成した後に、 高さを設定しなおします。 このメソッドは、 MakeCone() によって球形状を生成した場合のみ有効であり、 それ以外の形状状態に対してこのメソッドを呼んだときの挙動は保証されません。
[in] | height | 高さ |
bool FK_CLI::fk_Modify::MoveVPosition | ( | int | vertexID, |
fk_Vector ^ | pos, | ||
int | order | ||
) |
頂点移動メソッド1-1
指定された頂点を移動します。
[in] | vertexID | 頂点ID。 |
[in] | pos | 移動先の位置ベクトル |
[in] | order | 最初の頂点IDを補正するオーダー。通常は 0 を入力して下さい。 |
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 | 移動先の位置ベクトル |
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 を入力して下さい。 |
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 成分 |
void FK_CLI::fk_Modify::SubDivShape | ( | int | count | ) |
細分割曲面生成メソッド
このメソッドは、細分割曲面 (Subdivision Surface) 手法に基づいた面分割を行います。 分割回数を増加するほど細分割曲面に形状は近くなりますが、 面数は大きく増加します。 現状では、曲面生成手法は「Catmull-Clark 手法」のみをサポートしています。
[in] | count | 分割回数。 |