FineKernelToolKit: FK::fk_Surface クラス

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] | u | u パラメータ
  [in] | v | v パラメータ

戻り値
  曲面上の位置ベクトル

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

## ◆ uDeriv()

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

pure virtual

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

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

引数

  [in] | u | u パラメータ
  [in] | v | v パラメータ

戻り値
  曲面上の u 方向偏微分ベクトル

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

## ◆ vDeriv()

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

pure virtual

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

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

引数

  [in] | u | u パラメータ
  [in] | v | v パラメータ

戻り値
  曲面上の v 方向偏微分ベクトル

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

## ◆ norm()

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

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

引数

  [in] | u | u パラメータ
  [in] | v | v パラメータ

戻り値
  曲面上の法線ベクトル

## ◆ 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 | 制御点数