Lumino
ln::Vector3 Struct Reference

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 Vector2xy () 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)
 

Detailed Description

3次元のベクトルを定義します。

Member Function Documentation

◆ catmullRom()

static Vector3 ln::Vector3::catmullRom ( const Vector3 vec1,
const Vector3 vec2,
const Vector3 vec3,
const Vector3 vec4,
float  t 
)
static

指定されたベクトルを使用して Catmull-Rom 補間を行います。

Parameters
[in]vec1: 1番目の位置
[in]vec2: 2番目の位置 (t = 0.0 のときの値)
[in]vec3: 3番目の位置 (t = 1.0 のときの値)
[in]vec4: 4番目の位置
[in]t: 加重係数
Returns
補間結果のベクトル t は通常、0.0~1.0 を指定します。

◆ clamp()

void ln::Vector3::clamp ( const Vector3 minVec,
const Vector3 maxVec 
)

このベクトルを指定された最大値と最小値の範囲にクランプします。

Parameters
[in]minVec: 最小値
[in]maxVec: 最大値

◆ cross()

static Vector3 ln::Vector3::cross ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトルの外積を計算します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
2つのベクトルの外積

◆ data() [1/2]

float* ln::Vector3::data ( )
inlinenoexcept

Returns pointer to the first element.

◆ data() [2/2]

const float* ln::Vector3::data ( ) const
inlinenoexcept

Returns pointer to the first element.

◆ distance()

static float ln::Vector3::distance ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトル間の距離を計算します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
2つのベクトル間の距離

◆ distanceSquared()

static float ln::Vector3::distanceSquared ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトル間の距離の2乗を計算します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
2つのベクトル間の距離の2乗

◆ dot()

static float ln::Vector3::dot ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトルの内積を計算します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
2つのベクトルの内積
Note
正規化された方向ベクトルの内積は、2つのベクトルのコサインを表します。 例えば、向きが完全に一致している場合は 1 を、反対の場合は -1 を返します。

◆ hermite()

static Vector3 ln::Vector3::hermite ( const Vector3 v1,
const Vector3 a1,
const Vector3 v2,
const Vector3 a2,
float  t 
)
static

指定されたベクトルを使用して エルミートスプライン補間を実行します。

Parameters
[in]v1: 開始ベクトル
[in]a1: 開始ベクトルの接線ベクトル(速度)
[in]v2: 終了ベクトル
[in]a2: 終了ベクトルの接線ベクトル(速度)
[in]t: 加重係数
Returns
補間結果の値 t は通常、0.0~1.0 を指定します。

◆ lerp()

static Vector3 ln::Vector3::lerp ( const Vector3 start,
const Vector3 end,
float  t 
)
static

2 つのベクトル間の線形補間を行います。

Parameters
[in]start: 開始ベクトル (t = 0.0 のときの値)
[in]end: 終了ベクトル (t = 1.0 のときの値)
[in]t: 加重係数
Returns
補間結果のベクトル

t は通常、0.0~1.0 を指定します。

◆ max() [1/2]

static Vector3 ln::Vector3::max ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトルの最大値で構成されるベクトルを返します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
最大値から作成されたベクトル

◆ max() [2/2]

static Vector3 ln::Vector3::max ( const Vector3 vectors,
int  count 
)
static

指定された複数のベクトルの最大値で構成されるベクトルを返します。

Parameters
[in]vectors: 処理の基になるベクトルの配列
[in]count: 処理の基になるベクトルの数
Returns
最大値から作成されたベクトル

◆ min() [1/2]

static Vector3 ln::Vector3::min ( const Vector3 vec1,
const Vector3 vec2 
)
static

2つのベクトルの最小値で構成されるベクトルを返します。

Parameters
[in]vec1: 処理の基になるベクトル
[in]vec2: 処理の基になるベクトル
Returns
最小値から作成されたベクトル

◆ min() [2/2]

static Vector3 ln::Vector3::min ( const Vector3 vectors,
int  count 
)
static

指定された複数のベクトルの最小値で構成されるベクトルを返します。

Parameters
[in]vectors: 処理の基になるベクトルの配列
[in]count: 処理の基になるベクトルの数
Returns
最小値から作成されたベクトル

