3次元ベクトルを管理するクラス [詳細]
Public メソッド | |
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_Matrix &) |
行列変換代入演算子1 | |
fk_Vector & | operator*= (const fk_OrthoMatrix &) |
行列変換代入演算子2 | |
メンバ関数 | |
virtual void | set (double x, double y, double z=0.0) |
成分設定関数 | |
double | dist (void) const |
ベクトル長さ算出関数 | |
double | dist2 (void) const |
ベクトル長さ平方算出関数 | |
bool | normalize (void) |
正規化関数 | |
virtual void | init (void) |
初期化関数 | |
bool | isZero (void) const |
零ベクトル判定関数 | |
fk_Vector | proj (const fk_Vector &Q) const |
射影ベクトル算出関数 | |
fk_Vector | perp (const fk_Vector &Q) const |
射影垂直成分ベクトル算出関数 | |
Public 変数 | |
double | x |
x成分 | |
double | y |
y成分 | |
double | z |
z成分 | |
フレンド | |
二項演算子 | |
double | operator* (const fk_Vector &, const fk_Vector &) |
fk_Vector | operator+ (const fk_Vector &, const fk_Vector &) |
fk_Vector | operator- (const fk_Vector &, const fk_Vector &) |
fk_Vector | operator* (const fk_Vector &, double) |
fk_Vector | operator* (double, const fk_Vector &) |
fk_Vector | operator/ (const fk_Vector &, double) |
fk_Vector | operator^ (const fk_Vector &, const fk_Vector &) |
3次元ベクトルを管理するクラス
このクラスは、3次元ベクトルの様々な機能を提供します。 成分は double 型によって格納されています。 このクラスでは、内積値や外積ベクトル、ノルム算出などの ベクトルに関する基本的な演算が利用できます。 また、 fk_Matrix との組み合わせによる行列演算も可能です。
fk_Vector にはもう一つ、 多くの3次元ベクトル情報のやりとりに利用されるという重要な側面があります。 そのため、形状操作やモデル操作など多岐に渡って利用する機会があります。
4次元のベクトルを扱う場合は fk_HVector を参照して下さい。 成分を float 型として格納する場合は fk_FVector を参照して下さい。 任意次元のベクトルを扱う場合は fk_GenVector を参照して下さい。
fk_Vector::fk_Vector | ( | double | x = 0.0 , |
|
double | y = 0.0 , |
|||
double | z = 0.0 | |||
) |
コンストラクタ
[in] | x | x成分 |
[in] | y | y成分 |
[in] | z | z成分 |
fk_Vector::fk_Vector | ( | const fk_Vector & | ) |
コピーコンストラクタ
fk_Vector::fk_Vector | ( | const fk_FVector & | ) |
コピーコンストラクタ
virtual fk_Vector::~fk_Vector | ( | ) | [inline, virtual] |
デストラクタ
fk_Vector& fk_Vector::operator- | ( | void | ) | const |
bool fk_Vector::operator== | ( | const fk_Vector & | ) | const |
同値比較演算子
fk_Vector では、以下のように記述することで、 v1 と v2 が等しいかどうかを判断できます。
if(v1 == v2) {
:
:
}
ここでの比較は、ある程度の計算誤差を許容します。
fk_HVectorで再定義されています。
bool fk_Vector::operator!= | ( | const fk_Vector & | ) | const |
異値比較演算子
fk_Vector では、以下のように記述することで、 v1 と v2 が等しくないかどうかを判断できます。
if(v1 != v2) {
:
:
}
ここでの比較は、ある程度の計算誤差を許容します。
fk_HVectorで再定義されています。
bool fk_Vector::operator> | ( | const fk_Vector & | ) | const |
右不等号演算子
この演算子では、以下のように処理を行います。
この演算子は数学的な意味はありませんが、整列化の際に有用となります。
bool fk_Vector::operator< | ( | const fk_Vector & | ) | const |
左不等号演算子
この演算子では、以下のように処理を行います。
この演算子は数学的な意味はありませんが、整列化の際に有用となります。
bool fk_Vector::operator>= | ( | const fk_Vector & | ) | const |
等価右不等号演算子
右不等号演算子とほぼ同一ですが、全ての成分が等しい場合には真を返します。
bool fk_Vector::operator<= | ( | const fk_Vector & | ) | const |
等価左不等号演算子
左不等号演算子とほぼ同一ですが、全ての成分が等しい場合には真を返します。
単純代入演算子
fk_HVectorで再定義されています。
fk_Vector& fk_Vector::operator= | ( | const fk_FVector & | ) |
fk_FVector 型からの単純代入演算子
fk_Vector& fk_Vector::operator*= | ( | double | ) |
実数積代入演算子
以下のコードは、V を d 倍します。 V は fk_Vector 型の変数、d は double 型の変数です。
V *= d;
d は変数でなく数値でも構いません。
V *= 2.0;
fk_Vector& fk_Vector::operator/= | ( | double | ) |
実数商代入演算子
以下のコードは、V を 1/d 倍します。 V は fk_Vector 型の変数、d は double 型の変数です。
V /= d;
d は変数でなく数値でも構いません。
V /= 2.0;
なお、d が 0 であった場合は V の値を変更しません。
単項和代入演算子
以下のコードは、V1 に V2 を追加します。 V1、V2 はいずれも fk_Vector 型の変数です。
V1 += V2;
上記コードは、以下のコードと同義です。
V1 = V1 + V2;
単項差代入演算子
以下のコードは、V1 から V2 を引きます。 V1、V2 はいずれも fk_Vector 型の変数です。
V1 -= V2;
上記コードは、以下のコードと同義です。
V1 = V1 - V2;
行列変換代入演算子1
以下のコードは、V を M によって変換した値を代入します。 V は fk_Vector 型の変数、M は fk_Matrix 型の変数です。
V *= M;
上記コードは、以下のコードと同義です。
V = M * V;
演算の際、fk_Vector は fk_HVector に変換されます。 変換の際の同次座標は 1 に設定されます。
fk_HVectorで再定義されています。
fk_Vector& fk_Vector::operator*= | ( | const fk_OrthoMatrix & | ) |
行列変換代入演算子2
以下のコードは、V を M によって変換した値を代入します。 V は fk_Vector 型の変数、M は fk_OrthoMatrix 型の変数です。
V *= M;
上記コードは、以下のコードと同義です。
V = M * V;
演算の際、fk_Vector は fk_HVector に変換されます。 変換の際の同次座標は 1 に設定されます。
fk_HVectorで再定義されています。
virtual void fk_Vector::set | ( | double | x, | |
double | y, | |||
double | z = 0.0 | |||
) | [virtual] |
double fk_Vector::dist | ( | void | ) | const |
ベクトル長さ算出関数
ベクトルの長さ(ノルム)を返します。 ベクトル の長さは以下の式で算出されます。
double fk_Vector::dist2 | ( | void | ) | const |
ベクトル長さ平方算出関数
ベクトルの長さ(ノルム)の2乗の値を返します。 の長さの2乗は以下の式で算出されます。
平方根演算がない分、 dist() と比べて若干高速です。
bool fk_Vector::normalize | ( | void | ) |
正規化関数
ベクトルの正規化を行います。 正規化とは、ベクトル に対し、 以下の演算で
を求めることです。
virtual void fk_Vector::init | ( | void | ) | [virtual] |
bool fk_Vector::isZero | ( | void | ) | const |
零ベクトル判定関数
fk_HVectorで再定義されています。
double fk_Vector::x |
x成分
double fk_Vector::y |
y成分
double fk_Vector::z |
z成分