![]() |
Lumino
|
3次元のベクトルを定義します。 More...
#include <Vector3.hpp>
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) |
各要素に値を設定します。 | |
void | get (float *outX, float *outY, float *outZ) const |
get | |
float * | data () noexcept |
Returns pointer to the first element. More... | |
const float * | data () const noexcept |
Returns pointer to the first element. More... | |
const Vector2 & | xy () const |
このベクトルの X Y 要素を Vector2 として返します。 | |
float | length () const |
ベクトルの長さを返します。 | |
float | lengthSquared () const |
ベクトルの長さの 2 乗を返します。 | |
void | mutatingNormalize () |
このベクトルを正規化します。 More... | |
void | clamp (const Vector3 &minVec, const Vector3 &maxVec) |
このベクトルを指定された最大値と最小値の範囲にクランプします。 More... | |
void | transformCoord (const Matrix &mat) |
指定された行列を使用してこのベクトルを座標変換します。 More... | |
bool | isNaNOrInf () const |
要素のいずれかが NaN または Inf かを判別します。 | |
void | print (const char *format=NULL, FILE *stream=NULL) const |
デバッグ用に文字列を標準出力します。 More... | |
Static Public Member Functions | |
static Vector3 | normalize (float x, float y, float z) |
指定ベクトルを正規化したベクトルを返します。 More... | |
static Vector3 | normalize (const Vector3 &vec) |
指定ベクトルを正規化したベクトルを返します。 More... | |
static Vector3 | replicate (float value) |
指定した値をすべての要素に設定します。 | |
static float | distance (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトル間の距離を計算します。 More... | |
static float | distanceSquared (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトル間の距離の2乗を計算します。 More... | |
static float | dot (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの内積を計算します。 More... | |
static Vector3 | cross (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの外積を計算します。 More... | |
static Vector3 | min (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの最小値で構成されるベクトルを返します。 More... | |
static Vector3 | min (const Vector3 *vectors, int count) |
指定された複数のベクトルの最小値で構成されるベクトルを返します。 More... | |
static Vector3 | max (const Vector3 &vec1, const Vector3 &vec2) |
2つのベクトルの最大値で構成されるベクトルを返します。 More... | |
static Vector3 | max (const Vector3 *vectors, int count) |
指定された複数のベクトルの最大値で構成されるベクトルを返します。 More... | |
static Vector3 | reflect (const Vector3 &vec, const Vector3 &normal) |
入射ベクトルと法線ベクトルから反射ベクトルを計算します。 More... | |
static Vector3 | slide (const Vector3 &vec, const Vector3 &normal) |
入射ベクトルと法線ベクトルから滑りベクトルを計算します。 More... | |
static Vector3 | transform (const Vector3 &vec, const Quaternion &qua) |
指定されたクォータニオンを使用してベクトルを座標変換します。 More... | |
static Vector4 | transform (const Vector3 &vec, const Matrix &mat) |
指定された行列を使用してベクトルを座標変換します。 More... | |
static Vector3 | transformCoord (const Vector3 &vec, const Matrix &mat) |
指定された行列を使用してベクトルを座標変換します。 More... | |
static Vector3 | lerp (const Vector3 &start, const Vector3 &end, float t) |
2 つのベクトル間の線形補間を行います。 More... | |
static Vector3 | hermite (const Vector3 &v1, const Vector3 &a1, const Vector3 &v2, const Vector3 &a2, float t) |
指定されたベクトルを使用して エルミートスプライン補間を実行します。 More... | |
static Vector3 | catmullRom (const Vector3 &vec1, const Vector3 &vec2, const Vector3 &vec3, const Vector3 &vec4, float t) |
指定されたベクトルを使用して Catmull-Rom 補間を行います。 More... | |
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空間)のベクトルに変換する。 More... | |
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空間)のベクトルに変換する。 More... | |
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 | Ones |
Vector3(1, 1, 1) | |
static const Vector3 | Minimum |
Vector3(FLT_MIN, FLT_MIN, FLT_MIN) | |
static const Vector3 | Maximum |
Vector3(FLT_MAX, FLT_MAX, FLT_MAX) | |
3次元のベクトルを定義します。
|
static |
指定されたベクトルを使用して Catmull-Rom 補間を行います。
[in] | vec1 | : 1番目の位置 |
[in] | vec2 | : 2番目の位置 (t = 0.0 のときの値) |
[in] | vec3 | : 3番目の位置 (t = 1.0 のときの値) |
[in] | vec4 | : 4番目の位置 |
[in] | t | : 加重係数 |
このベクトルを指定された最大値と最小値の範囲にクランプします。
[in] | minVec | : 最小値 |
[in] | maxVec | : 最大値 |
2つのベクトルの外積を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
|
inlinenoexcept |
Returns pointer to the first element.
|
inlinenoexcept |
Returns pointer to the first element.
2つのベクトル間の距離を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
2つのベクトル間の距離の2乗を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
2つのベクトルの内積を計算します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
|
static |
指定されたベクトルを使用して エルミートスプライン補間を実行します。
[in] | v1 | : 開始ベクトル |
[in] | a1 | : 開始ベクトルの接線ベクトル(速度) |
[in] | v2 | : 終了ベクトル |
[in] | a2 | : 終了ベクトルの接線ベクトル(速度) |
[in] | t | : 加重係数 |
2 つのベクトル間の線形補間を行います。
[in] | start | : 開始ベクトル (t = 0.0 のときの値) |
[in] | end | : 終了ベクトル (t = 1.0 のときの値) |
[in] | t | : 加重係数 |
t は通常、0.0~1.0 を指定します。
2つのベクトルの最大値で構成されるベクトルを返します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
指定された複数のベクトルの最大値で構成されるベクトルを返します。
[in] | vectors | : 処理の基になるベクトルの配列 |
[in] | count | : 処理の基になるベクトルの数 |
2つのベクトルの最小値で構成されるベクトルを返します。
[in] | vec1 | : 処理の基になるベクトル |
[in] | vec2 | : 処理の基になるベクトル |
指定された複数のベクトルの最小値で構成されるベクトルを返します。
[in] | vectors | : 処理の基になるベクトルの配列 |
[in] | count | : 処理の基になるベクトルの数 |
void ln::Vector3::mutatingNormalize | ( | ) |
このベクトルを正規化します。
ベクトルの長さが 0 の場合は正規化を行いません。
|
static |
指定ベクトルを正規化したベクトルを返します。
[in] | x | : 処理の基になるベクトルの X 要素 |
[in] | y | : 処理の基になるベクトルの Y 要素 |
[in] | z | : 処理の基になるベクトルの Z 要素 |
指定ベクトルを正規化したベクトルを返します。
[in] | vec | : 処理の基になるベクトル |
void ln::Vector3::print | ( | const char * | format = NULL , |
FILE * | stream = NULL |
||
) | const |
デバッグ用に文字列を標準出力します。
[in] | format | : 書式指定文字列 |
[in] | stream | : 出力先ストリーム |
format が NULL の場合、書式は "%f, %f, %f\n" を使用します。
|
static |
オブジェクト空間(3D空間)のベクトルをスクリーン空間(2D空間)のベクトルに変換する。
[in] | point | : オブジェクト空間上の座標 |
[in] | worldViewProj | : 結合済みの ワールド - ビュー - プロジェクション行列 |
[in] | x | : ビューポートの左上 X 座標 |
[in] | y | : ビューポートの左上 Y 座標 |
[in] | width | : ビューポートの幅 |
[in] | height | : ビューポートの高さ |
[in] | minZ | : ビューポートの最小深度 |
[in] | maxZ | : ビューポートの最大深度 |
入射ベクトルと法線ベクトルから反射ベクトルを計算します。
[in] | vec | : 入射ベクトル |
[in] | normal | : 法線ベクトル |
入射ベクトルと法線ベクトルから滑りベクトルを計算します。
[in] | vec | : 入射ベクトル |
[in] | normal | : 法線ベクトル |
|
static |
指定されたクォータニオンを使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | qua | : 処理の基になるクォータニオン |
指定された行列を使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | mat | : 処理の基になる行列 |
void ln::Vector3::transformCoord | ( | const Matrix & | mat | ) |
指定された行列を使用してこのベクトルを座標変換します。
[in] | mat | : 処理の基になる行列 |
ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。
指定された行列を使用してベクトルを座標変換します。
[in] | vec | : 処理の基になるベクトル |
[in] | mat | : 処理の基になる行列 |
ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。
|
static |
スクリーン空間(2D空間)のベクトルをオブジェクト空間(3D空間)のベクトルに変換する。
[in] | point | : スクリーン空間上の座標 |
[in] | worldViewProj | : 結合済みの ワールド - ビュー - プロジェクション行列 |
[in] | x | : ビューポートの左上 X 座標 |
[in] | y | : ビューポートの左上 Y 座標 |
[in] | width | : ビューポートの幅 |
[in] | height | : ビューポートの高さ |
[in] | minZ | : ビューポートの最小深度 |
[in] | maxZ | : ビューポートの最大深度 |