◆ mutatingNormalize()

void ln::Vector3::mutatingNormalize ( )

このベクトルを正規化します。

ベクトルの長さが 0 の場合は正規化を行いません。

◆ normalize() [1/2]

static Vector3 ln::Vector3::normalize ( float  x,
float  y,
float  z 
)
static

指定ベクトルを正規化したベクトルを返します。

Parameters
[in]x: 処理の基になるベクトルの X 要素
[in]y: 処理の基になるベクトルの Y 要素
[in]z: 処理の基になるベクトルの Z 要素
Returns
正規化されたベクトル

◆ normalize() [2/2]

static Vector3 ln::Vector3::normalize ( const Vector3 vec)
static

指定ベクトルを正規化したベクトルを返します。

Parameters
[in]vec: 処理の基になるベクトル
Returns
正規化されたベクトル

◆ print()

void ln::Vector3::print ( const char *  format = NULL,
FILE *  stream = NULL 
) const

デバッグ用に文字列を標準出力します。

Parameters
[in]format: 書式指定文字列
[in]stream: 出力先ストリーム

format が NULL の場合、書式は "%f, %f, %f\n" を使用します。

◆ project()

static Vector3 ln::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空間)のベクトルに変換する。

Parameters
[in]point: オブジェクト空間上の座標
[in]worldViewProj: 結合済みの ワールド - ビュー - プロジェクション行列
[in]x: ビューポートの左上 X 座標
[in]y: ビューポートの左上 Y 座標
[in]width: ビューポートの幅
[in]height: ビューポートの高さ
[in]minZ: ビューポートの最小深度
[in]maxZ: ビューポートの最大深度

◆ reflect()

static Vector3 ln::Vector3::reflect ( const Vector3 vec,
const Vector3 normal 
)
static

入射ベクトルと法線ベクトルから反射ベクトルを計算します。

Parameters
[in]vec: 入射ベクトル
[in]normal: 法線ベクトル
Returns
反射ベクトル

◆ slide()

static Vector3 ln::Vector3::slide ( const Vector3 vec,
const Vector3 normal 
)
static

入射ベクトルと法線ベクトルから滑りベクトルを計算します。

Parameters
[in]vec: 入射ベクトル
[in]normal: 法線ベクトル
Returns
滑りベクトル

◆ transform() [1/2]

static Vector3 ln::Vector3::transform ( const Vector3 vec,
const Quaternion qua 
)
static

指定されたクォータニオンを使用してベクトルを座標変換します。

Parameters
[in]vec: 処理の基になるベクトル
[in]qua: 処理の基になるクォータニオン
Returns
変換されたベクトル

◆ transform() [2/2]

static Vector4 ln::Vector3::transform ( const Vector3 vec,
const Matrix mat 
)
static

指定された行列を使用してベクトルを座標変換します。

Parameters
[in]vec: 処理の基になるベクトル
[in]mat: 処理の基になる行列
Returns
変換されたベクトル

◆ transformCoord() [1/2]

void ln::Vector3::transformCoord ( const Matrix mat)

指定された行列を使用してこのベクトルを座標変換します。

Parameters
[in]mat: 処理の基になる行列

ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。

◆ transformCoord() [2/2]

static Vector3 ln::Vector3::transformCoord ( const Vector3 vec,
const Matrix mat 
)
static

指定された行列を使用してベクトルを座標変換します。

Parameters
[in]vec: 処理の基になるベクトル
[in]mat: 処理の基になる行列
Returns
変換されたベクトル

ベクトルを (X, Y, Z, 1.0) として座標変換を行い、結果を w で除算します。

◆ unproject()

static Vector3 ln::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空間)のベクトルに変換する。

Parameters
[in]point: スクリーン空間上の座標
[in]worldViewProj: 結合済みの ワールド - ビュー - プロジェクション行列
[in]x: ビューポートの左上 X 座標
[in]y: ビューポートの左上 Y 座標
[in]width: ビューポートの幅
[in]height: ビューポートの高さ
[in]minZ: ビューポートの最小深度
[in]maxZ: ビューポートの最大深度

The documentation for this struct was generated from the following file: