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

オイラー操作用クラス [詳解]

#include <FK/Operation.h>

+ FK::fk_Operation の継承関係図
+ FK::fk_Operation 連携図

公開メンバ関数

 fk_Operation (fk_DataBase *=nullptr)
 コンストラクタ
 
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=nullptr, fk_Half *H_12=nullptr, fk_Half *H_21=nullptr, fk_Half *H_22=nullptr)
 稜線生成関数
 
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)
 形状全体テセレーション状態参照関数
 
- 基底クラス FK::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
 全隣接ループ参照関数
 
- 基底クラス FK::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
 ループ上頂点数参照関数
 
- 基底クラス FK::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
 ループ所属稜線参照関数
 
- 基底クラス FK::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
 ループ数参照関数
 
void getVertexList (std::list< fk_Vertex * > *list)
 頂点コンテナ取得関数
 
void getHalfList (std::list< fk_Half * > *list)
 半稜線コンテナ取得関数
 
void getEdgeList (std::list< fk_Edge * > *list)
 稜線コンテナ取得関数
 
void getLoopList (std::list< fk_Loop * > *list)
 ループコンテナ取得関数
 
- 基底クラス FK::fk_Shape に属する継承公開メンバ関数
 fk_Shape (fk_Type=fk_Type::SHAPE)
 コンストラクタ
 
virtual ~fk_Shape ()
 デストラクタ
 
fk_RealShapeType getRealShapeType (void)
 形状データ構造取得関数
 
void setShaderAttribute (std::string name, int dim, std::vector< int > *array, bool self=false)
 シェーダー内 attribute 変数設定関数1
 
void setShaderAttribute (std::string name, int dim, std::vector< float > *array, bool self=false)
 シェーダー内 attribute 変数設定関数2
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_Vector > *array)
 シェーダー内 attribute 変数設定関数3
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_TexCoord > *array)
 シェーダー内 attribute 変数設定関数4
 
void setShaderAttribute (std::string name, int dim, std::vector< fk_HVector > *array)
 シェーダー内 attribute 変数設定関数5
 
void modifyAttribute (std::string name)
 attribute 変数更新関数
 
- 基底クラス FK::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 型、値が std::string 型である属性設定関数
 
bool setAttrSI (const std::string key, const int value)
 キーが std::string 型、値が int 型である属性設定関数
 
bool setAttrSD (const std::string key, const double value)
 キーが std::string 型、値が double 型である属性設定関数
 
bool setAttrSS (const std::string key, const std::string value)
 キーが std::string 型、値が std::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 型、値が std::string 型である属性参照関数
 
int getAttrSI (const std::string key) const
 キーが std::string 型、値が int 型である属性参照関数
 
double getAttrSD (const std::string key) const
 キーが std::string 型、値が double 型である属性参照関数
 
std::string getAttrSS (const std::string key) const
 キーが std::string 型、値が std::string 型である属性参照関数
 
bool existAttrII (const int key) const
 キーが int 型、値が int 型である属性存在参照関数
 
bool existAttrID (const int key) const
 キーが int 型、値が double 型である属性存在参照関数
 
bool existAttrIS (const int key) const
 キーが int 型、値が std::string 型である属性存在参照関数
 
bool existAttrSI (const std::string key) const
 キーが std::string 型、値が int 型である属性存在参照関数
 
bool existAttrSD (const std::string key) const
 キーが std::string 型、値が double 型である属性存在参照関数
 
bool existAttrSS (const std::string key) const
 キーが std::string 型、値が std::string 型である属性存在参照関数
 
bool deleteAttrII (const int key)
 キーが int 型、値が int 型である属性消去関数
 
bool deleteAttrID (const int key)
 キーが int 型、値が double 型である属性消去関数
 
bool deleteAttrIS (const int key)
 キーが int 型、値が std::string 型である属性消去関数
 
bool deleteAttrSI (const std::string key)
 キーが std::string 型、値が int 型である属性消去関数
 
bool deleteAttrSD (const std::string key)
 キーが std::string 型、値が double 型である属性消去関数
 
bool deleteAttrSS (const std::string key)
 キーが std::string 型、値が std::string 型である属性消去関数
 
- 基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
 fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
 コンストラクタ
 
fk_Type getObjectType (void) const
 タイプ取得関数
 

詳解

オイラー操作用クラス

このクラスは、 fk_Solid クラスのインスタンスにおいて、 位相操作を含む様々な変形に関する基本的な機能を提供します。 fk_Solid の位相についての詳細は、 ユーザーズマニュアルの「形状に対する高度な操作」という章を参照して下さい。

境界表現によるソリッドモデルでは、 数種類の基本的な操作によって変形処理を実現します。 これを「オイラー操作」と呼び、 fk_Solid では 12 種類のオイラー操作が存在します。 どのような複雑な変形処理であっても、 これらのオイラー操作のみ合わせによって実現しています。 より高機能な形状操作機能については、 fk_Modify クラスの各機能を参照して下さい。

