FineKernelToolKit: FK::fk_HVector クラス

FineKernelToolKit 4.3.0

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

4次元ベクトルを管理するクラス [詳解]

`#include <FK/Vector.h>`

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

## 公開メンバ関数

| fk_HVector (void)
| コンストラクタ1
| fk_HVector (const fk_Vector &v, double w=1.0)
| コンストラクタ2
| fk_HVector (double x, double y, double z, double w=1.0)
| コンストラクタ3
virtual | ~fk_HVector ()
| デストラクタ
| fk_HVector (const fk_HVector &)
| コピーコンストラクタ
比較演算子
bool | operator== (const fk_HVector &) const
| 同値比較演算子
bool | operator!= (const fk_HVector &) const
| 異値比較演算子
代入演算子
fk_HVector & | operator= (const fk_HVector &)
| 単純代入演算子
fk_HVector & | operator= (const fk_Vector &)
| 単純代入演算子
fk_HVector & | operator*= (const fk_Matrix &)
| 行列変換代入演算子1
fk_HVector & | operator*= (const fk_OrthoMatrix &)
| 行列変換代入演算子2
メンバ関数
void | set (const fk_Vector &v)
| fk_Vector による設定関数1
void | set (const fk_Vector &v, double w)
| fk_Vector による設定関数2
void | set (double x, double y, double z=0.0)
| 数値による設定関数1
void | set (double x, double y, double z, double w)
| 数値による設定関数2
void | setw (double w)
| 同次座標設定関数
fk_Vector | getV (void) const
| 3次元ベクトル取得関数
double | getw (void) const
| 同次座標値取得関数
void | ispos (void)
| 位置ベクトル設定関数
void | isvec (void)
| 方向ベクトル設定関数
void | init (void)
| 初期化関数
基底クラス FK::fk_Vector に属する継承公開メンバ関数
| fk_Vector (double x=0.0, double y=0.0, double z=0.0)
| コンストラクタ
| fk_Vector (const fk_Vector &)
| コピーコンストラクタ
| fk_Vector (const fk_FVector &)
| コピーコンストラクタ
virtual | ~fk_Vector ()
| デストラクタ
fk_Vector & | operator- (void) const
| 単項マイナス演算子
bool | operator== (const fk_Vector &) const
| 同値比較演算子
bool | operator!= (const fk_Vector &) const
| 異値比較演算子
bool | operator> (const fk_Vector &) const
| 右不等号演算子
bool | operator< (const fk_Vector &) const
| 左不等号演算子
bool | operator>= (const fk_Vector &) const
| 等価右不等号演算子
bool | operator<= (const fk_Vector &) const
| 等価左不等号演算子
fk_Vector & | operator= (const fk_Vector &)
| 単純代入演算子
fk_Vector & | operator= (const fk_FVector &)
| fk_FVector 型からの単純代入演算子
fk_Vector & | operator*= (double)
| 実数積代入演算子
fk_Vector & | operator/= (double)
| 実数商代入演算子
fk_Vector & | operator+= (const fk_Vector &)
| 単項和代入演算子
fk_Vector & | operator-= (const fk_Vector &)
| 単項差代入演算子
fk_Vector & | operator^= (const fk_Vector &)
| 単項外積代入演算子
fk_Vector & | operator*= (const fk_Matrix &)
| 行列変換代入演算子1
fk_Vector & | operator*= (const fk_OrthoMatrix &)
| 行列変換代入演算子2
double | dist (void) const
| ベクトル長さ算出関数
double | dist2 (void) const
| ベクトル長さ平方算出関数
bool | normalize (void)
| 正規化関数
bool | isZero (void) const
| 零ベクトル判定関数
fk_Vector | proj (const fk_Vector &Q) const
| 射影ベクトル算出関数
fk_Vector | perp (const fk_Vector &Q) const
| 射影垂直成分ベクトル算出関数

## 公開変数類

double | w
| 同次座標成分
基底クラス FK::fk_Vector に属する継承公開変数類
double | x
| x成分
double | y
| y成分
double | z
| z成分

## その他の継承メンバ

基底クラス FK::fk_Vector に属する継承静的公開変数類
static constexpr double | VECTOREPS = 1.0e-12
| ベクトル演算誤差基準値
static constexpr double | MATRIXEPS = 1.0e-12
| 行列演算用誤差1
static constexpr double | MATRIXEPS2 = 1.0e-16
| 行列演算用誤差2

## 詳解

4次元ベクトルを管理するクラス

このクラスは、4次元ベクトルの様々な機能を提供します。 成分は double 型によって格納されています。 fk_HVector は fk_Vector クラスの派生クラスとなっており、 継承した成分である x, y, z については通常の3次元成分と同様です。 4つめの成分である w は、多くの場合は同次座標成分を表し、 4元正方行列との演算のために存在します。

参照
  fk_Vector, fk_Matrix, fk_FVector, fk_GenVector

## 構築子と解体子

## ◆ fk_HVector() [1/4]

FK::fk_HVector::fk_HVector | ( | void |  | ) |

コンストラクタ1

## ◆ fk_HVector() [2/4]

FK::fk_HVector::fk_HVector | ( | const fk_Vector & | v,
|  | double | w = 1.0 )

コンストラクタ2

引数

  [in] | v | x,y,z成分の入力となる3次元ベクトル
  [in] | w | 同次座標値

## ◆ fk_HVector() [3/4]

FK::fk_HVector::fk_HVector | ( | double | x,
|  | double | y,
|  | double | z,
|  | double | w = 1.0 )

