FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 公開変数類 | 全メンバ一覧
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_HVectoroperator= (const fk_HVector &)
 単純代入演算子
 
fk_HVectoroperator= (const fk_Vector &)
 単純代入演算子
 
fk_HVectoroperator*= (const fk_Matrix &)
 行列変換代入演算子1
 
fk_HVectoroperator*= (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_Vectoroperator- (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_Vectoroperator= (const fk_Vector &)
 単純代入演算子
 
fk_Vectoroperator= (const fk_FVector &)
 fk_FVector 型からの単純代入演算子
 
fk_Vectoroperator*= (double)
 実数積代入演算子
 
fk_Vectoroperator/= (double)
 実数商代入演算子
 
fk_Vectoroperator+= (const fk_Vector &)
 単項和代入演算子
 
fk_Vectoroperator-= (const fk_Vector &)
 単項差代入演算子
 
fk_Vectoroperator^= (const fk_Vector &)
 単項外積代入演算子
 
fk_Vectoroperator*= (const fk_Matrix &)
 行列変換代入演算子1
 
fk_Vectoroperator*= (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_HVectorfk_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]vx,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]xx成分
[in]yy成分
[in]zz成分
[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]v3次元ベクトル

◆ 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]v3次元ベクトル
[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]xx成分値
[in]yy成分値
[in]zz成分値

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

◆ set() [4/4]

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

数値による設定関数2

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

引数
[in]xx成分値
[in]yy成分値
[in]zz成分値
[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

同次座標成分