オイラー操作のもう一つの特徴は、 任意の操作について必ず「逆操作」が存在するということです。 これは、どのような変形処理についても、 元の形状に戻すための操作が必ず存在することを保障するということです。 このことにより、 fk_Solid では回数無制限の履歴操作を実現しています。 履歴操作については undoHistory(), redoHistory() を参照して下さい。

なお、本クラスの解説は独自の用語を用います。定義を以下に述べます。

参照
fk_Solid, fk_Modify, fk_DataAccess, fk_ReferenceL1, fk_ReferenceL2, fk_ReferenceL3

構築子と解体子

◆ fk_Operation()

FK::fk_Operation::fk_Operation ( fk_DataBase *  = nullptr)

コンストラクタ

◆ ~fk_Operation()

virtual FK::fk_Operation::~fk_Operation ( )
virtual

デストラクタ

関数詳解

◆ makeVertex()

fk_Vertex * FK::fk_Operation::makeVertex ( const fk_Vector  P)

頂点生成関数

任意の位置に新たに頂点位相を生成します。 既にその位置に頂点が存在していたとしても、同じ場所に生成します。

なお、この操作の逆操作は deleteVertex() 関数となります。

makeVertex と deleteVertex
引数
[in]P新規頂点の位置ベクトル
戻り値
新規頂点位相インスタンス

◆ deleteVertex()

bool FK::fk_Operation::deleteVertex ( fk_Vertex V)

頂点削除関数

独立頂点を削除します。 頂点が接続頂点であった場合や、 形状中に存在していなかった場合は変形操作を行いません。

なお、この操作の逆操作は makeVertex() 関数となります。

makeVertex と deleteVertex
引数
[in]V頂点位相インスタンス
戻り値
削除に成功すれば true を、失敗すれば false を返します。

◆ moveVertex()

bool FK::fk_Operation::moveVertex ( fk_Vertex V,
fk_Vector  P 
)

頂点移動関数

任意頂点を指定した位置に移動します。 頂点は独立頂点であっても接続頂点であっても構いません。 形状中に存在していなかった場合は変形操作を行いません。

この操作の逆操作はこの関数自身となります。

moveVertex
引数
[in]V頂点位相インスタンス
[in]P移動先の位置ベクトル
戻り値
移動に成功すれば true を、失敗すれば false を返します。

◆ makeEdge()

fk_Edge * FK::fk_Operation::makeEdge ( fk_Vertex V_1,
fk_Vertex V_2,
fk_Half H_11 = nullptr,
fk_Half H_12 = nullptr,
fk_Half H_21 = nullptr,
fk_Half H_22 = nullptr 
)

稜線生成関数

稜線を新たに生成します。 この関数は、新稜線の端点となる頂点 V1, V2 の状態によって、 以下の3通りの処理を行います。

  1. V_1 と V_2 が共に独立頂点の場合。
    この場合は、H_11, H_12, H_21, H_22 のいずれも nullptr を代入します。 引数自体を省略しても構いません。

  2. V_1 が接続頂点で、V_2 が独立頂点の場合。
    新たに生成される稜線の半稜線を H1, H2 とし、 H1 の始点が V_1、H2 の始点が V_2 であるとします。 このとき、H_11 には接続後に H1 の前となる半稜線を代入します。 H_12 には、H2 の後となる半稜線を代入します。 このとき、H_11 および H_12 は未定義半稜線である必要があります。 H_21 と H_22 には nullptr を代入します。 H_21 と H_22 の引数は省略しても構いません。

  3. V_1, V_2 のいずれも接続頂点の場合。
    新たに生成される稜線の半稜線を H1, H2 とし、 H1 の始点が V_1、H2 の始点が V_2 であるとします。 このとき、以下のような想定となる半稜線をそれぞれ代入します。
    • H_11 は H1 の前
    • H_12 は H2 の後
    • H_21 は H2 の前
    • H_22 は H1 の後
    上記のいずれの半稜線も未定義稜線でなければなりません。

なお、この操作の逆操作は deleteEdge() 関数となります。

makeEdge と deleteEdge
引数
[in]V_1新稜線の端点位相インスタンス
[in]V_2新稜線の端点位相インスタンス
[in]H_11半稜線位相インスタンス。詳細は上記参照のこと。
[in]H_12半稜線位相インスタンス。詳細は上記参照のこと。
[in]H_21半稜線位相インスタンス。詳細は上記参照のこと。
[in]H_22半稜線位相インスタンス。詳細は上記参照のこと。
戻り値
新稜線の生成に成功した場合、その位相インスタンスを返します。 失敗した場合は nullptr を返します。

◆ deleteEdge()

bool FK::fk_Operation::deleteEdge ( fk_Edge E)

稜線削除関数

未定義稜線を削除します。 稜線が定義稜線であった場合や、 形状中に存在していなかった場合は変形操作を行いません。

なお、この操作の逆操作は makeEdge() 関数となります。

makeEdge と deleteEdge
引数
[in]E稜線位相インスタンス
戻り値
削除に成功すれば true を、失敗すれば false を返します。

◆ makeLoop()

fk_Loop * FK::fk_Operation::makeLoop ( fk_Half H)

ループ生成関数

ループを新たに生成します。 引数に与えられる H が未定義半稜線である場合、 H が属する半稜線列の親ループとして新規ループが生成され、 それまで空洞であった場所に面が貼られます。 H が定義半稜線である場合は、生成に失敗することになります。

なお、この操作の逆操作は deleteLoop() 関数となります。

makeLoop と deleteLoop
引数
[in]H未定義半稜線位相インスタンス
戻り値
生成に成功した場合、そのループ位相インスタンスを返します。 失敗した場合は nullptr を返します。

◆ deleteLoop()

bool FK::fk_Operation::deleteLoop ( fk_Loop L)

ループ削除関数

ループを削除します。 成功した場合、存在していた面がなくなり空洞状態となります。 また、削除したループを親ループとして持っていた半稜線は、 全て未定義半稜線となります。

なお、この操作の逆操作は makeLoop() 関数となります。

makeLoop と deleteLoop
引数
[in]Lループ位相インスタンス
戻り値
成功した場合 true を、失敗した場合 false を返します。

◆ separateLoop()

fk_Edge * FK::fk_Operation::separateLoop ( fk_Half H1,
fk_Half H2 
)

ループ分割関数

ループを分割します。 引数の H1 と H2 は同じループに属している必要があります。 分割の際に生成される稜線の端点は、 H1 の終点にあたる頂点と H2 の始点にあたる頂点となります。 始点した端点の間に既に稜線が存在していた場合であっても、 分割処理は行われます。 (その場合は、片方の面が縮退することになります。) 分割に成功した場合、H1 と H2 は新規ループ側に属することになりますので、 新規ループの位相インスタンスを得たい場合は H1 や H2 の親ループを参照して下さい。

なお、この操作の逆操作は uniteLoop() 関数となります。

separateLoop と uniteLoop
引数
[in]H1半稜線位相インスタンス
[in]H2半稜線位相インスタンス
戻り値
成功した場合、新規稜線の位相インスタンスを返します。 失敗した場合は nullptr を返します。

◆ uniteLoop()

bool FK::fk_Operation::uniteLoop ( fk_Edge E)

ループ結合関数

両側にループを保持する稜線 E を削除し、 両側のループを結合します。 E が両側にループを持つ稜線ではない場合は、 失敗として扱われ変形操作は行われません。

なお、この操作の逆操作は separateLoop() 関数となります。

separateLoop と uniteLoop
引数
[in]E稜線位相インスタンス
戻り値
成功すれば true を、失敗すれば false を返します。

◆ separateEdge()

fk_Vertex * FK::fk_Operation::separateEdge ( fk_Edge E)

稜線分離関数

任意稜線を分割し、新たな頂点を稜線の両端点の中点位置に生成します。

なお、この操作の逆操作は uniteEdge() 関数となります。

separateEdge と uniteEdge
引数
[in]E稜線位相インスタンス
戻り値
成功すれば新規に生成された頂点位相インスタンスを返します。 失敗した場合は nullptr を返します。

◆ uniteEdge()

bool FK::fk_Operation::uniteEdge ( fk_Vertex V)

稜線結合関数

2本の任意稜線を 1 本に結合します。 結合する稜線の間にある頂点位相 V を引数として入力します。 成功した場合は、V は削除されます。 V に接続している稜線が 2 本でなかった場合は失敗となり、形状操作は行われません。

なお、この操作の逆操作は separateEdge() 関数となります。

separateEdge と uniteEdge
引数
[in]V頂点位相インスタンス
戻り値
成功すれば true を、失敗すれば false を返します。

◆ negateBody()

void FK::fk_Operation::negateBody ( void  )

形状反転関数

形状全体の表裏を反転します。 内部的には、全ての稜線において半稜線の左右を入れ替えるという処理を行います。 この処理により、位相関係は以下のような状況となります。

  • 関係の変わらないもの
    • 頂点と半稜線の組み合わせ
    • 稜線と半稜線の組み合わせ
    • ループと頂点の組み合わせ
    • ループと稜線の組み合わせ
  • 関係が変化するもの
    • ループと半稜線の組み合わせ
    • 半稜線の接続

この操作の逆操作はこの関数自身となります。

◆ setHistoryMode()

void FK::fk_Operation::setHistoryMode ( bool  mode)