コンストラクタ3

引数

  [in] | x | x成分
  [in] | y | y成分
  [in] | z | z成分
  [in] | w | 同次座標値

## ◆ ~fk_HVector()

virtual FK::fk_HVector::~fk_HVector | ( |  | ) |

inlinevirtual

デストラクタ

## ◆ fk_HVector() [4/4]

FK::fk_HVector::fk_HVector | ( | const fk_HVector & |  | ) |

コピーコンストラクタ

## 関数詳解

## ◆ operator==()

bool FK::fk_HVector::operator== | ( | const fk_HVector & |  | ) | const

同値比較演算子

fk_HVector では、以下のように記述することで、 v1 と v2 が等しいかどうかを判断できます。

    if(v1 == v2) {
        :
        :
    }

ここでの比較は、ある程度の計算誤差を許容します。 なお、同次座標成分の比較も含まれます。

## ◆ operator!=()

bool FK::fk_HVector::operator!= | ( | const fk_HVector & |  | ) | const

異値比較演算子

fk_HVector では、以下のように記述することで、 v1 と v2 が等しくないかどうかを判断できます。

    if(v1 != v2) {
        :
        :
    }

ここでの比較は、ある程度の計算誤差を許容します。 なお、同次座標成分の比較も含まれます。

## ◆ operator=() [1/2]

fk_HVector & FK::fk_HVector::operator= | ( | const fk_HVector & |  | ) |

単純代入演算子

## ◆ operator=() [2/2]

fk_HVector & FK::fk_HVector::operator= | ( | const fk_Vector & |  | ) |

単純代入演算子

この代入演算子において、同次座標成分は 1 に設定されます。

## ◆ operator*=() [1/2]

fk_HVector & FK::fk_HVector::operator*= | ( | const fk_Matrix & |  | ) |

行列変換代入演算子1

以下のコードは、V を M によって変換した値を代入します。 V は fk_HVector 型の変数、M は fk_Matrix 型の変数です。

    V *= M;

上記コードは、以下のコードと同義です。

    V = M * V;

## ◆ operator*=() [2/2]

fk_HVector & FK::fk_HVector::operator*= | ( | const fk_OrthoMatrix & |  | ) |

行列変換代入演算子2

以下のコードは、V を M によって変換した値を代入します。 V は fk_HVector 型の変数、M は fk_OrthoMatrix 型の変数です。

    V *= M;

上記コードは、以下のコードと同義です。

    V = M * V;

## ◆ set() [1/4]

void FK::fk_HVector::set | ( | const fk_Vector & | v | ) |

fk_Vector による設定関数1

fk_Vector 型の引数によって値を設定します。 x, y, z 成分については引数の値を代入し、 w 成分は 1 に設定します。 既に w 成分に 1 以外の値が入っていた場合でも、1 に設定されます。

引数

  [in] | v | 3次元ベクトル

## ◆ set() [2/4]

void FK::fk_HVector::set | ( | const fk_Vector & | v,
|  | double | w )

fk_Vector による設定関数2

fk_Vector 型の引数によって値を設定します。 x, y, z 成分については引数 v の各成分の値を代入し、 w 成分は引数の w の値を設定します。

引数

  [in] | v | 3次元ベクトル
  [in] | w | 同次座標値

## ◆ set() [3/4]

void FK::fk_HVector::set | ( | double | x,
|  | double | y,
|  | double | z = 0.0 )

virtual

数値による設定関数1

数値引数によって各成分の値を設定します。 w 成分は 1 に設定します。 既に w 成分に 1 以外の値が入っていた場合でも、1 に設定されます。

引数

  [in] | x | x成分値
  [in] | y | y成分値
  [in] | z | z成分値

FK::fk_Vectorを再実装しています。

## ◆ set() [4/4]

void FK::fk_HVector::set | ( | double | x,
|  | double | y,
|  | double | z,
|  | double | w )

数値による設定関数2

数値引数によって各成分の値を設定します。

引数

  [in] | x | x成分値
  [in] | y | y成分値
  [in] | z | z成分値
  [in] | w | 同次座標値

## ◆ setw()

void FK::fk_HVector::setw | ( | double | w | ) |

同次座標設定関数

同次座標成分を設定します。 その他の成分については値を変更しません。

引数

  [in] | w | 同次座標値

## ◆ getV()

fk_Vector FK::fk_HVector::getV | ( | void |  | ) | const

3次元ベクトル取得関数

3次元ベクトル部を返します。

戻り値
  3次元ベクトル

## ◆ getw()

double FK::fk_HVector::getw | ( | void |  | ) | const

同次座標値取得関数

同次座標値を取得します。

戻り値
  同次座標値

## ◆ ispos()

void FK::fk_HVector::ispos | ( | void |  | ) |

位置ベクトル設定関数

このベクトルを、位置ベクトルとして扱えるようにします。 この関数は、同次座標に 1 を設定することと同義です。

## ◆ isvec()

void FK::fk_HVector::isvec | ( | void |  | ) |

方向ベクトル設定関数

このベクトルを、方向ベクトルとして扱えるようにします。 この関数は、同次座標に 0 を設定することと同義です。

## ◆ init()

void FK::fk_HVector::init | ( | void |  | ) |

virtual

初期化関数

4次元ベクトルを (0, 0, 0, 1) に設定します。

FK::fk_Vectorを再実装しています。

## メンバ詳解

## ◆ w

double FK::fk_HVector::w

同次座標成分