FineKernelToolKit 4.2.13
|
4次元ベクトルを管理するクラス [詳解]
#include <FK/Vector.h>
公開メンバ関数 | |
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_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 |
同次座標成分 | |
![]() | |
double | x |
x成分 | |
double | y |
y成分 | |
double | z |
z成分 | |
その他の継承メンバ | |
![]() | |
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::fk_HVector::fk_HVector | ( | void | ) |
コンストラクタ1
FK::fk_HVector::fk_HVector | ( | const fk_Vector & | v, |
double | w = 1.0 |
||
) |
コンストラクタ2
[in] | v | x,y,z成分の入力となる3次元ベクトル |
[in] | w | 同次座標値 |
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 | 同次座標値 |
|
inlinevirtual |
デストラクタ
FK::fk_HVector::fk_HVector | ( | const fk_HVector & | ) |
コピーコンストラクタ
bool FK::fk_HVector::operator== | ( | const fk_HVector & | ) | const |
同値比較演算子
fk_HVector では、以下のように記述することで、 v1 と v2 が等しいかどうかを判断できます。
if(v1 == v2) { : : }
ここでの比較は、ある程度の計算誤差を許容します。 なお、同次座標成分の比較も含まれます。
bool FK::fk_HVector::operator!= | ( | const fk_HVector & | ) | const |
異値比較演算子
fk_HVector では、以下のように記述することで、 v1 と v2 が等しくないかどうかを判断できます。
if(v1 != v2) { : : }
ここでの比較は、ある程度の計算誤差を許容します。 なお、同次座標成分の比較も含まれます。
fk_HVector & FK::fk_HVector::operator= | ( | const fk_HVector & | ) |
単純代入演算子
fk_HVector & FK::fk_HVector::operator= | ( | const fk_Vector & | ) |
単純代入演算子
この代入演算子において、同次座標成分は 1 に設定されます。
fk_HVector & FK::fk_HVector::operator*= | ( | const fk_Matrix & | ) |
行列変換代入演算子1
以下のコードは、V を M によって変換した値を代入します。 V は fk_HVector 型の変数、M は fk_Matrix 型の変数です。
V *= M;
上記コードは、以下のコードと同義です。
V = M * V;
fk_HVector & FK::fk_HVector::operator*= | ( | const fk_OrthoMatrix & | ) |
行列変換代入演算子2
以下のコードは、V を M によって変換した値を代入します。 V は fk_HVector 型の変数、M は fk_OrthoMatrix 型の変数です。
V *= M;
上記コードは、以下のコードと同義です。
V = M * V;
void FK::fk_HVector::set | ( | const fk_Vector & | v | ) |
void FK::fk_HVector::set | ( | const fk_Vector & | v, |
double | w | ||
) |
|
virtual |
数値による設定関数1
数値引数によって各成分の値を設定します。 w 成分は 1 に設定します。 既に w 成分に 1 以外の値が入っていた場合でも、1 に設定されます。
[in] | x | x成分値 |
[in] | y | y成分値 |
[in] | z | z成分値 |
FK::fk_Vectorを再実装しています。
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 | 同次座標値 |
void FK::fk_HVector::setw | ( | double | w | ) |
同次座標設定関数
同次座標成分を設定します。 その他の成分については値を変更しません。
[in] | w | 同次座標値 |
fk_Vector FK::fk_HVector::getV | ( | void | ) | const |
3次元ベクトル取得関数
3次元ベクトル部を返します。
double FK::fk_HVector::getw | ( | void | ) | const |
同次座標値取得関数
同次座標値を取得します。
void FK::fk_HVector::ispos | ( | void | ) |
位置ベクトル設定関数
このベクトルを、位置ベクトルとして扱えるようにします。 この関数は、同次座標に 1 を設定することと同義です。
void FK::fk_HVector::isvec | ( | void | ) |
方向ベクトル設定関数
このベクトルを、方向ベクトルとして扱えるようにします。 この関数は、同次座標に 0 を設定することと同義です。
|
virtual |
double FK::fk_HVector::w |
同次座標成分