FineKernelToolKit  2.9.0
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
構成 | 列挙型 | 関数 | 変数
Vector.h
+ Vector.hのインクルード依存関係図
+ このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

構成

class  fk_Vector
 3次元ベクトルを管理するクラス [詳細]
 
class  fk_HVector
 4次元ベクトルを管理するクラス [詳細]
 
class  fk_FVector
 単精度浮動小数点型3次元ベクトルを管理するクラス [詳細]
 

列挙型

enum  fk_Axis { fk_X, fk_Y, fk_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)
 実数倍二項演算子1 [詳細]
 
fk_Vector operator* (double, const fk_Vector &)
 実数倍二項演算子2 [詳細]
 
fk_Vector operator/ (const fk_Vector &, double)
 実数商二項演算子 [詳細]
 
fk_Vector operator^ (const fk_Vector &, const fk_Vector &)
 外積二項演算子 [詳細]
 
double operator* (const fk_HVector &, const fk_HVector &)
 内積二項演算子 [詳細]
 
fk_HVector operator* (const fk_Matrix &, const fk_HVector &)
 行列変換二項演算子1 [詳細]
 
fk_HVector operator* (const fk_OrthoMatrix &, const fk_HVector &)
 行列変換二項演算子2 [詳細]
 

変数

const double FK_VECTOREPS = 1.0e-12
 ベクトル演算誤差基準値 [詳細]
 

列挙型

enum fk_Axis

座標軸を表す列挙型

列挙型の値
fk_X 

x軸

fk_Y 

y軸

fk_Z 

z軸

関数

double operator* ( const fk_Vector ,
const fk_Vector  
)

内積二項演算子

3次元ベクトル $ \mathbf{P} $$ \mathbf{Q} $ の内積値(スカラー積)は、以下のように定義されます。

\[ \mathbf{P}\cdot\mathbf{Q} = P_xQ_x + P_yQ_y + P_zQ_z \]

これを得るには、以下のように記述します。 P, Q はともに fk_Vector 型の変数で、d は double 型の変数です。

d = P * Q;

なお、内積は交換法則が成り立ちます。

fk_Vector operator+ ( const fk_Vector ,
const fk_Vector  
)

ベクトル和二項演算子

ベクトル V1 と V2 の和を得るには、以下のように記述します。 V1, V2, V3 はいずれも fk_Vector 型の変数です。

V3 = V1 + V2;

なお、和演算は交換法則が成り立ちます。

fk_Vector operator- ( const fk_Vector ,
const fk_Vector  
)

ベクトル差二項演算子

ベクトル V1 と V2 の差を得るには、以下のように記述します。 V1, V2, V3 はいずれも fk_Vector 型の変数です。

V3 = V1 - V2;

なお、差演算は交換法則が成り立ちません。

fk_Vector operator* ( const fk_Vector ,
double   
)

実数倍二項演算子1

ベクトル V1 のスカラー倍ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_Vector 型の変数で、d は double 型の変数です。

V2 = V1 * d;

なお、ベクトルと実数の順番は逆でも構いません。

fk_Vector operator* ( double  ,
const fk_Vector  
)

実数倍二項演算子2

ベクトル V1 のスカラー倍ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_Vector 型の変数で、d は double 型の変数です。

V2 = d * V1;

なお、ベクトルと実数の順番は逆でも構いません。

fk_Vector operator/ ( const fk_Vector ,
double   
)

実数商二項演算子

ベクトル V1 のスカラー商ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_Vector 型の変数で、d は double 型の変数です。

V2 = V1/d;
fk_Vector operator^ ( const fk_Vector ,
const fk_Vector  
)

外積二項演算子

3次元ベクトル $ \mathbf{P} $$ \mathbf{Q} $ の外積ベクトル(ベクトル積)は、以下のように定義されます。

\[ \mathbf{P} \times \mathbf{Q} = (P_yQ_z - P_zQ_y, \; P_zQ_x - P_xQ_z, \; P_xQ_y - P_yQ_x) \]

これを得るには、以下のように記述します。 P,Q,R はいずれも fk_Vector 型の変数です。

R = P ^ Q;

なお、外積は以下のような法則があります。

  • $\mathbf{P}$, $\mathbf{Q}$ が平行でない場合、 上記の $\mathbf{R}$ は、 $\mathbf{P}$, $\mathbf{Q}$ の双方と垂直である。
  • $\mathbf{P}$, $\mathbf{Q}$ が平行な場合、 $\mathbf{R}$ は零ベクトルとなる。
  • $ (\mathbf{P} \times \mathbf{Q}) = -(\mathbf{Q} \times \mathbf{P}) $ である。
    覚え書き
    ここで演算子として採用されている「^」は、 C++ の仕様上あまり演算子としての優先度が高くありません。 そのため、括弧を適切に使用しないと本来の意図と異なる結果を生じるおそれがあります。
double operator* ( const fk_HVector ,
const fk_HVector  
)

内積二項演算子

fk_HVector 型のベクトル V1 と V2 について、 それぞれの3次元ベクトル部の内積値(スカラー積)を得るには、以下のように記述します。 V1, V2 はともに fk_HVector 型の変数で、d は double 型の変数です。

d = V1 * V2;

なお、内積は交換法則が成り立ちます。 同次座標成分については、内積値の算出には利用しません。

fk_HVector operator* ( const fk_Matrix ,
const fk_HVector  
)

行列変換二項演算子1

ベクトル変換二項演算子

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

V_new = M * V_org;

FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。

fk_HVector operator* ( const fk_OrthoMatrix ,
const fk_HVector  
)

行列変換二項演算子2

ベクトル変換二項演算子

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

V_new = M * V_org;

FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。

変数

const double FK_VECTOREPS = 1.0e-12

ベクトル演算誤差基準値