FineKernelToolKit: FK::fk_Model クラス

FineKernelToolKit 4.3.0

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

モデルを生成、管理するクラス [詳解]

`#include <FK/Model.h>`

FK::fk_Model の継承関係図
[凡例]
FK::fk_Model 連携図
[凡例]

## 公開メンバ関数

| fk_Model (fk_Shape *shape=nullptr)
| コンストラクタ
virtual | ~fk_Model ()
| デストラクタ
unsigned int | getID (void) const
| ID参照関数
回転制御関数
bool | glRotate (fk_Vector origin, fk_Axis axis, double theta)
| グローバル座標系座標軸回転関数1
bool | glRotate (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| グローバル座標系座標軸回転関数2
bool | glRotate (fk_Vector A, fk_Vector B, double theta)
| グローバル座標系任意軸回転関数1
bool | glRotate (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| グローバル座標系任意軸回転関数2
bool | loRotate (fk_Vector origin, fk_Axis axis, double theta)
| ローカル座標系座標軸回転関数1
bool | loRotate (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| ローカル座標系座標軸回転関数2
bool | loRotate (fk_Vector A, fk_Vector B, double theta)
| ローカル座標系任意軸回転関数1
bool | loRotate (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| ローカル座標系任意軸回転関数2
bool | glRotateWithVec (fk_Vector origin, fk_Axis axis, double theta)
| グローバル座標系座標軸回転(姿勢付き)関数1
bool | glRotateWithVec (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| グローバル座標系座標軸回転(姿勢付き)関数2
bool | glRotateWithVec (fk_Vector A, fk_Vector B, double theta)
| グローバル座標系任意軸回転(姿勢付き)関数1
bool | glRotateWithVec (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| グローバル座標系任意軸回転(姿勢付き)関数2
bool | loRotateWithVec (fk_Vector origin, fk_Axis axis, double theta)
| ローカル座標系座標軸回転(姿勢付き)関数1
bool | loRotateWithVec (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| ローカル座標系座標軸回転(姿勢付き)関数2
bool | loRotateWithVec (fk_Vector A, fk_Vector B, double theta)
| ローカル座標系任意軸回転(姿勢付き)関数1
bool | loRotateWithVec (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| ローカル座標系任意軸回転(姿勢付き)関数2
位置制御関数
bool | glTranslate (fk_Vector v)
| グローバル座標系平行移動関数1
bool | glTranslate (double x, double y, double z)
| グローバル座標系平行移動関数2
bool | loTranslate (fk_Vector v)
| ローカル座標系平行移動関数1
bool | loTranslate (double x, double y, double z)
| ローカル座標系平行移動関数2
bool | glMoveTo (fk_Vector p)
| グローバル座標系位置指定関数1
bool | glMoveTo (double x, double y, double z)
| グローバル座標系位置指定関数2
形状データ制御関数
void | setShape (fk_Shape *shape)
| 形状設定関数
fk_Shape * | getShape (void) const
| 形状参照関数
マテリアル属性設定関数
void | setMaterial (const fk_Material &mat)
| マテリアル設定関数
void | setPointColor (fk_Color *col)
| 頂点色設定関数1
void | setPointColor (float r, float g, float b)
| 頂点色設定関数2
void | setLineColor (fk_Color *col)
| 稜線色設定関数1
void | setLineColor (float r, float g, float b)
| 稜線色設定関数2
void | setCurveColor (fk_Color *col)
| 曲線色設定関数1
void | setCurveColor (float r, float g, float b)
| 曲線色設定関数2
マテリアル属性参照関数
fk_Material * | getMaterial (void)
| マテリアル参照関数
fk_Color * | getPointColor (void)
| 頂点色参照関数
fk_Color * | getLineColor (void)
| 稜線色参照関数
fk_Color * | getCurveColor (void)
| 曲線色参照関数
描画属性制御関数
void | setDrawMode (const fk_Draw mode)
| 描画モード設定関数
fk_Draw | getDrawMode (void) const
| 描画モード参照関数
void | setElementMode (const fk_ElementMode mode)
| 要素モード設定関数
fk_ElementMode | getElementMode (void) const
| 要素モード設定関数
void | setShadingMode (fk_ShadingMode mode)
| シェーディングモード設定関数
fk_ShadingMode | getShadingMode (void) const
| シェーディングモード取得関数
void | setBlendMode (const fk_BlendMode mode, const fk_BlendFactor srcFactor=fk_BlendFactor::SRC_ALPHA, const fk_BlendFactor dstFactor=fk_BlendFactor::ONE_MINUS_SRC_ALPHA)
| ブレンドモード設定関数
fk_BlendMode | getBlendMode (fk_BlendFactor *outSrc=nullptr, fk_BlendFactor *outDst=nullptr) const
| ブレンドモード参照関数
void | setSmoothMode (const bool mode)
| スムースモード設定関数
bool | getSmoothMode (void) const
| スムースモード参照関数
void | setReverseDrawMode (const bool mode)
| 描画順序制御関数
bool | getReverseDrawMode (void) const
| 描画順序参照関数
void | setDepthMode (const fk_DepthMode mode)
| 前後関係制御関数
fk_DepthMode | getDepthMode (void) const
| 前後関係参照関数
void | setTextureMode (fk_TexMode mode)
| テクスチャモード設定関数
fk_TexMode | getTextureMode (void)
| テクスチャモード取得関数
void | setPointSize (const double size)
| 頂点描画サイズ設定関数
double | getPointSize (void) const
| 頂点描画サイズ参照関数
void | setShadowEffect (bool mode)
| 影投影設定関数
bool | getShadowEffect (void)
| 影投影設定参照関数
void | setShadowDraw (bool mode)
| 影表示設定関数
bool | getShadowDraw (void)
| 影表示設定参照関数
void | setFogMode (bool mode)
| 霧効果設定関数
bool | getFogMode (void)
| 霧効果設定参照関数
座標系情報参照関数
fk_Matrix | getInhMatrix (void) const
| 継承変換行列取得関数
fk_Matrix | getInhInvMatrix (void) const
| 継承逆変換行列取得関数
fk_OrthoMatrix | getInhBaseMatrix (void) const
| 継承移動・回転要素変換行列取得関数
fk_OrthoMatrix | getInhInvBaseMatrix (void) const
| 継承移動・回転要素逆変換行列取得関数
fk_Vector | getInhPosition (void) const
| 継承位置ベクトル参照関数
fk_Vector | getInhVec (void) const
| 継承方向ベクトル参照関数
fk_Vector | getInhUpvec (void) const
| 継承アップベクトル参照関数
fk_Angle | getInhAngle (void) const
| 継承オイラー角参照関数
double | getInhScale (void) const
| 継承全体倍率取得関数
親子関係制御関数
bool | setParent (fk_Model *model, bool setMode=false)
| 親モデル設定関数
void | deleteParent (bool setMode=false)
| 親モデル解除関数
fk_Model * | getParent (void) const
| 親モデル参照関数
bool | entryChild (fk_Model *model, bool setMode=false)
| 子モデル設定関数
bool | deleteChild (fk_Model *model, bool setMode=false)
| 子モデル解除関数
void | deleteChildren (bool setMode=false)
| 全子モデル解除関数
fk_Model * | foreachChild (fk_Model *model)
| 子モデル逐次参照関数
状態保存制御関数
void | snapShot (void)
| 位置・姿勢保存関数
bool | restore (void)
| 位置・姿勢復元関数
bool | restore (double t)
| 位置・姿勢途中復元関数
描画制御用関数
void | setShader (fk_ShaderBinder *shader)
| シェーダー設定関数
fk_ShaderBinder * | getShader (void)
| シェーダー取得関数
境界ボリューム自動設定関数
void | adjustSphere (void)
| 境界球自動設定関数
void | adjustAABB (void)
| AABB 自動設定関数
void | adjustOBB (void)
| OBB 自動設定関数
void | adjustCapsule (void)
| 境界カプセル自動設定関数(全自動)
void | adjustCapsule (fk_Axis axis)
| 境界カプセル自動設定関数(座標軸による中心軸設定)
void | adjustCapsule (fk_Vector P, fk_Axis axis)
| 境界カプセル自動設定関数(中心軸上の点と座標軸)
void | adjustCapsule (fk_Vector S, fk_Vector E, bool mode=false)
| 境界カプセル自動設定関数(中心軸直接指定)
干渉判定・衝突判定関数
bool | isInter (fk_Model *model)
| モデル間干渉判定関数
std::tuple< bool, double > | isCollision (fk_Model *model)
| モデル間衝突判定関数
void | setInterMode (bool mode)
| 干渉継続モード設定関数
bool | getInterMode (void)
| 干渉継続モード取得関数
bool | getInterStatus (void)
| 干渉継続状態取得関数
void | resetInter (void)
| 干渉継続状態初期化関数
干渉自動停止制御関数
void | setInterStopMode (bool mode)
| 干渉自動停止モード設定関数
bool | getInterStopMode (void)
| 干渉自動停止モード取得関数
void | entryInterModel (fk_Model *model)
| 干渉自動停止モデル登録関数
void | deleteInterModel (fk_Model *model)
| 干渉自動停止モデル解除関数
void | clearInterModel (void)
| 干渉自動停止モデル初期化関数
基底クラス FK::fk_Boundary に属する継承公開メンバ関数
| fk_Boundary (fk_Type)
| コンストラクタ
virtual | ~fk_Boundary ()
| デストラクタ
void | setBMode (fk_BoundaryMode mode)
| 境界ボリューム選択関数
fk_BoundaryMode | getBMode (void)
| 境界ボリューム選択状態参照関数
void | setSphere (double r)
| 境界球半径設定関数
void | setSpherePos (fk_Vector pos)
| 境界球位置設定関数
double | getSphere (void)
| 境界球半径参照関数
fk_Vector | getSpherePos (void)
| 境界球位置参照関数
void | setAABBSize (double x, double y, double z)
| 軸平行境界ボックス (AABB) サイズ設定関数1
void | setAABBSize (fk_Vector size)
| 軸平行境界ボックス (AABB) サイズ設定関数2
void | setAABBMaxMin (fk_Vector max, fk_Vector min)
| 軸平行境界ボックス (AABB) 最大最小設定関数
void | setAABBMax (fk_Vector v)
| 軸平行境界ボックス (AABB) 最大値側設定関数
void | setAABBMin (fk_Vector v)
| 軸平行境界ボックス (AABB) 最小値側設定関数
fk_Vector | getAABBSize (void)
| 軸平行境界ボックス (AABB) サイズ取得関数
fk_Vector | getAABBMax (void)
| 軸平行境界ボックス (AABB) 最大値側取得関数
fk_Vector | getAABBMin (void)
| 軸平行境界ボックス (AABB) 最小値側取得関数
std::tuple< fk_Vector, fk_Vector > | getAABBMaxMin (void)
| 軸平行境界ボックス (AABB) 最大最小取得関数
void | setOBBSize (double x, double y, double z)
| 有向境界ボックス (OBB) サイズ設定関数1
void | setOBBSize (fk_Vector size)
| 有向境界ボックス (OBB) サイズ設定関数2
void | setOBBMaxMin (fk_Vector max, fk_Vector min)
| 有向境界ボックス (OBB) 最大最小設定関数
void | setOBBMax (fk_Vector v)
| 有向境界ボックス (OBB) 最大値側設定関数
void | setOBBMin (fk_Vector v)
| 有向境界ボックス (OBB) 最小値側設定関数
fk_Vector | getOBBSize (void)
| 有向境界ボックス (OBB) サイズ取得関数
fk_Vector | getOBBMax (void)
| 有向境界ボックス (OBB) 最大値側取得関数
fk_Vector | getOBBMin (void)
| 有向境界ボックス (OBB) 最小値側取得関数
std::tuple< fk_Vector, fk_Vector > | getOBBMaxMin (void)
| 有向境界ボックス (OBB) 最大最小取得関数
void | setCapsule (fk_Vector sPos, fk_Vector ePos, double r)
| カプセル型設定関数
void | setCapsuleStartPos (fk_Vector argP)
| カプセル型中心軸始点設定関数
void | setCapsuleEndPos (fk_Vector argP)
| カプセル型中心軸終点設定関数
void | setCapsuleRadius (double r)
| カプセル型領域規定距離設定関数
double | getCapsuleRadius (void)
| カプセル型領域規定距離取得関数
double | getCapsuleLength (void)
| カプセル型中心軸長取得関数
std::tuple< fk_Vector, fk_Vector > | getCapsulePos (void)
| カプセル型中心軸両端点取得関数
fk_Vector | getCapsuleStartPos (void)
| カプセル型中心軸始点取得関数
fk_Vector | getCapsuleEndPos (void)
| カプセル型中心軸終点取得関数
void | setBDrawToggle (bool mode)
| 境界ボリューム描画有無設定関数
bool | getBDrawToggle (void)
| 境界ボリューム描画有無取得関数
void | setBLineColor (fk_Color col)
| 境界ボリューム非干渉描画色設定関数
fk_Color * | getBLineColor (void)
| 境界ボリューム非干渉描画色取得関数
void | setBIntLineColor (fk_Color col)
| 境界ボリューム干渉状態描画色設定関数
fk_Color * | getBIntLineColor (void)
| 境界ボリューム干渉状態描画色取得関数
void | setBLineWidth (double width)
| 境界ボリューム描画線幅設定関数
double | getBLineWidth (void)
| 境界ボリューム描画線幅取得関数
基底クラス FK::fk_MatrixAdmin に属する継承公開メンバ関数
| fk_MatrixAdmin (fk_Type=fk_Type::MATRIXADMIN)
| コンストラクタ
virtual | ~fk_MatrixAdmin ()
| デストラクタ
fk_Vector | getPosition (void) const
| 位置ベクトル取得関数
fk_Vector | getVec (void) const
| 方向ベクトル取得関数
fk_Vector | getUpvec (void) const
| アップベクトル取得関数
fk_Angle | getAngle (void) const
| オイラー角取得関数
fk_Matrix | getMatrix (void) const
| 変換行列取得関数
fk_Matrix | getInvMatrix (void) const
| 逆変換行列取得関数
fk_OrthoMatrix | getBaseMatrix (void) const
| 移動・回転要素変換行列取得関数
fk_OrthoMatrix | getInvBaseMatrix (void) const
| 移動・回転要素逆変換行列取得関数
bool | setScale (const double scale)
| 全体絶対倍率設定関数
bool | setScale (const double scale, fk_Axis axis)
| 軸方向絶対倍率設定関数
bool | setScale (const double x, const double y, const double z)
| 軸方向個別絶対倍率設定関数
bool | prdScale (const double scale)
| 全体相対倍率設定関数
bool | prdScale (const double scale, fk_Axis axis)
| 軸方向相対倍率設定関数
bool | prdScale (const double x, const double y, const double z)
| 軸方向個別相対倍率設定関数
double | getScale (void) const
| 全体倍率取得関数
double | getScale (fk_Axis axis) const
| 軸方向倍率取得関数
bool | getScaleMode (void) const
| 拡大縮小状態判定関数
bool | glRotate_ (fk_Vector &origin, fk_Axis axis, double theta)
| グローバル座標系座標軸回転関数1
bool | glRotate_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| グローバル座標系座標軸回転関数2
bool | glRotate_ (fk_Vector &A, fk_Vector &B, double theta)
| グローバル座標系任意軸回転関数1
bool | glRotate_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| グローバル座標系任意軸回転関数2
bool | loRotate_ (fk_Vector &origin, fk_Axis axis, double theta)
| ローカル座標系座標軸回転関数1
bool | loRotate_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| ローカル座標系座標軸回転関数2
bool | loRotate_ (fk_Vector &A, fk_Vector &B, double theta)
| ローカル座標系任意軸回転関数1
bool | loRotate_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| ローカル座標系任意軸回転関数2
bool | glRotateWithVec_ (fk_Vector &origin, fk_Axis axis, double theta)
| グローバル座標系座標軸回転(姿勢付き)関数1
bool | glRotateWithVec_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| グローバル座標系座標軸回転(姿勢付き)関数2
bool | glRotateWithVec_ (fk_Vector &A, fk_Vector &B, double theta)
| グローバル座標系任意軸回転(姿勢付き)関数1
bool | glRotateWithVec_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| グローバル座標系任意軸回転(姿勢付き)関数2
bool | loRotateWithVec_ (fk_Vector &origin, fk_Axis axis, double theta)
| ローカル座標系座標軸回転(姿勢付き)関数1
bool | loRotateWithVec_ (double orgX, double orgY, double orgZ, fk_Axis axis, double theta)
| ローカル座標系座標軸回転(姿勢付き)関数2
bool | loRotateWithVec_ (fk_Vector &A, fk_Vector &B, double theta)
| ローカル座標系任意軸回転(姿勢付き)関数1
bool | loRotateWithVec_ (double Ax, double Ay, double Az, double Bx, double By, double Bz, double theta)
| ローカル座標系任意軸回転(姿勢付き)関数2
bool | glTranslate_ (fk_Vector &v)
| グローバル座標系平行移動関数1
bool | glTranslate_ (double x, double y, double z)
| グローバル座標系平行移動関数2
bool | loTranslate_ (fk_Vector &v)
| ローカル座標系平行移動関数1
bool | loTranslate_ (double x, double y, double z)
| ローカル座標系平行移動関数2
bool | glMoveTo_ (fk_Vector &p)
| グローバル座標系位置指定関数1
bool | glMoveTo_ (double x, double y, double z)
| グローバル座標系位置指定関数2
bool | glFocus (fk_Vector p)
| グローバル座標系注視点設定関数1
bool | glFocus (double x, double y, double z)
| グローバル座標系注視点設定関数2
bool | loFocus (fk_Vector p)
| ローカル座標系注視点設定関数1
bool | loFocus (double x, double y, double z)
| ローカル座標系注視点設定関数2
bool | glVec (fk_Vector v)
| グローバル座標系方向ベクトル設定関数1
bool | glVec (double x, double y, double z)
| グローバル座標系方向ベクトル設定関数2
bool | glUpvec (fk_Vector v)
| グローバル座標系アップベクトル設定関数1
bool | glUpvec (double x, double y, double z)
| グローバル座標系アップベクトル設定関数2
bool | loUpvec (fk_Vector v)
| ローカル座標系アップベクトル設定関数1
bool | loUpvec (double x, double y, double z)
| ローカル座標系アップベクトル設定関数2
bool | glAngle (fk_Angle angle)
| グローバル座標系オイラー角設定関数1
bool | glAngle (double h, double p, double b)
| グローバル座標系オイラー角設定関数2
bool | loAngle (fk_Angle angle)
| ローカル座標系オイラー角設定関数1
bool | loAngle (double h, double p, double b)
| ローカル座標系オイラー角設定関数2
基底クラス FK::fk_BaseObject に属する継承公開メンバ関数
| fk_BaseObject (fk_Type type=fk_Type::BASEOBJECT)
| コンストラクタ
fk_Type | getObjectType (void) const
| タイプ取得関数

## 物理シミュレーション関数

void | defaultPhysics (void)
void | setPhysicsWorld (fk_PhysicsWorld *world)
void | setInertia (fk_Vector ine)
| 慣性モーメント設定関数
void | setMass (double mass)
| 質量設定関数
void | setRestitution (double res)
| 反射係数設定関数
void | setDynamics (bool mode)
| 運動有無設定関数
void | setDamping (double sd, double rd)
| 摩擦係数設定関数
void | addForce (fk_Vector f)
| 外力設定関数
static void | stepSimulation (float, int)

## 詳解

モデルを生成、管理するクラス

このクラスは、「モデル」を制御する機能を提供します。 FK における「モデル」とは、位置や方向を持ったオブジェクトのことを指します。 利用者は、 このクラスを通じてカメラを含むオブジェクトの位置や姿勢を制御していきます。 従って、このクラスは FK システムにおいて最も中心的な存在であると言えます。 位置や姿勢を制御するための関数の多くは、 fk_MatrixAdmin クラスから継承しています。 (ただし、後述する「親子関係」に関連する機能は本クラス自体が持っています。) fk_MatrixAdmin クラスの説明も合わせて参照して下さい。

FK において、モデルと形状は別の存在として扱います。 形状は別のクラスで作成しておき、 モデルに対して形状をリンクするという考え方です。 このような設計になっている利点は、 まず第1に1つのモデルが複数の形状を使い分けられるということがあります。 第2に、1つの形状を複数のモデルで共有することでメモリ利用量を削減できます。 形状については fk_Shape クラスおよびその派生クラスを参照して下さい。

位置や姿勢の制御と共に、このクラスの重要な機能の1つが「親子関係」です。 あるモデルを別のモデルに「子モデル」として登録したとします。 親モデルの位置や姿勢を制御すると、 子モデルの形状は親モデル内の形状と同じように追従するようになります。 例えば、車を車体モデルとタイヤモデルで別々に作成し、 タイヤモデルを車体モデルの子モデルとして登録しておけば、 車体モデルの位置移動にあわせてタイヤモデルも位置関係を維持しながら 一緒に移動します。 マテリアルや頂点色、稜線色については、 何も設定しない場合は親モデルの設定が用いられます。 それぞれのモデルにマテリアルや色属性を設定した場合、 そのモデルについては個々の設定が利用されるようになります。

また、モデル同士の干渉判定や衝突判定を検出することができます。 干渉・衝突判定を行うには、 まず「境界ボリューム」と呼ばれるモデルを覆う領域を設定します。 その後、その境界ボリューム同士が干渉部分や衝突時間の検出を行うことで実現します。 本マニュアルにおいて、「干渉判定」と「衝突判定」は以下のような意味を持ちます。

- 干渉判定:
  ある時点において、モデル同士に干渉部分があるかどうかを判定すること。
- 衝突判定:
  2つのモデルが時刻 t0 から t1 まで等速度直線運動をしていたと仮定した場合に、 途中で衝突が起こったかどうかを判定すること。

本クラスのメンバ関数では、以下のような機能を提供します。

- setShape() にて形状を設定した後に自動的に境界ボリュームのサイズを設定する機能。
- 干渉判定や衝突判定を行う機能。
- 登録しておいたモデルと干渉した場合に自動的に停止する機能。

干渉判定は現在すべての種類の境界ボリュームで対応していますが、 同じ種類同士である必要があります。 衝突判定については、現在は境界球のみで対応しています。 境界ボリュームの種類に関する解説や、適用する境界ボリュームの選択については fk_Boundary クラスのリファレンスを参照して下さい。

参照
  fk_MatrixAdmin, fk_Boundary, fk_Shape, fk_Scene, fk_DisplayLink

## 構築子と解体子

## ◆ fk_Model()

FK::fk_Model::fk_Model | ( | fk_Shape * | shape = nullptr | ) |

コンストラクタ

引数

  [in] | shape | 形状インスタンスのポインタ。 nullptr を代入した場合や引数を省略した場合は、 初期形状が無い状態になります。

## ◆ ~fk_Model()

virtual FK::fk_Model::~fk_Model | ( |  | ) |

virtual

デストラクタ

## 関数詳解

## ◆ getID()

unsigned int FK::fk_Model::getID | ( | void |  | ) | const

ID参照関数

モデルの固有IDを取得します。 IDの最小値は 1 で、 同一プロセス中では同じ ID が別のモデルに割り振られることはありません。

戻り値
  固有モデルID

## ◆ glRotate() [1/4]

bool FK::fk_Model::glRotate | ( | fk_Vector | origin,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | origin | グローバル座標系での回転軸上の点
  [in] | axis | 回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotateWithVec(fk_Vector, fk_Axis, double), loRotate(fk_Vector, fk_Axis, double), fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Axis, double)

## ◆ glRotate() [2/4]

bool FK::fk_Model::glRotate | ( | double | orgX,
|  | double | orgY,
|  | double | orgZ,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(orgX, orgY, orgZ) を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | orgX | グローバル座標系での回転軸上の点のx成分
  [in] | orgY | グローバル座標系での回転軸上の点のy成分
  [in] | orgZ | グローバル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotateWithVec(double, double, double, fk_Axis, double), loRotate(double, double, double, fk_Axis, double), fk_MatrixAdmin::glRotate_(double, double, double, fk_Axis, double)

## ◆ glRotate() [3/4]

bool FK::fk_Model::glRotate | ( | fk_Vector | A,
|  | fk_Vector | B,
|  | double | theta )

グローバル座標系任意軸回転関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | A | 回転軸上の1点。B と一致してはいけません。
  [in] | B | 回転軸上の1点。A と一致してはいけません。
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(fk_Vector, fk_Vector, double), loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::glRotate_(fk_Vector &, fk_Vector &, double)

## ◆ glRotate() [4/4]

bool FK::fk_Model::glRotate | ( | double | Ax,
|  | double | Ay,
|  | double | Az,
|  | double | Bx,
|  | double | By,
|  | double | Bz,
|  | double | theta )

グローバル座標系任意軸回転関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は glRotateWithVec() を利用して下さい。 ローカル座標系で回転移動を行いたい場合は loRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotate_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | Ax | 回転軸上の1点 A の x 成分
  [in] | Ay | 回転軸上の1点 A の y 成分
  [in] | Az | 回転軸上の1点 A の z 成分
  [in] | Bx | 回転軸上の1点 B の x 成分
  [in] | By | 回転軸上の1点 B の y 成分
  [in] | Bz | 回転軸上の1点 B の z 成分
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::glRotate_(double, double, double, double, double, double, double)

## ◆ loRotate() [1/4]

bool FK::fk_Model::loRotate | ( | fk_Vector | origin,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | origin | ローカル座標系での回転軸上の点
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotate(fk_Vector, fk_Axis, double), loRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Axis, double)

## ◆ loRotate() [2/4]

bool FK::fk_Model::loRotate | ( | double | orgX,
|  | double | orgY,
|  | double | orgZ,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) (orgX, orgY, orgZ) を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | orgX | ローカル座標系での回転軸上の点のx成分
  [in] | orgY | ローカル座標系での回転軸上の点のy成分
  [in] | orgZ | ローカル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotate(double, double, double, fk_Axis, double), loRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::loRotate_(double, double, double, fk_Axis, double)

## ◆ loRotate() [3/4]

bool FK::fk_Model::loRotate | ( | fk_Vector | A,
|  | fk_Vector | B,
|  | double | theta )

ローカル座標系任意軸回転関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | A | ローカル座標系における回転軸上の1点。B と一致してはいけません。
  [in] | B | ローカル座標系における回転軸上の1点。A と一致してはいけません。
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(fk_Vector, fk_Vector, double), loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::loRotate_(fk_Vector &, fk_Vector &, double)

## ◆ loRotate() [4/4]

bool FK::fk_Model::loRotate | ( | double | Ax,
|  | double | Ay,
|  | double | Az,
|  | double | Bx,
|  | double | By,
|  | double | Bz,
|  | double | theta )

ローカル座標系任意軸回転関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) (Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は位置のみを回転させるもので、姿勢は回転しません。 姿勢の回転も伴いたい場合は loRotateWithVec() を利用して下さい。 グローバル座標系で回転移動を行いたい場合は glRotate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotate_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | Ax | ローカル座標系における回転軸上の1点 A の x 成分
  [in] | Ay | ローカル座標系における回転軸上の1点 A の y 成分
  [in] | Az | ローカル座標系における回転軸上の1点 A の z 成分
  [in] | Bx | ローカル座標系における回転軸上の1点 B の x 成分
  [in] | By | ローカル座標系における回転軸上の1点 B の y 成分
  [in] | Bz | ローカル座標系における回転軸上の1点 B の z 成分
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::loRotate_(double, double, double, double, double, double, double)

## ◆ glRotateWithVec() [1/4]

bool FK::fk_Model::glRotateWithVec | ( | fk_Vector | origin,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転(姿勢付き)関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、origin を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | origin | グローバル座標系での回転軸上の点
  [in] | axis | 回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotate(fk_Vector, fk_Axis, double), loRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Axis, double)

## ◆ glRotateWithVec() [2/4]

bool FK::fk_Model::glRotateWithVec | ( | double | orgX,
|  | double | orgY,
|  | double | orgZ,
|  | fk_Axis | axis,
|  | double | theta )

グローバル座標系座標軸回転(姿勢付き)関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(orgX, orgY, orgZ) を通り、 axis で指定した座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | orgX | グローバル座標系での回転軸上の点のx成分
  [in] | orgY | グローバル座標系での回転軸上の点のy成分
  [in] | orgZ | グローバル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行な軸。fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  glRotate(double, double, double, fk_Axis, double), loRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::glRotateWithVec_(double, double, double, fk_Axis, double)

## ◆ glRotateWithVec() [3/4]

bool FK::fk_Model::glRotateWithVec | ( | fk_Vector | A,
|  | fk_Vector | B,
|  | double | theta )

グローバル座標系任意軸回転(姿勢付き)関数1

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | A | 回転軸上の1点。B と一致してはいけません。
  [in] | B | 回転軸上の1点。A と一致してはいけません。
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotate(fk_Vector, fk_Vector, double), loRotateWithVec(fk_Vector, fk_Vector, double), fk_MatrixAdmin::glRotateWithVec_(fk_Vector &, fk_Vector &, double)

## ◆ glRotateWithVec() [4/4]

bool FK::fk_Model::glRotateWithVec | ( | double | Ax,
|  | double | Ay,
|  | double | Az,
|  | double | Bx,
|  | double | By,
|  | double | Bz,
|  | double | theta )

グローバル座標系任意軸回転(姿勢付き)関数2

モデルの位置を、グローバル座標系によって回転した場所に移動します。 回転軸は、(Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は glRotate() を利用して下さい。 ローカル座標系で回転移動(姿勢付き)を行いたい場合は、 loRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、同機能を持つ fk_MatrixAdmin::glRotateWithVec_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | Ax | 回転軸上の1点 A の x 成分
  [in] | Ay | 回転軸上の1点 A の y 成分
  [in] | Az | 回転軸上の1点 A の z 成分
  [in] | Bx | 回転軸上の1点 B の x 成分
  [in] | By | 回転軸上の1点 B の y 成分
  [in] | Bz | 回転軸上の1点 B の z 成分
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotate(double, double, double, double, double, double, double), loRotateWithVec(double, double, double, double, double, double, double), fk_MatrixAdmin::glRotateWithVec_(double, double, double, double, double, double, double)

## ◆ loRotateWithVec() [1/4]

bool FK::fk_Model::loRotateWithVec | ( | fk_Vector | origin,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転(姿勢付き)関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) origin を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | origin | ローカル座標系での回転軸上の点
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  loRotate(fk_Vector, fk_Axis, double), glRotateWithVec(fk_Vector, fk_Axis, double), fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Axis, double)

## ◆ loRotateWithVec() [2/4]

bool FK::fk_Model::loRotateWithVec | ( | double | orgX,
|  | double | orgY,
|  | double | orgZ,
|  | fk_Axis | axis,
|  | double | theta )

ローカル座標系座標軸回転(姿勢付き)関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は(ローカル座標系における) (orgX, orgY, orgZ) を通り、 axis で指定した (ローカル座標系における) 座標軸に平行な直線となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(double, double, double, fk_Axis, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | orgX | ローカル座標系での回転軸上の点のx成分
  [in] | orgY | ローカル座標系での回転軸上の点のy成分
  [in] | orgZ | ローカル座標系での回転軸上の点のz成分
  [in] | axis | 回転軸に平行なローカル座標系上の軸。 fk_X, fk_Y, fk_Z のいずれかになります。
  [in] | theta | 回転角度(ラジアン)

戻り値
  この関数は常に true を返します。

参照
  loRotate(double, double, double, fk_Axis, double), glRotateWithVec(double, double, double, fk_Axis, double), fk_MatrixAdmin::loRotateWithVec_(double, double, double, fk_Axis, double)

## ◆ loRotateWithVec() [3/4]

bool FK::fk_Model::loRotateWithVec | ( | fk_Vector | A,
|  | fk_Vector | B,
|  | double | theta )

ローカル座標系任意軸回転(姿勢付き)関数1

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) A と B を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Vector &, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | A | ローカル座標系における回転軸上の1点。B と一致してはいけません。
  [in] | B | ローカル座標系における回転軸上の1点。A と一致してはいけません。
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(fk_Vector, fk_Vector, double) loRotate(fk_Vector, fk_Vector, double), fk_MatrixAdmin::loRotateWithVec_(fk_Vector &, fk_Vector &, double)

## ◆ loRotateWithVec() [4/4]

bool FK::fk_Model::loRotateWithVec | ( | double | Ax,
|  | double | Ay,
|  | double | Az,
|  | double | Bx,
|  | double | By,
|  | double | Bz,
|  | double | theta )

ローカル座標系任意軸回転(姿勢付き)関数2

モデルの位置を、ローカル座標系によって回転した場所に移動します。 回転軸は、(ローカル座標系における) (Ax, Ay, Az) と (Bx, By, Bz) を通る軸となります。 回転角度は theta となります。単位は弧度法(ラジアン)です。

この関数は、回転の際に姿勢も回転していきます。 位置のみの回転を行いたい場合は loRotate() を利用して下さい。 グローバル座標系で回転移動(姿勢付き)を行いたい場合は、 glRotateWithVec() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、同機能を持つ fk_MatrixAdmin::loRotateWithVec_(double, double, double, double, double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | Ax | ローカル座標系における回転軸上の1点 A の x 成分
  [in] | Ay | ローカル座標系における回転軸上の1点 A の y 成分
  [in] | Az | ローカル座標系における回転軸上の1点 A の z 成分
  [in] | Bx | ローカル座標系における回転軸上の1点 B の x 成分
  [in] | By | ローカル座標系における回転軸上の1点 B の y 成分
  [in] | Bz | ローカル座標系における回転軸上の1点 B の z 成分
  [in] | theta | 回転角度(ラジアン)

戻り値
  回転が成功した場合 true を返します。 A と B が同一位置ベクトルであった場合、 回転せずに false を返します。

参照
  glRotateWithVec(double, double, double, double, double, double, double), loRotate(double, double, double, double, double, double, double), fk_MatrixAdmin::loRotateWithVec_(double, double, double, double, double, double, double)

## ◆ glTranslate() [1/2]

bool FK::fk_Model::glTranslate | ( | fk_Vector | v | ) |

グローバル座標系平行移動関数1

モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。

ローカル座標系による平行移動量の指定を行いたい場合は、 loTranslate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glTranslate_(fk_Vector &) を用いた方が、処理がわずかに速くなります。

引数

  [in] | v | 平行移動量ベクトル

戻り値
  この関数は常に true を返します。

参照
  loTranslate(fk_Vector), fk_MatrixAdmin::glTranslate_(fk_Vector &)

## ◆ glTranslate() [2/2]

bool FK::fk_Model::glTranslate | ( | double | x,
|  | double | y,
|  | double | z )

グローバル座標系平行移動関数2

モデルを、クローバル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。

ローカル座標系による平行移動量の指定を行いたい場合は、 loTranslate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glTranslate_(double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | x | 平行移動量ベクトルのx成分
  [in] | y | 平行移動量ベクトルのy成分
  [in] | z | 平行移動量ベクトルのz成分

戻り値
  この関数は常に true を返します。

参照
  loTranslate(double, double, double), fk_MatrixAdmin::glTranslate_(double, double, double)

## ◆ loTranslate() [1/2]

bool FK::fk_Model::loTranslate | ( | fk_Vector | v | ) |

ローカル座標系平行移動関数1

モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルで指定します。

グローバル座標系による平行移動量の指定を行いたい場合は、 glTranslate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loTranslate_(fk_Vector &) を用いた方が、処理がわずかに速くなります。

引数

  [in] | v | 平行移動量ベクトル

戻り値
  この関数は常に true を返します。

参照
  glTranslate(fk_Vector), glMoveTo(fk_Vector), fk_MatrixAdmin::loTranslate_(fk_Vector &)

## ◆ loTranslate() [2/2]

bool FK::fk_Model::loTranslate | ( | double | x,
|  | double | y,
|  | double | z )

ローカル座標系平行移動関数2

モデルを、ローカル座標系によって平行移動した位置に移動します。 平行移動量はベクトルの成分を意味する3個の実数で指定します。

グローバル座標系による平行移動量の指定を行いたい場合は、 glTranslate() を利用して下さい。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::loTranslate_(double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | x | 平行移動量ベクトルのx成分
  [in] | y | 平行移動量ベクトルのy成分
  [in] | z | 平行移動量ベクトルのz成分

戻り値
  この関数は常に true を返します。

参照
  glTranslate(double, double, double), glMoveTo(double, double, double), fk_MatrixAdmin::loTranslate_(double, double, double)

## ◆ glMoveTo() [1/2]

bool FK::fk_Model::glMoveTo | ( | fk_Vector | p | ) |

グローバル座標系位置指定関数1

モデルの位置を、指定した位置ベクトルに移動します。 位置はベクトルで指定します。

glMoveTo() 関数に対応するローカル座標系関数 「loMoveTo()」関数は存在しません。 これは、loMoveTo() 関数はその意味的に loTranslate() とまったく同一の挙動となるためです。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glMoveTo_(fk_Vector &) を用いた方が、処理がわずかに速くなります。

引数

  [in] | p | 移動先位置ベクトル

戻り値
  この関数は常に true を返します。

参照
  glTranslate(fk_Vector), loTranslate(fk_Vector), fk_MatrixAdmin::glMoveTo_(fk_Vector &)

## ◆ glMoveTo() [2/2]

bool FK::fk_Model::glMoveTo | ( | double | x,
|  | double | y,
|  | double | z )

グローバル座標系位置指定関数2

モデルの位置を、指定した位置ベクトルに移動します。 位置はベクトルの成分を意味する3個の実数で指定します。

glMoveTo() 関数に対応するローカル座標系関数 「loMoveTo()」関数は存在しません。 これは、loMoveTo() 関数はその意味的に loTranslate() とまったく同一の挙動となるためです。

覚え書き
  「干渉自動停止モード」を利用しない場合は、 同機能を持つ fk_MatrixAdmin::glMoveTo_(double, double, double) を用いた方が、処理がわずかに速くなります。

引数

  [in] | x | 移動先位置ベクトルのx成分
  [in] | y | 移動先位置ベクトルのy成分
  [in] | z | 移動先位置ベクトルのz成分

戻り値
  この関数は常に true を返します。

参照
  glTranslate(double, double, double), loTranslate(double, double, double), fk_MatrixAdmin::glMoveTo_(double, double, double)

## ◆ setShape()

void FK::fk_Model::setShape | ( | fk_Shape * | shape | ) |

形状設定関数

モデルの形状を設定します。 形状は、 fk_Shape クラスの派生クラスであれば設定可能です。 なお、呼ぶ前に形状が設定されていた場合、前の設定は破棄されます。

設定した形状インスタンスは、モデルに設定した状態で解放しないようにしてください。 もし解放された場合、プログラムが誤動作を起こします。

引数

  [in] | shape | 形状インスタンスのポインタ

## ◆ getShape()

fk_Shape * FK::fk_Model::getShape | ( | void |  | ) | const

形状参照関数

現在設定されている形状を取得します。 形状が設定されていない場合は nullptr を返します。

戻り値
  形状インスタンスのポインタ

## ◆ setMaterial()

void FK::fk_Model::setMaterial | ( | const fk_Material & | mat | ) |

マテリアル設定関数

モデルの基本マテリアルを設定します。 マテリアルに関しての詳細は、 fk_Material の説明およびユーザーズマニュアルを参照して下さい。

覚え書き
  稜線の色は setLineColor(), 頂点の色は setPointColor(), 曲線の色は setCurveColor() を利用して設定して下さい。 個別位相要素のマテリアルとの制御については、 setMaterialMode() を参照して下さい。 テクスチャを描画する際には、テクスチャモードによって混合の仕方が異なりますので、 fk_Texture::setTextureMode() を参照して下さい。

引数

  [in] | mat | マテリアル

参照
  fk_Material, setLineColor(), setPointColor(), fk_Texture::setTextureMode()

## ◆ setPointColor() [1/2]

void FK::fk_Model::setPointColor | ( | fk_Color * | col | ) |

頂点色設定関数1

モデルの頂点色を設定します。 頂点は、光源による陰影の影響はなく、常に設定色で表示されます。

引数

  [in] | col | 頂点色のポインタ

参照
  fk_Color

## ◆ setPointColor() [2/2]

void FK::fk_Model::setPointColor | ( | float | r,
|  | float | g,
|  | float | b )

頂点色設定関数2

モデルの頂点色を設定します。 頂点は、光源による陰影の影響はなく、常に設定色で表示されます。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。

引数

  [in] | r | 頂点色の赤要素
  [in] | g | 頂点色の緑要素
  [in] | b | 頂点色の青要素

## ◆ setLineColor() [1/2]

void FK::fk_Model::setLineColor | ( | fk_Color * | col | ) |

稜線色設定関数1

モデルの稜線色を設定します。 稜線は、光源による陰影の影響はなく、常に設定色で表示されます。

引数

  [in] | col | 稜線色のポインタ

参照
  fk_Color

## ◆ setLineColor() [2/2]

void FK::fk_Model::setLineColor | ( | float | r,
|  | float | g,
|  | float | b )

稜線色設定関数2

モデルの稜線色を設定します。 稜線は、光源による陰影の影響はなく、常に設定色で表示されます。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。

引数

  [in] | r | 稜線色の赤要素
  [in] | g | 稜線色の緑要素
  [in] | b | 稜線色の青要素

## ◆ setCurveColor() [1/2]

void FK::fk_Model::setCurveColor | ( | fk_Color * | col | ) |

曲線色設定関数1

モデルの曲線色を設定します。 曲線は、光源による陰影の影響はなく、常に設定色で表示されます。

引数

  [in] | col | 曲線色のポインタ

参照
  fk_Color

## ◆ setCurveColor() [2/2]

void FK::fk_Model::setCurveColor | ( | float | r,
|  | float | g,
|  | float | b )

曲線色設定関数2

モデルの曲線色を設定します。 曲線は、光源による陰影の影響はなく、常に設定色で表示されます。 各色要素は 0 から 1 までの値を取ります。 それ以外の値が与えられた場合、0 以下なら 0 に、1 以上なら 1 に丸められます。

引数

  [in] | r | 曲線色の赤要素
  [in] | g | 曲線色の緑要素
  [in] | b | 曲線色の青要素

## ◆ getMaterial()

fk_Material * FK::fk_Model::getMaterial | ( | void |  | ) |

マテリアル参照関数

現在モデルに設定されている基本マテリアルを参照します。

戻り値
  基本マテリアルのポインタ

参照
  fk_Material, setMaterial()

## ◆ getPointColor()

fk_Color * FK::fk_Model::getPointColor | ( | void |  | ) |

頂点色参照関数

現在モデルに設定されている頂点色を参照します。

戻り値
  頂点色のポインタ

参照
  fk_Color, setPointColor()

## ◆ getLineColor()

fk_Color * FK::fk_Model::getLineColor | ( | void |  | ) |

稜線色参照関数

現在モデルに設定されている稜線色を参照します。

戻り値
  稜線色のポインタ

参照
  fk_Color, setLineColor()

## ◆ getCurveColor()

fk_Color * FK::fk_Model::getCurveColor | ( | void |  | ) |

曲線色参照関数

現在モデルに設定されている曲線色を参照します。

戻り値
  曲線色のポインタ

参照
  fk_Color, setCurveColor()

## ◆ setDrawMode()

void FK::fk_Model::setDrawMode | ( | const fk_Draw | mode | ) |

描画モード設定関数

モデルの描画モードを設定します。 描画モードとは、 面、稜線、頂点のそれぞれを描画するかどうかを制御するものです。 描画モード種類は以下のとおりです。

- fk_Draw::NONE: 何も描画しません。
- fk_Draw::POINT: 頂点を描画します。 曲線・曲面の場合は制御点を描画します。
- fk_Draw::LINE: 稜線を描画します。 曲線・曲面の場合は制御点を結ぶポリラインを描画します。
- fk_Draw::FACE: 面の表を描画します。
- fk_Draw::BACK_FACE: 面の裏を描画します。
- fk_Draw::FRONTBACK_FACE: 面の表と裏を描画します。
- fk_Draw::TEXTURE: テクスチャを描画します。
- fk_Draw::GEOM_LINE: 曲線や、曲面グリッド線を描画します。
- fk_Draw::GEOM_POINT: 曲線上や曲面上の分割点を描画します。
- fk_Draw::GEOM_FACE: 曲面を描画します。

これらの描画モードは、 ビット論理和を用いて複数のものを同時に指定することが可能です。 以下のコードは、頂点、稜線、面の表をすべて描画するように設定します。

    fk_Model        model;

    model.setDrawMode(fk_Draw::POINT | fk_Draw::LINE | fk_Draw::FACE);

引数

  [in] | mode | 描画モード

## ◆ getDrawMode()

fk_Draw FK::fk_Model::getDrawMode | ( | void |  | ) | const

描画モード参照関数

現在の描画モードを参照します。

戻り値
  描画モード

参照
  setDrawMode()

## ◆ setElementMode()

void FK::fk_Model::setElementMode | ( | const fk_ElementMode | mode | ) |

要素モード設定関数

形状表示の際、モデル設定と形状個別要素設定のどちらを採用するかを設定します。 モードには以下のものがあります。

- fk_ElementMode::NONE: 何も描画しません。
- fk_ElementMode::MODEL: モデル設定を優先します。
- fk_ElementMode::ELEMENT: 形状内の個別要素設定を優先します。

引数

  [in] | mode | 設定モード

## ◆ getElementMode()

fk_ElementMode FK::fk_Model::getElementMode | ( | void |  | ) | const

要素モード設定関数

表示の際の優先モードを取得します。

戻り値
  設定モード

参照
  setElementMode()

## ◆ setShadingMode()

void FK::fk_Model::setShadingMode | ( | fk_ShadingMode | mode | ) |

シェーディングモード設定関数

面描画またはテクスチャ描画の際の、 シェーディングアルゴリズムを設定します。 グーローシェーディングは、各頂点ごとに発色輝度を計算し、 頂点以外の面内部は色値の線形補間によって発色輝度を決定します。 フォンシェーディングでは、色値ではなく法線ベクトルを補間決定し、 面内部の発色は補間法線ベクトルに対し発色輝度を計算します。 一般的には、速度重視の場合はグーロー、質重視の場合はフォンを選択します。 なお、本館数は面またはテクスチャの描画の際のみに関与するものであり、 線や点の描画の際には影響を及ぼしません。

引数

  [in] | mode | モード

## ◆ getShadingMode()

fk_ShadingMode FK::fk_Model::getShadingMode | ( | void |  | ) | const

シェーディングモード取得関数

表示の差異のシェーディングモードを取得します。

戻り値
  モード

参照
  setShadingMode()

## ◆ setBlendMode()

void FK::fk_Model::setBlendMode | ( | const fk_BlendMode | mode,
|  | const fk_BlendFactor | srcFactor = fk_BlendFactor::SRC_ALPHA,
|  | const fk_BlendFactor | dstFactor = fk_BlendFactor::ONE_MINUS_SRC_ALPHA )

ブレンドモード設定関数

テクスチャ画像を伴うモデルを表示する場合、 表示色はテクスチャ画像の各画素色と、 モデルに設定されているマテリアルの両方が関与します。 この関数は、テクスチャ画像の画素色とモデルのマテリアル色に対し、 どのような計算式で双方を混合(ブレンド)するかを設定します。 ここでブレンドモードを設定しても、fk_Scene:setBlendStatus() で ブレンドを有効にしていないと実際の描画で有効になりません。 ブレンドモードの設定は、一般的な設定をプリセットの中から選択するか、 カスタムモードを選択した上で、入力ピクセルと出力ピクセルに対する係数を 個別に指定するかのどちらかによって行います。

引数

  [in]

  mode

  ブレンドモードを設定します。与えられる値は以下の8種類です。
  - fk_BlendMode::ALPHA: 通常のアルファブレンドです。初期値です。
  - fk_BlendMode::NEGATIVE: 反転ブレンドです。
  - fk_BlendMode::ADDITION: 加算ブレンドです。
  - fk_BlendMode::SCREEN: アルファ付き加算ブレンドです。
  - fk_BlendMode::LIGHTEN: 入出力ピクセルのうち明るい方を採用するブレンドです。
  - fk_BlendMode::MULTIPLY: 乗算ブレンドです。
  - fk_BlendMode::NONE: ブレンドを行いません。 fk_Scene 側の設定によらずブレンドを無効にします。
  - fk_BlendMode::CUSTOM: カスタムモードです。第 2,3 引数にて指定した 係数を用いた計算式でブレンドします。

  [in]

  srcFactor

  入力ピクセルに対する係数を設定します。 mode に fk_BlendMode::CUSTOM を指定した場合のみ有効です。 それ以外のモードでは省略可能です。 本関数の仕様は OpenGL 関数の glBlendFunc() に準拠します。 詳細は glBlendFunc() の情報を参照して下さい。 与えられる値は以下の10種類で、 それぞれの値に「GL」に置き換えた GLenum 型の値に対応します。
  - fk_BlendFactor::ZERO
  - fk_BlendFactor::ONE
  - fk_BlendFactor::SRC_COLOR
  - fk_BlendFactor::ONE_MINUS_SRC_COLOR
  - fk_BlendFactor::DST_COLOR
  - fk_BlendFactor::ONE_MINUS_DST_COLOR
  - fk_BlendFactor::SRC_ALPHA
  - fk_BlendFactor::ONE_MINUS_SRC_ALPHA
  - fk_BlendFactor::DST_ALPHA
  - fk_BlendFactor::ONE_MINUS_DST_ALPHA

  [in] | dstFactor | 出力ピクセルに対する係数を設定します。 mode に fk_BlendFactor::CUSTOM を指定した場合のみ有効です。 それ以外のモードでは省略可能です。与えられる値は srcFactor と同様です。

参照
  getBlendMode(), fk_Scene::setBlendStatus(), fk_Scene::getBlendStatus()

## ◆ getBlendMode()

fk_BlendMode FK::fk_Model::getBlendMode | ( | fk_BlendFactor * | outSrc = nullptr,
|  | fk_BlendFactor * | outDst = nullptr ) const

ブレンドモード参照関数

モデルのブレンドモードを取得します。

引数

  [out] | outSrc | 入力ピクセルにかかる係数の種類を取得します。省略可能です。
  [out] | outDst | 出力ピクセルにかかる係数の種類を取得します。省略可能です。

戻り値
  ブレンドモード

参照
  setBlendMode()

## ◆ setSmoothMode()

void FK::fk_Model::setSmoothMode | ( | const bool | mode | ) |

スムースモード設定関数

モデルのスムースモードを設定します。 スムースモードを有効にすると、 形状の隣り合う面同士の法線ベクトルが補間され、 擬似的に滑らかな曲面として表示を行うようになります。

引数

  [in] | mode | true である場合、スムースモードを有効とします。 false である場合無効とします。

## ◆ getSmoothMode()

bool FK::fk_Model::getSmoothMode | ( | void |  | ) | const

スムースモード参照関数

現在のモデルのスムースモードを取得します。

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

参照
  setSmoothMode()

## ◆ setReverseDrawMode()

void FK::fk_Model::setReverseDrawMode | ( | const bool | mode | ) |

描画順序制御関数

この関数では、モデルの持つ位相要素の描画順序を制御します。 モデルの各位相要素が同一平面上にあり、描画順序を逆にしたい場合に用います。

引数

  [in] | mode | true の場合、モデル内の描画が通常と逆順になります。 false の場合、順序を通常の状態に戻します。

## ◆ getReverseDrawMode()

bool FK::fk_Model::getReverseDrawMode | ( | void |  | ) | const

描画順序参照関数

setReverseDrawMode() で設定した描画順序を取得します。

戻り値
  逆順である場合 true を、正順である場合 false を返します。

参照
  setReverseDrawMode()

## ◆ setDepthMode()

void FK::fk_Model::setDepthMode | ( | const fk_DepthMode | mode | ) |

前後関係制御関数

この関数では、モデルを描画する際の前後関係に関する設定を制御します。 fk_Scene::entryOverlayModel()でも前後関係を無視した描画はできますが、 通常の描画中に前後関係を無視したり、 半透明物体が後続の描画の前後関係に作用しないようにするなど、 細かな調整を行いたい場合に用います。

引数

  [in]

  mode

  前後関係の処理モードを設定します。与えられる値は以下の4種類です。
  - fk_DepthMode::NO_USE: 前後関係の参照も更新も行わず、常に上書きします。
  - fk_DepthMode::READ: 前後関係を参照してチェックします。
  - fk_DepthMode::WRITE: 前後関係を更新して後続の描画に影響するようにします。
  - fk_DepthMode::READ_AND_WRITE: 前後関係を参照しつつ更新します。 fk_DepthMode::READ | fk_DepthMode::WRITE と等価です。初期値です。

## ◆ getDepthMode()

fk_DepthMode FK::fk_Model::getDepthMode | ( | void |  | ) | const

前後関係参照関数

setDepthMode() で設定した前後関係の設定を取得します。

戻り値
  前後関係処理モード

参照
  setDepthMode()

## ◆ setTextureMode()

void FK::fk_Model::setTextureMode | ( | fk_TexMode | mode | ) |

テクスチャモード設定関数

テクスチャの描画時における描画色処理モードを設定します。 これは、ポリゴンに設定されているマテリアルによる発色と、 テクスチャ画像の色をどのように混成するかを制御するものです。 それぞれのモードの概要と厳密な計算式を以下に記載します。 なお、数式中の \( C_f \) はポリゴン色、 \( C_\alpha \) ポリゴンの透明度、 \( T_f \) はテクスチャピクセル色、 \( T_\alpha \) はテクスチャの透明度を表します。

- fk_TexMode::MODULATE
  この設定では、ポリゴンの色とテクスチャの色を積算します。 そのため、光源による陰影効果が生じます。 透明度に関しても積算となります。 数式として表すと、色と透明度はそれぞれ

  \[ (C_f T_f, \; C_\alpha T_\alpha) \]

  となります。
- fk_TexMode::REPLACE
  この設定では、ポリゴンの色は完全に無視され、 テクスチャのピクセル色がそのまま表示されます。 そのため、光源による陰影効果が生じません。 また、テクスチャ画像の透明度はそのまま描画に反映されます。 数式として表すと、色と透明度はそれぞれ

  \[ (T_f, \; T_\alpha) \]

  となります。
- fk_TexMode::DECAL
  この設定では、各ピクセルの透明度に応じて、 ポリゴン色とピクセル色の混合が行われます。 光源による陰影効果は、ピクセルの透明度が低い場合に強くなります。 透明度は、ポリゴンの透明度がそのまま適用されます。 これを数式として表すと、色と透明度はそれぞれ

  \[ (C_f (1-T_\alpha) + T_f T_\alpha, \; C_\alpha) \]

  となります。
- fk_TexMode::NONE
  この設定では、 fk_Model での設定は無視し、 fk_Texture::setTextureMode() での設定に従います。

デフォルトでは fk_TexMode::NONE が設定されています。 なお、同様の設定は fk_Texture::setTextureMode() でも行うことが可能で、 fk_Model 側で fk_TexMode::NONE 以外が設定されている場合は fk_Model 側の設定が優先されます。 fk_Model 側で fk_TexMode::NONE が設定されている場合のみ、 fk_Texture 側での設定が有効となります。

引数

  [in] | mode | モード

参照
  getTextureMode(), fk_Texture::setTextureMode()

## ◆ getTextureMode()

fk_TexMode FK::fk_Model::getTextureMode | ( | void |  | ) |

テクスチャモード取得関数

現在のテクスチャモードを取得します。

戻り値
  テクスチャモード

参照
  setTextureMode()

## ◆ setPointSize()

void FK::fk_Model::setPointSize | ( | const double | size | ) |

頂点描画サイズ設定関数

頂点の描画サイズを設定します。 単位はピクセルです。整数以外も設定可能です。

引数

  [in] | size | 頂点描画サイズ

参照
  getPointSize(), setLineWidth()

## ◆ getPointSize()

double FK::fk_Model::getPointSize | ( | void |  | ) | const

頂点描画サイズ参照関数

頂点の描画サイズを取得します。

戻り値
  頂点描画サイズ

参照
  setPointSize()

## ◆ setShadowEffect()

void FK::fk_Model::setShadowEffect | ( | bool | mode | ) |

影投影設定関数

このモデルが別モデル(やこのモデル自身)へ影を投影するかどうかの設定を行います。 この設定を false にすると、シーン全体で影効果が有効であっても、 当モデルの影は別モデル(やこのモデル自身)に投影されなくなります。 デフォルトは true です。

他モデルの影をこのモデルに投影するかどうかを制御する場合は、 setShadowDraw() を用いてください。

引数

  [in] | mode | true で有効、false で無効となります。

参照
  setShadowDraw(), getShadowEffect(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

## ◆ getShadowEffect()

bool FK::fk_Model::getShadowEffect | ( | void |  | ) |

影投影設定参照関数

このモデルの影投影設定を参照します。 詳細は setShadowEffect() のマニュアルを参照して下さい。

戻り値
  影投影設定。true で有効、false で無効を意味します。

参照
  setShadowEffect(), getShadowDraw(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

## ◆ setShadowDraw()

void FK::fk_Model::setShadowDraw | ( | bool | mode | ) |

影表示設定関数

別モデルやこのモデル自身の影を、このモデルに投影するかどうかの設定を行います。

このモデルの影を別のモデル(や自分自身)に投影するかどうかの制御は、 setShadowEffect() を用いて下さい。

引数

  [in] | mode | true で有効、false で無効となります。

参照
  setShadowEffect(), getShadowDraw(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

## ◆ getShadowDraw()

bool FK::fk_Model::getShadowDraw | ( | void |  | ) |

影表示設定参照関数

このモデルの影表示設定を参照します。 詳細は setShadowDraw() のマニュアルを参照して下さい。

戻り値
  影表示設定。true で有効、false で無効を意味します。

参照
  setShadowDraw(), getShadowEffect(), fk_Scene::setShadowMode(), fk_AppWindow::setShadowMode()

## ◆ setFogMode()

void FK::fk_Model::setFogMode | ( | bool | mode | ) |

霧効果設定関数

このモデルの表示に対し霧効果の有効とするかどうかを設定します。 デフォルトでは有効となっています。

引数

  [in] | mode | true で有効、false で無効となります。

## ◆ getFogMode()

bool FK::fk_Model::getFogMode | ( | void |  | ) |

霧効果設定参照関数

霧効果が有効かどうかを参照します。

戻り値
  有効なら true、無効なら false を返します。

## ◆ getInhMatrix()

fk_Matrix FK::fk_Model::getInhMatrix | ( | void |  | ) | const

継承変換行列取得関数

モデルの位置と姿勢を表す変換行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積が返されます。 結果として、この関数を用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getMatrix() と結果が同じとなります。

戻り値
  モデルの継承変換行列

参照
  fk_MatrixAdmin::getMatrix(), getInhInvMatrix()

## ◆ getInhInvMatrix()

fk_Matrix FK::fk_Model::getInhInvMatrix | ( | void |  | ) | const

継承逆変換行列取得関数

モデルの位置と姿勢を表す変換行列の、逆行列を取得します。 これは、 getInhMatrix() で得られる行列の逆行列となります。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 結果として、この関数を用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getInvMatrix() と結果が同じとなります。

戻り値
  モデルの継承逆変換行列

参照
  fk_MatrixAdmin::getInvMatrix(), getInhMatrix()

## ◆ getInhBaseMatrix()

fk_OrthoMatrix FK::fk_Model::getInhBaseMatrix | ( | void |  | ) | const

継承移動・回転要素変換行列取得関数

モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの変換行列と当モデルの変換行列の積が返されます。 その結果として、この関数を用いることでグローバル座標系における 当モデルの変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getBaseMatrix() と結果が同じとなります。

戻り値
  モデルの継承移動・回転要素変換行列

参照
  fk_MatrixAdmin::getBaseMatrix(), getInhMatrix(), getInhInvBaseMatrix()

## ◆ getInhInvBaseMatrix()

fk_OrthoMatrix FK::fk_Model::getInhInvBaseMatrix | ( | void |  | ) | const

継承移動・回転要素逆変換行列取得関数

モデルの持つ変換要素のうち、 位置と姿勢のみを反映した、 すなわち拡大縮小の要素を省いた変換行列の逆行列を取得します。 当モデルに親モデルがあった場合、 その親モデルの逆変換行列と当モデルの逆変換行列の積が返されます。 その結果として、この関数を用いることでグローバル座標系における 当モデルの逆変換行列を得ることができます。 親モデルが設定されていない場合は、 fk_MatrixAdmin::getInvBaseMatrix() と結果が同じとなります。

戻り値
  モデルの継承移動・回転要素逆変換行列

参照
  fk_MatrixAdmin::getInvBaseMatrix(), getInhInvMatrix(), getInhBaseMatrix()

## ◆ getInhPosition()

fk_Vector FK::fk_Model::getInhPosition | ( | void |  | ) | const

継承位置ベクトル参照関数

モデルの位置ベクトルを取得します。 本関数は、親モデルの有無にかかわらず、グローバル座標系での実際の位置ベクトルを返します。

戻り値
  グローバル座標系での位置ベクトル

参照
  getInhVec(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getPosition()

## ◆ getInhVec()

fk_Vector FK::fk_Model::getInhVec | ( | void |  | ) | const

継承方向ベクトル参照関数

モデルの方向ベクトルを取得します。 本関数は、親モデルの有無にかかわらず、グローバル座標系での実際の方向ベクトルを返します。

戻り値
  グローバル座標系での方向ベクトル

参照
  getInhPosition(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getVec()

## ◆ getInhUpvec()

fk_Vector FK::fk_Model::getInhUpvec | ( | void |  | ) | const

継承アップベクトル参照関数

モデルのアップベクトルを取得します。 本関数は、親モデルの有無にかかわらず、 グローバル座標系での実際のアップベクトルを返します。

戻り値
  グローバル座標系でのアップベクトル

参照
  getInhPosition(), getInhVec(), getInhAngle(), fk_MatrixAdmin::getUpvec()

## ◆ getInhAngle()

fk_Angle FK::fk_Model::getInhAngle | ( | void |  | ) | const

継承オイラー角参照関数

モデルのオイラー角を取得します。 本関数は、親モデルの有無にかかわらず、グローバル座標系での実際のオイラー角を返します。 オイラー角の詳細については、 fk_Angle の説明を参照して下さい。

戻り値

参照
  getInhPosition(), getInhVec(), getInhUpvec(), fk_MatrixAdmin::getAngle(), fk_Angle

## ◆ getInhScale()

double FK::fk_Model::getInhScale | ( | void |  | ) | const

継承全体倍率取得関数

モデルの全体拡大・縮小倍率を取得します。 親子関係の小モデルの場合、親モデルでの倍率も反映されます。

戻り値
  継承全体拡大・縮小倍率

参照
  getInhPosition(), getInhVec(), getInhUpvec(), getInhAngle(), fk_MatrixAdmin::getScale()

## ◆ setParent()

bool FK::fk_Model::setParent | ( | fk_Model * | model,
|  | bool | setMode = false )

親モデル設定関数

親モデルを設定します。 親モデルは 1 個しか設定できません。 前に設定されていた場合は、前のモデル設定は破棄されます。

引数

  [in] | model | 親モデルインスタンスのポインタ
  [in] | setMode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル設定後も保持します。 false の場合は、当モデルでの位置と姿勢を親モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

参照
  deleteParent(), getParent(), entryChild()

## ◆ deleteParent()

void FK::fk_Model::deleteParent | ( | bool | setMode = false | ) |

親モデル解除関数

親モデルの設定を解除します。

引数

  [in] | setMode | true の場合、現在のグローバル座標系の位置と姿勢を、 親モデル解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

参照
  setParent(), getParent(), deleteChild()

## ◆ getParent()

fk_Model * FK::fk_Model::getParent | ( | void |  | ) | const

親モデル参照関数

親モデルを取得します。

戻り値
  親モデルインスタンスのポインタ。 親モデルが設定されていない場合は nullptr を返します。

参照
  setParent(), deleteParent()

## ◆ entryChild()

bool FK::fk_Model::entryChild | ( | fk_Model * | model,
|  | bool | setMode = false )

子モデル設定関数

子モデルを設定します。 子モデルは複数持つことが可能なので、 既に子モデルが登録されている場合でも、その設定は破棄されません。

引数

  [in] | model | 子モデルインスタンスのポインタ
  [in] | setMode | true の場合、子モデルの現在のグローバル座標系の位置と姿勢を、 設定後も保持します。 false の場合は、子モデルでの位置と姿勢を当モデルからの 相対的な位置、姿勢として扱います。 そのため、設定後にグローバル座標系での位置や姿勢は変化することになります。 この引数を省略した場合は false と同様の挙動となります。

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

参照
  setParent(), deleteChild(), deleteChildren(), foreachChild()

## ◆ deleteChild()

bool FK::fk_Model::deleteChild | ( | fk_Model * | model,
|  | bool | setMode = false )

子モデル解除関数

子モデルの設定を解除します。

引数

  [in] | model | 子モデルインスタンスのポインタ。 もし model が子モデルの中に存在しない場合は、false を返します。
  [in] | setMode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

戻り値
  解除に成功すれば true を、失敗すれば false を返します。

参照
  entryChild(), deleteChildren(), foreachChild()

## ◆ deleteChildren()

void FK::fk_Model::deleteChildren | ( | bool | setMode = false | ) |

全子モデル解除関数

当モデルの全ての子モデルの設定を解除します。

引数

  [in] | setMode | true の場合、子モデルのグローバル座標系の位置と姿勢を、 解除後も保持します。 false の場合は、親モデルからの相対的な位置と姿勢を、 解除後のグローバル座標系に設定します。 この引数を省略した場合は false と同様の挙動となります。

参照
  entryChild(), deleteChild(), foreachChild()

## ◆ foreachChild()

fk_Model * FK::fk_Model::foreachChild | ( | fk_Model * | model | ) |

子モデル逐次参照関数

当モデルに設定されている子モデルを順番に帰します。 まず、引数に nullptr を渡したとき、1番目の子モデルを返します。 子モデルが存在しない場合は、その時点で nullptr を返します。 次に、1番目に帰ってきたモデルを引数として渡したとき、 2番目の子モデルを返します。 このように、設定されている子モデルを順番に参照することができます。 最後の子モデルが引数として渡されたとき、nullptr を返します。

以下のコードは、「parent」の全ての子モデルに対し、 描画モードを fk_Draw::LINE に設定する例です。

    fk_Model    parentModel, *childModel;

    for(childModel = parentModel.foreachChild(nullptr);
        childModel != nullptr;
        childModel = parentModel.foreachChild(childModel)) {

        childModel->setDrawMode(fk_Draw::LINE);
    }

引数

  [in] | model | 順番に渡す子モデルインスタンスのポインタ

戻り値
  次にあたる子モデルインスタンスのポインタ。 引数に最後の子モデルが渡された場合、nullptr を返します。

参照
  entryChild(), deleteChild(), deleteChildren()

## ◆ snapShot()

void FK::fk_Model::snapShot | ( | void |  | ) |

位置・姿勢保存関数

現時点でのモデルの位置と姿勢を保存します。 restore() 関数を用いることで復元します。

参照
  restore(void), restore(double), setInterStopMode()

## ◆ restore() [1/2]

bool FK::fk_Model::restore | ( | void |  | ) |

位置・姿勢復元関数

snapShot() 関数によって保存した位置・姿勢を復元します。

戻り値
  復元に成功すれば true を、失敗すれば false を返します。

参照
  restore(double), snapShot(), setInterStopMode()

## ◆ restore() [2/2]

bool FK::fk_Model::restore | ( | double | t | ) |

位置・姿勢途中復元関数

snapShot() 関数によって保存した位置・姿勢に対し、 現在の位置・姿勢と線形補間した状態にします。

引数

  [in] | t | 線形補間パラメータ。 0 を snapShot() 関数による保存時、 1 を現時点とし、 与えられた実数によって線形補間した位置と姿勢に設定します。

戻り値
  設定に成功すれば true を、失敗すれば false を返します。

参照
  snapShot(), restore(void), isCollision()

## ◆ setShader()

void FK::fk_Model::setShader | ( | fk_ShaderBinder * | shader | ) |

シェーダー設定関数

この関数は、モデル描画の際のシェーダーを設定するものです。 fk_ShaderBinder::bindModel() による設定とまったく同じ挙動となります。

引数

  [in] | shader | シェーダープログラム

覚え書き
  シェーダーを未設定にし、デフォルトのシェーダーで描画したい場合は、 引数に nullptr を入力して下さい。

## ◆ getShader()

fk_ShaderBinder * FK::fk_Model::getShader | ( | void |  | ) |

シェーダー取得関数

setShader() (または fk_ShaderBinder::bindModel()) によって設定されたシェーダーを返します。

戻り値
  シェーダーを返します。 シェーダーが設定されていない場合は nullptr を返します。

## ◆ adjustSphere()

void FK::fk_Model::adjustSphere | ( | void |  | ) |

境界球自動設定関数

この関数は、 境界ボリュームである境界球の半径を自動的に設定するものです。 具体的には、モデルの中心から形状の最遠点となる点と中心との距離を半径とします。 その結果、すべての形状上の点は境界球の内側に入ることになります。 境界球に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界球半径は自動的に変化しません。 形状の全ての部分が境界球内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

参照
  isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setSphere(), fk_Boundary::getSphere()

## ◆ adjustAABB()

void FK::fk_Model::adjustAABB | ( | void |  | ) |

AABB 自動設定関数

この関数は、 境界ボリュームである AABB (軸平行境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が AABB の内部と入る条件を満たす最小の大きさが設定されます。 AABB に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 AABB の大きさは自動的に変化しません。 形状の全ての部分が AABB 内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。 また、AABB はその性質上、 モデルが回転した場合には形状が AABB の外側にはみ出る可能性がありますので、 モデルが回転した後も形状が AABB 内部にあることを保証するには、 回転した後に本関数を呼ぶ必要があります。

参照
  isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setAABBSize(double, double, double), fk_Boundary::setAABBSize(fk_Vector), fk_Boundary::getAABBSize()

## ◆ adjustOBB()

void FK::fk_Model::adjustOBB | ( | void |  | ) |

OBB 自動設定関数

この関数は、 境界ボリュームである OBB (有向境界ボックス) の大きさを自動的に設定するものです。 すべての頂点が OBB の内部と入る条件を満たす最小の大きさが設定されます。 OBB に関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 OBB の大きさは自動的に変化しません。 形状の全ての部分が OBB 内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

参照
  isInter(), isCollision(), fk_Boundary::setBMode(), fk_Boundary::setOBBSize(double, double, double), fk_Boundary::setOBBSize(fk_Vector), fk_Boundary::getOBBSize()

## ◆ adjustCapsule() [1/4]

void FK::fk_Model::adjustCapsule | ( | void |  | ) |

境界カプセル自動設定関数(全自動)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸の位置と向きは自動的に設定され、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

参照
  isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(fk_Axis), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ adjustCapsule() [2/4]

void FK::fk_Model::adjustCapsule | ( | fk_Axis | axis | ) |

境界カプセル自動設定関数(座標軸による中心軸設定)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 中心軸の位置は自動的に設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | axis | 中心軸に平行な座標軸

参照
  isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ adjustCapsule() [3/4]

void FK::fk_Model::adjustCapsule | ( | fk_Vector | P,
|  | fk_Axis | axis )

境界カプセル自動設定関数(中心軸上の点と座標軸)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の1点と、中心軸に平行な座標軸を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | P | 中心軸上の任意の点
  [in] | axis | 中心軸に平行な座標軸

参照
  isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Vector, bool), adjustCapsule(fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ adjustCapsule() [4/4]

void FK::fk_Model::adjustCapsule | ( | fk_Vector | S,
|  | fk_Vector | E,
|  | bool | mode = false )

境界カプセル自動設定関数(中心軸直接指定)

この関数は、 境界ボリュームである境界カプセルの大きさを自動的に設定するものです。 中心軸上の2点を設定することで、 すべての頂点が境界カプセルの内部と入る条件を満たす最小の大きさが設定されます。 境界カプセルに関する詳細は fk_Boundary クラスを参照して下さい。

覚え書き
  setShape() で別形状を設定した場合や、設定した形状を fk_IndexFaceSet::moveVPosition() などの関数によって変形した場合でも、 境界カプセルの大きさは自動的に変化しません。 形状の全ての部分が境界カプセル内部に入ることを保証するためには、 形状変化後に本関数を呼ぶ必要があります。

引数

  [in] | S | 中心軸始点位置ベクトル
  [in] | E | 中心軸終点位置ベクトル
  [in] | mode | true の場合、S と E を通る直線上で、 カプセル形状の体積が最小となるように、 S と E の位置を調整します。 false の場合は S と E を変更しません。 第3引数を省略した場合は、false がデフォルトとなります。

参照
  isInter(), isCollision(), adjustCapsule(fk_Vector, fk_Axis), adjustCapsule(fk_Axis), adjustCapsule(void), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ isInter()

bool FK::fk_Model::isInter | ( | fk_Model * | model | ) |

モデル間干渉判定関数

この関数は、別モデルとの干渉判定を行います。 干渉判定に用いられる境界ボリュームの種類は、 fk_Boundary::setBMode() で設定されたものが用いられます。 相手モデル側で別の種類が設定されていた場合でも、 この関数を呼び出しているインスタンス側の設定が優先されます。 従って、相手モデル側の境界ボリュームも適切に設定しておく必要があります。

覚え書き
  「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。

引数

  [in] | model | 干渉判定を行うモデル

戻り値
  干渉している場合 true を、していない場合 false を返します。

参照
  adjustSphere(), adjustAABB(), adjustOBB(), adjustCapsule(), isCollision(), snapShot(), restore(void), setInterStopMode(), entryInterModel(), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ isCollision()

std::tuple< bool, double > FK::fk_Model::isCollision | ( | fk_Model * | model | ) |

モデル間衝突判定関数

この関数は、別モデルとの衝突判定を行います。 衝突判定を行うには、まずそれぞれのモデルにおいて snapShot() 関数によって衝突判定を行う初期状態を設定しておく必要があります。 その状態から現在の位置まで、両モデルが等速度直線運動していると想定し、 その間に衝突が発生したかどうかを検出します。

なお、本関数を利用する際には事前に境界球の半径を適切に設定しておく必要があります。 現在この関数は境界球による判定のみが有効となります。 fk_Boundary::setBMode() によって境界ボリュームが別の種類に設定されていた場合でも、 境界球の情報のみが用いられます。

なお、衝突判定は snapShot() を呼ぶ以前や現時点以降を含めての検出となるので、 snapShot() を呼んだ時点から現時点までの間に衝突が起こったかどうかを判定するには、 返値第2引数の衝突時間を考慮する必要があります。

覚え書き
  「干渉判定」と「衝突判定」の違いに関しては、 本クラスの概要を参照して下さい。

引数

  [in] | model | 衝突判定を行うモデル

戻り値
  第1要素は、両モデルが等速度直線運動をすると想定した場合に、 いずれかの時刻で衝突が起きる場合 true が、衝突しない場合は false が入ります。

第2要素は，snapShot() が呼ばれた時刻を 0、 現時点の時刻を 1 とした場合の衝突時間が入ります。 第1要素が true であった場合でも、 この値が 0 から 1 の間にないときは、 衝突が起こっていないことになりますので、注意して下さい。

参照
  adjustSphere(), adjustAABB(), adjustOBB(), adjustCapsule(), isInter(), snapShot(), restore(double), fk_Boundary::setBMode(), fk_Boundary::setCapsule(), fk_Boundary::getCapsuleRadius(), fk_Boundary::getCapsuleLength(), fk_Boundary::getCapsuleStartPos(), fk_Boundary::getCapsuleEndPos()

## ◆ setInterMode()

void FK::fk_Model::setInterMode | ( | bool | mode | ) |

干渉継続モード設定関数

干渉継続モードを有効にしておくと、 本モデルが isInter() 関数で他のモデルと干渉状態が検出された場合、 resetInter() が呼ばれるまでは true を返すようになります。

引数

  [in] | mode | true である場合、干渉継続モードが有効となります。 false の場合無効にします。

参照
  isInter(), getInterMode(), getInterStatus(), resetInter(), setInterStopMode(), entryInterModel()

## ◆ getInterMode()

bool FK::fk_Model::getInterMode | ( | void |  | ) |

干渉継続モード取得関数

現在の干渉継続モード状態を取得します。

戻り値
  干渉継続モードが有効である場合 true を、無効である場合 false を返します。

参照
  setInterMode()

## ◆ getInterStatus()

bool FK::fk_Model::getInterStatus | ( | void |  | ) |

干渉継続状態取得関数

本関数は、干渉継続モードが有効である場合で、 前に resetInter() が呼ばれた以降で、 isInter() によって干渉が検出されたことがあるかを検出します。

戻り値
  干渉検出があった場合 true を、なかった場合 false を返します。

参照
  isInter(), setInterMode(), resetInterStatus()

## ◆ resetInter()

void FK::fk_Model::resetInter | ( | void |  | ) |

干渉継続状態初期化関数

干渉継続モードによる干渉検出状態を初期化します。 この関数が呼ばれた以降、再び isInter() による干渉が検出されるまでは、 getInterStatus() 関数は false を返します。

参照
  isInter(), setInterMode(), getInterStatus()

## ◆ setInterStopMode()

void FK::fk_Model::setInterStopMode | ( | bool | mode | ) |

干渉自動停止モード設定関数

この関数は、干渉自動停止モードの有無効を設定します。 「干渉自動停止モード」とは、以下のような処理を行う機能のことです。

1. 干渉チェック対象となるモデルを事前に登録しておく。
2. モデル移動の前に snapShot() をしておく。
3. モデルの移動を行った際に、 もし干渉チェック対象モデルのいずれかと干渉していた場合は、 restore() を実行し移動前の状態に戻る。

この機能を用いることで、移動後で干渉が起きてしまう移動が無効となります。 壁などにモデルが入らないように処理するような場面で有効となります。

このモードの対象となる移動関数は以下のとおりです。

- glRotate()
- loRotate()
- glRotateWithVec()
- loRotateWithVec()
- glTranslate()
- loTranslate()
- glMoveTo()

これらの関数は、モデルの位置ベクトルが変化する可能性があるからです。 その他の姿勢制御関数については停止の対象とはなりません。

なお、このモードを利用する場合、 restore() した後にも干渉状態となっている場合、 適用モデルがまったく動かなくなるという問題が生じます。 そのため本機能を用いたい場合は、 干渉チェック対象となるモデルは全て静止した状態であることを推奨します。 また、位置のかわらない姿勢制御関数は干渉状態であっても動作しますが、 その際に物体の回転によって非干渉状態から干渉状態となることがありえますので、 これも注意が必要です。

覚え書き
  干渉判定を行う際の境界ボリュームに関する設定は、 事前に行っておく必要があります。
  このモードを利用する場合、副作用として自前で管理していた snapShot() の情報が破棄されてしまうという問題がありますので、 snapShot() や restore() を利用する場合はこのモードは用いないようにして下さい。

引数

  [in] | mode | true の場合有効とし、 false の場合無効とします。

参照
  getInterStopMode(), entryInterModel(), deleteInterModel(), clearInterModel(), isInter(), snapShot(), restore()

## ◆ getInterStopMode()

bool FK::fk_Model::getInterStopMode | ( | void |  | ) |

干渉自動停止モード取得関数

干渉自動停止モードの有無効を取得します。

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

参照
  setInterStopMode()

## ◆ entryInterModel()

void FK::fk_Model::entryInterModel | ( | fk_Model * | model | ) |

干渉自動停止モデル登録関数

干渉自動停止モードの対象となるモデルを登録します。

覚え書き
  本関数で登録したモデルのインスタンスを、 deleteInterModel() や clearInterModel() で解除する前に消去した場合、 動作は保証されません。

引数

  [in] | model | 登録モデルインスタンス

参照
  setInterStopMode(), deleteInterModel(), clearInterModel()

## ◆ deleteInterModel()

void FK::fk_Model::deleteInterModel | ( | fk_Model * | model | ) |

干渉自動停止モデル解除関数

干渉自動停止モードの対象となっていたモデルの解除を行います。 もし入力モデルが登録されていなかった場合は、なにも起こりません。

引数

  [in] | model | 解除モデルインスタンス

参照
  setInterStopMode(), entryInterModel(), clearInterModel()

## ◆ clearInterModel()

void FK::fk_Model::clearInterModel | ( | void |  | ) |

干渉自動停止モデル初期化関数

干渉自動停止モード用に登録されていた全てのモデルを解除します。

参照
  setInterStopMode(), entryInterModel(), deleteInterModel()

## ◆ defaultPhysics()

void FK::fk_Model::defaultPhysics | ( | void |  | ) |

物理シミュレーションワールド設定関数

## ◆ setPhysicsWorld()

void FK::fk_Model::setPhysicsWorld | ( | fk_PhysicsWorld * | world | ) |

## ◆ stepSimulation()

void FK::fk_Model::stepSimulation | ( | float | ,
|  | int | )

static

## ◆ setInertia()

void FK::fk_Model::setInertia | ( | fk_Vector | ine | ) |

慣性モーメント設定関数

## ◆ setMass()

void FK::fk_Model::setMass | ( | double | mass | ) |

質量設定関数

## ◆ setRestitution()

void FK::fk_Model::setRestitution | ( | double | res | ) |

反射係数設定関数

## ◆ setDynamics()

void FK::fk_Model::setDynamics | ( | bool | mode | ) |

運動有無設定関数

## ◆ setDamping()

void FK::fk_Model::setDamping | ( | double | sd,
|  | double | rd )

摩擦係数設定関数

## ◆ addForce()

void FK::fk_Model::addForce | ( | fk_Vector | f | ) |

外力設定関数