履歴保存モード設定関数

履歴保存モードの有無効を設定します。 デフォルトでは「無効」となっており、 変形操作による履歴は保存されません。 この関数で「有効」に設定した時点から保存されます。 従って、設定を有効にする前の履歴は一切保存されないということに注意して下さい。

また、モードが有効となっている状態から無効に設定しなおしたとき、 有効時に保存されていた履歴は全て破棄されます。

引数
[in]modetrue の場合、履歴保存モードを有効とします。 false の場合は無効とします。
参照
getHistoryMode(), setHistoryMark()

◆ getHistoryMode()

bool FK::fk_Operation::getHistoryMode ( void  )

履歴保存モード参照関数

履歴保存モードの状態を返します。 履歴保存モードについては、 setHistoryMode() の解説を参照して下さい。

戻り値
有効である場合 true を、無効である場合 false を返します。
参照
setHistoryMode()

◆ setHistoryMark()

void FK::fk_Operation::setHistoryMark ( void  )

履歴マーク設定関数

履歴操作を行う場合は、「マーク」というものを設定する必要があります。 このマークとは、形状の状態の「スナップショット」を保管するもので、 UNDO 操作や REDO 操作を行った際にはマークを行った時点まで戻ります。

UNDO 操作は undoHistory() 関数を、 REDO 操作は redoHistory() 関数を用います。

参照
setHistoryMode(), undoHistory(), redoHistory()

◆ undoHistory()

bool FK::fk_Operation::undoHistory ( void  )

UNDO 操作実行関数

形状を、前に setHistoryMark() 関数によってマークした状態まで戻します。 複数回呼び出した場合は、マークした順番を逆に辿って戻していきます。 これを「UNDO 操作」と呼びます。 例えば、形状の初期状態を A、変形を進めてマークした状態を順番に B、C、D とします。これを以下のように表記します。 アスタリスクは現時点での形状を意味します。

  • A → B → C → *D

D の状態の形状にたいし、UNDO 操作を行うと形状は C、B、A と 順番に戻っていきます。

  • A → B → C → *D
  • A → B → *C → D
  • A → *B → C → D
  • *A → B → C → D

マークが以前にない状態で UNDO 操作を行った場合は、 履歴保存モードを有効にした時点まで戻ります。

戻した状態の形状を、改めて先の段階に戻す操作を「REDO 操作」と言います。 前述した例で、説明すると、D から一端 A まで戻した形状に対し、 REDO 操作を行うと B、C、D と移っていくということです。図にすると、

  • *A → B → C → D
  • A → *B → C → D
  • A → B → *C → D
  • A → B → C → *D

となっていくことを意味します。

ただし、UNDO 操作で戻した形状に対し、 REDO 操作以外の形状変形操作を行った場合、 先の履歴部分については破棄されてしまいます。 前述の例で説明すると、D の状態を一端 B にまで UNDO 操作で戻します。 図にすると、

  • A → B → C → *D

この D の状態から、

  • A → *B → C → D

この B の状態になるということです。ここで B の形状に変形操作を行うと、 C や D に至るための履歴情報が破棄されます。

  • A → B → *B'

ただし、図にあるように B より前の履歴情報については保持されます。

戻り値
UNDO 操作に成功した場合 true を、失敗した場合 false を返します。
参照
redoHistory()

◆ redoHistory()

bool FK::fk_Operation::redoHistory ( void  )

REDO 操作実行関数

UNDO 操作によって以前の状態に戻した形状に対し、 その後にマークした状態まで形状を戻します。 UNDO 操作や REDO 操作に関しての詳細は、 undoHistory() 関数の解説を参照して下さい。

戻り値
REDO 操作に成功した場合 true を、失敗した場合 false を返します。
参照
undoHistory()

◆ setTesselateMode()

void FK::fk_Operation::setTesselateMode ( bool  mode)

形状全体テセレーション設定関数

形状中の全てのループに対し、テセレーションの有無効を設定します。 この関数を呼ぶ前に行ったループ個別の設定は全て破棄されます。 テセレーションについての詳細は、 fk_Loop::setTesselateMode() 関数の解説を参照して下さい。

引数
[in]modetrue の場合、全てのループのテセレーションを有効とします。 false の場合は無効とします。
参照
fk_Loop::setTesselateMode()

◆ getTesselateMode()

bool FK::fk_Operation::getTesselateMode ( void  )

形状全体テセレーション状態参照関数

直近の setTesselateMode() 関数による設定を返します。 これは、 setTesselateMode() によって形状全体の設定がなされた後、 fk_Loop::setTesselateMode() によって個別に有無効を設定されていた場合でも、 個別設定とは無関係です。 例えば、この関数で true が返ってきたとしても、 全てのループでテセレーションが有効となっているとは限りません。

戻り値
直近の setTesselateMode() 関数による設定値を返します。