FineKernelToolKit 4.3.0
読み取り中…
検索中…
一致する文字列を見つけられません
FK::fk_Surface クラスabstract

曲面用純粋仮想クラス [詳解]

#include <FK/Surface.h>

FK::fk_Surface の継承関係図
FK::fk_Surface 連携図

公開メンバ関数

 fk_Surface (void)
 コンストラクタ
virtual ~fk_Surface ()
 デストラクタ
virtual fk_Vector pos (double u, double v)=0
 曲面点位置ベクトル算出関数
virtual fk_Vector uDeriv (double u, double v)=0
 曲面 u 方向偏微分ベクトル算出関数
virtual fk_Vector vDeriv (double u, double v)=0
 曲面 v 方向偏微分ベクトル算出関数
fk_Vector norm (double u, double v)
void setDiv (int div)
 曲面分割数設定関数
int getDiv (void)
 曲面分割数参照関数
int getCtrlSize (void)
 制御点数取得関数
基底クラス 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
 タイプ取得関数

限定公開メンバ関数

bool setCtrl (int ID, fk_Vector *pos)
 制御点設定関数1
bool setCtrl (int ID, fk_Vector pos)
 制御点設定関数2
fk_Vector getCtrl (int ID)
 制御点取得関数
void setCtrlSize (int num)
 制御点最大サイズ設定関数
void setCtrlNum (int num)
 制御点数設定関数

詳解

曲面用純粋仮想クラス

このクラスは、自由曲面用の純粋仮想クラスです。 このクラスを継承することによって、 ユーザは任意の自由曲面形式を四辺形となる fk_Loop に追加することができます。 自由曲面は、以下の条件を満たす必要があります。

  • パラメータ空間が 2 次元である。(以降、これを「u方向」「v方向」とします。)
  • パラメータ空間中のあらゆるパラメータで曲面上の点を算出できる。
  • パラメータ空間中のあらゆるパラメータで、 u 方向 と v 方向共に偏微分ベクトルが算出できる。
  • 曲面のパラメータ端点、 つまり (0, 0), (0, 1), (1, 0), (1, 1) となる 4 点の位置ベクトルが、 ループの 4 頂点の位置ベクトルと一致している。
参照
fk_Loop, fk_Curve

構築子と解体子

◆ fk_Surface()

FK::fk_Surface::fk_Surface ( void )

コンストラクタ

◆ ~fk_Surface()

virtual FK::fk_Surface::~fk_Surface ( )
virtual

デストラクタ

関数詳解

◆ pos()

virtual fk_Vector FK::fk_Surface::pos ( double u,
double v )
pure virtual

曲面点位置ベクトル算出関数

曲面上の点の位置ベクトルを算出する純粋仮想関数です。 派生クラスにおいて実際に実装する必要があります。

引数
[in]uu パラメータ
[in]vv パラメータ
戻り値
曲面上の位置ベクトル

FK::fk_BezSurface, FK::fk_Gregoryで実装されています。

◆ uDeriv()

virtual fk_Vector FK::fk_Surface::uDeriv ( double u,
double v )
pure virtual

曲面 u 方向偏微分ベクトル算出関数

曲面上の u 方向偏微分ベクトルを算出する純粋仮想関数です。 派生クラスにおいて実際に実装する必要があります。

引数
[in]uu パラメータ
[in]vv パラメータ
戻り値
曲面上の u 方向偏微分ベクトル

FK::fk_BezSurface, FK::fk_Gregoryで実装されています。

◆ vDeriv()

virtual fk_Vector FK::fk_Surface::vDeriv ( double u,
double v )
pure virtual

曲面 v 方向偏微分ベクトル算出関数

曲面上の v 方向偏微分ベクトルを算出する純粋仮想関数です。 派生クラスにおいて実際に実装する必要があります。

引数
[in]uu パラメータ
[in]vv パラメータ
戻り値
曲面上の v 方向偏微分ベクトル

FK::fk_BezSurface, FK::fk_Gregoryで実装されています。

◆ norm()

fk_Vector FK::fk_Surface::norm ( double u,
double v )

曲面上の法線ベクトルを算出します。 本関数は、派生クラスにおいて再定義する必要はありません。

引数
[in]uu パラメータ
[in]vv パラメータ
戻り値
曲面上の法線ベクトル

◆ setDiv()

void FK::fk_Surface::setDiv ( int div)

曲面分割数設定関数

描画する際の曲面の分割数を設定します。 本関数は、派生クラスにおいて再定義する必要はありません。

引数
[in]div分割数。

◆ getDiv()

int FK::fk_Surface::getDiv ( void )

曲面分割数参照関数

描画する際の曲面の分割数を参照します。 本関数は、派生クラスにおいて再定義する必要はありません。

戻り値
分割数

◆ getCtrlSize()

int FK::fk_Surface::getCtrlSize ( void )

制御点数取得関数

曲面の制御点数を取得します。

戻り値
制御点数

◆ setCtrl() [1/2]

bool FK::fk_Surface::setCtrl ( int ID,
fk_Vector * pos )
protected

制御点設定関数1

曲面の制御点位置ベクトルを設定します。 通常はこの関数ではなく、 各派生クラスで定義されている制御点設定関数を用います。

引数
[in]ID設定する制御点の ID。先頭は 0 になります。
[in]pos制御点位置ベクトル
戻り値
設定に成功した場合 true、失敗した場合 false を返します。

◆ setCtrl() [2/2]

bool FK::fk_Surface::setCtrl ( int ID,
fk_Vector pos )
protected

制御点設定関数2

曲面の制御点位置ベクトルを設定します。 通常はこの関数ではなく、 各派生クラスで定義されている制御点設定関数を用います。

引数
[in]ID設定する制御点の ID。先頭は 0 になります。
[in]pos制御点位置ベクトル
戻り値
設定に成功した場合 true、失敗した場合 false を返します。

◆ getCtrl()

fk_Vector FK::fk_Surface::getCtrl ( int ID)
protected

制御点取得関数

曲面の制御点位置ベクトルを取得します。 通常はこの関数ではなく、 各派生クラスで定義されている制御点取得関数を用います。

引数
[in]ID設定する制御点の ID。先頭は 0 になります。
戻り値
指定した制御点の位置ベクトル。 指定した制御点が存在しない場合は零ベクトルを返します。

◆ setCtrlSize()

void FK::fk_Surface::setCtrlSize ( int num)
protected

制御点最大サイズ設定関数

曲面の制御点最大サイズを設定します。負数が指定された場合は無視します。 通常はこの関数ではなく、 各派生クラスで定義されている次数設定関数を用います。

引数
[in]num制御点数

◆ setCtrlNum()

void FK::fk_Surface::setCtrlNum ( int num)
protected

制御点数設定関数

曲面の制御点数を設定します。負数が指定された場合は無視します。 通常はこの関数ではなく、 各派生クラスで定義されている次数設定関数を用います。

引数
[in]num制御点数