3次元のベクトルを定義します。 More...
#include <Vector3.h>
Public Member Functions | |
Vector3 () | |
すべての要素を 0.0 に設定してインスタンスを初期化します。 | |
Vector3 (float x, float y, float z) | |
指定した値を使用してインスタンスを初期化します。 | |
Vector3 (const Vector2 &vec, float z) | |
Vector2 と z 値を指定してインスタンスを初期化します。 | |
void | Set (float x, float y, float z) |
各要素に値を設定します。 | |
const Vector2 & | GetXY () const |
このベクトルの X Y 要素を Vector2 として返します。 | |
float | GetLength () const |
ベクトルの長さを返します。 | |
float | GetLengthSquared () const |
ベクトルの長さの 2 乗を返します。 | |
void | Normalize () |
このベクトルを正規化します。 | |
void | Clamp (const Vector3 &minVec, const Vector3 &maxVec) |
このベクトルを指定された最大値と最小値の範囲にクランプします。 | |
void | TransformCoord (const Matrix &mat) |
指定された行列を使用してこのベクトルを座標変換します。 | |
bool | IsNaNOrInf () const |
要素のいずれかが NaN または Inf かを判別します。 | |
void | Print (const char *format=NULL, FILE *stream=NULL) const |
デバッグ用に文字列を標準出力します。 | |
Vector3 & | operator+= (const Vector3 &v) |
Vector3 & | operator+= (float v) |
Vector3 & | operator-= (const Vector3 &v) |
Vector3 & | operator-= (float v) |
Vector3 & | operator*= (const Vector3 &v) |
Vector3 & | operator*= (float v) |
Vector3 & | operator/= (const Vector3 &v) |
Vector3 & | operator/= (float v) |
bool | operator== (const Vector3 &v) const |
bool | operator!= (const Vector3 &v) const |
Static Public Member Functions | |
static Vector3 | Normalize (float x, float y, float z) |
指定ベクトルを正規化したベクトルを返します。 | |
static Vector3 | Normalize (const Vector3 &vec) |
指定ベクトルを正規化したベクトルを返します。 | |
static float | Dot (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの内積を計算します。 | |
static Vector3 | Cross (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの外積を計算します。 | |
static Vector3 | Min (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの最小値で構成されるベクトルを返します。 | |
static Vector3 | Max (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの最大値で構成されるベクトルを返します。 | |
static Vector3 | Reflect (const Vector3 &vec, const Vector3 &normal) |
入射ベクトルと法線ベクトルから反射ベクトルを計算します。 | |
static Vector3 | Slide (const Vector3 &vec, const Vector3 &normal) |
入射ベクトルと法線ベクトルから滑りベクトルを計算します。 | |
static Vector3 | Transform (const Vector3 &vec, const Quaternion &qua) |
指定されたクォータニオンを使用してベクトルを座標変換します。 | |
static Vector4 | Transform (const Vector3 &vec, const Matrix &mat) |
指定された行列を使用してベクトルを座標変換します。 | |
static Vector3 | TransformCoord (const Vector3 &vec, const Matrix &mat) |
指定された行列を使用してベクトルを座標変換します。 | |
static Vector3 | Lerp (const Vector3 &start, const Vector3 &end, float t) |
2 つのベクトル間の線形補間を行います。 | |
static Vector3 | Hermite (const Vector3 &v1, const Vector3 &a1, const Vector3 &v2, const Vector3 &a2, float t) |
指定されたベクトルを使用して エルミートスプライン補間を実行します。 | |
static Vector3 | CatmullRom (const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, const Vector3 &vec4, float t) |
指定されたベクトルを使用して Catmull-Rom 補間を行います。 | |
static Vector3 | Project (const Vector3 &point, const Matrix &worldViewProj, float x, float y, float width, float height, float minZ=0.0f, float maxZ=1.0f) |
オブジェクト空間(3D空間)のベクトルをスクリーン空間(2D空間)のベクトルに変換する。 | |
static Vector3 | Unproject (const Vector3 &point, const Matrix &worldViewProj, float x, float y, float width, float height, float minZ=0.0f, float maxZ=1.0f) |
スクリーン空間(2D空間)のベクトルをオブジェクト空間(3D空間)のベクトルに変換する。 | |
Public Attributes | |
float | X |
X 要素 | |
float | Y |
Y 要素 | |
float | Z |
Z 要素 | |
Static Public Attributes | |
static const Vector3 | Zero |
Vector3(0, 0, 0) | |
static const Vector3 | UnitX |
Vector3(1, 0, 0) | |
static const Vector3 | UnitY |
Vector3(0, 1, 0) | |
static const Vector3 | UnitZ |
Vector3(0, 0, 1) | |
static const Vector3 | One |
Vector3(1, 1, 1) | |
Friends | |
Vector3 | operator+ (const Vector3 &v1, const Vector3 &v2) |
Vector3 | operator+ (const Vector3 &v1, float v2) |
Vector3 | operator+ (float v1, const Vector3 &v2) |
Vector3 | operator- (const Vector3 &v1, const Vector3 &v2) |
Vector3 | operator- (const Vector3 &v1, float v2) |
Vector3 | operator- (float v1, const Vector3 &v2) |
Vector3 | operator* (const Vector3 &v1, const Vector3 &v2) |
Vector3 | operator* (const Vector3 &v1, float v2) |
Vector3 | operator* (float v1, const Vector3 &v2) |
Vector3 | operator/ (const Vector3 &v1, const Vector3 &v2) |
Vector3 | operator/ (const Vector3 &v1, float v2) |
Vector3 | operator/ (float v1, const Vector3 &v2) |
Vector3 | operator- (const Vector3 &v1) |
3次元のベクトルを定義します。
static Vector3 Lumino::Vector3::CatmullRom | ( | const Vector3 & | vec1, |
const Vector3 & | vec2, | ||
const Vector3 & | vec3, | ||
const Vector3 & | vec4, | ||
float | t | ||
) | [static] |
指定されたベクトルを使用して Catmull-Rom 補間を行います。
[in] | vec1 | : 1番目の位置 |
[in] | vec2 | : 2番目の位置 (t = 0.0 のときの値) |
[in] | vec3 | : 3番目の位置 (t = 1.0 のときの値) |
[in] | vec4 | : 4番目の位置 |
[in] | t | : 加重係数 |
t は通常、0.0~1.0 を指定します。
void Lumino::Vector3::Clamp | ( | const Vector3 & | minVec, |
const Vector3 & | maxVec | ||
) |
このベクトルを指定された最大値と最小値の範囲にクランプします。
[in] | minVec | : 最小値 |
[in] | maxVec | : 最大値 |
static Vector3 Lumino::Vector3::Cross | ( | const Vector3 & | vec1, |
const Vector3 & | vec2 | ||
) | [static] |
2つのベクトルの外積を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
static float Lumino::Vector3::Dot | ( | const Vector3 & | vec1, |
const Vector3 & | vec2 | ||
) | [static] |
2つのベクトルの内積を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
static Vector3 Lumino::Vector3::Hermite | ( | const Vector3 & | v1, |
const Vector3 & | a1, | ||
const Vector3 & | v2, | ||
const Vector3 & | a2, | ||
float | t | ||
) | [static] |
指定されたベクトルを使用して エルミートスプライン補間を実行します。
[in] | v1 | : 開始ベクトル |
[in] | a1 | : 開始ベクトルの接線ベクトル(速度) |
[in] | v2 | : 終了ベクトル |
[in] | a2 | : 終了ベクトルの接線ベクトル(速度) |
[in] | t | : 加重係数 |
t は通常、0.0~1.0 を指定します。
static Vector3 Lumino::Vector3::Lerp | ( | const Vector3 & | start, |
const Vector3 & | end, | ||
float | t | ||
) | [static] |
2 つのベクトル間の線形補間を行います。
[in] | start | : 開始ベクトル (t = 0.0 のときの値) |
[in] | end | : 終了ベクトル (t = 1.0 のときの値) |
[in] | t | : 加重係数 |
t は通常、0.0~1.0 を指定します。
static Vector3 Lumino::Vector3::Max | ( | const Vector3 & | vec1, |
const Vector3 & | vec2 | ||
) | [static] |
2つのベクトルの最大値で構成されるベクトルを返します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
static Vector3 Lumino::Vector3::Min | ( | const Vector3 & | vec1, |
const Vector3 & | vec2 | ||
) | [static] |
2つのベクトルの最小値で構成されるベクトルを返します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
void Lumino::Vector3::Normalize | ( | ) |
このベクトルを正規化します。
ベクトルの長さが 0 の場合は正規化を行いません。
static Vector3 Lumino::Vector3::Normalize | ( | float | x, |
float | y, | ||
float | z | ||
) | [static] |
指定ベクトルを正規化したベクトルを返します。
[in] | x | : 処理の基になるベクトルの X 要素 |
[in] | y | : 処理の基になるベクトルの Y 要素 |
[in] | z | : 処理の基になるベクトルの Z 要素 |
static Vector3 Lumino::Vector3::Normalize | ( | const Vector3 & | vec | ) | [static] |
指定ベクトルを正規化したベクトルを返します。
[in] | vec | : 処理の基になるベクトル |
void Lumino::Vector3::Print | ( | const char * | format = NULL , |
FILE * | stream = NULL |
||
) | const |
デバッグ用に文字列を標準出力します。
[in] | format | : 書式指定文字列 |
[in] | stream | : 出力先ストリーム |
format が NULL の場合、書式は "%f, %f, %f\n" を使用します。
static Vector3 Lumino::Vector3::Project | ( | const Vector3 & | point, |
const Matrix & | worldViewProj, | ||
float | x, | ||
float | y, | ||
float | width, | ||
float | height, | ||
float | minZ = 0.0f , |
||
float | maxZ = 1.0f |
||
) | [static] |
オブジェクト空間(3D空間)のベクトルをスクリーン空間(2D空間)のベクトルに変換する。
[in] | point | : オブジェクト空間上の座標 |
[in] | worldViewProj | : 結合済みの ワールド - ビュー - プロジェクション行列 |
[in] | x | : ビューポートの左上 X 座標 |
[in] | y | : ビューポートの左上 Y 座標 |
[in] | width | : ビューポートの幅 |
[in] | height | : ビューポートの高さ |
[in] | minZ | : ビューポートの最小深度 |
[in] | maxZ | : ビューポートの最大深度 |
static Vector3 Lumino::Vector3::Reflect | ( | const Vector3 & | vec, |
const Vector3 & | normal | ||
) | [static] |
入射ベクトルと法線ベクトルから反射ベクトルを計算します。
[in] | vec | : 入射ベクトル |
[in] | normal | : 法線ベクトル |
static Vector3 Lumino::Vector3::Slide | ( | const Vector3 & | vec, |
const Vector3 & | normal | ||
) | [static] |
入射ベクトルと法線ベクトルから滑りベクトルを計算します。
[in] | vec | : 入射ベクトル |
[in] | normal | : 法線ベクトル |
static Vector3 Lumino::Vector3::Transform | ( | const Vector3 & | vec, |
const Quaternion & | qua | ||
) | [static] |
指定されたクォータニオンを使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | qua | : 処理の基になるクォータニオン |
static Vector4 Lumino::Vector3::Transform | ( | const Vector3 & | vec, |
const Matrix & | mat | ||
) | [static] |
指定された行列を使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | mat | : 処理の基になる行列 |
void Lumino::Vector3::TransformCoord | ( | const Matrix & | mat | ) |
指定された行列を使用してこのベクトルを座標変換します。
[in] | mat | : 処理の基になる行列 |
ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。
static Vector3 Lumino::Vector3::TransformCoord | ( | const Vector3 & | vec, |
const Matrix & | mat | ||
) | [static] |
指定された行列を使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | mat | : 処理の基になる行列 |
ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。
static Vector3 Lumino::Vector3::Unproject | ( | const Vector3 & | point, |
const Matrix & | worldViewProj, | ||
float | x, | ||
float | y, | ||
float | width, | ||
float | height, | ||
float | minZ = 0.0f , |
||
float | maxZ = 1.0f |
||
) | [static] |
スクリーン空間(2D空間)のベクトルをオブジェクト空間(3D空間)のベクトルに変換する。
[in] | point | : スクリーン空間上の座標 |
[in] | worldViewProj | : 結合済みの ワールド - ビュー - プロジェクション行列 |
[in] | x | : ビューポートの左上 X 座標 |
[in] | y | : ビューポートの左上 Y 座標 |
[in] | width | : ビューポートの幅 |
[in] | height | : ビューポートの高さ |
[in] | minZ | : ビューポートの最小深度 |
[in] | maxZ | : ビューポートの最大深度 |