nlib
|
3次元ベクトルの計算を行う関数が集められたクラスです。全ての関数でレーン3に設定された値は無視されます。 [詳解]
#include "nn/nlib/simd/SimdVector3.h"
静的公開メンバ関数 | |
static bool | IsNaN (SimdVectorArg vec) noexcept |
vec のいずれかの要素がNaN であるかどうかを検証します。 [詳解] | |
static bool | IsInfinite (SimdVectorArg vec) noexcept |
vec のいずれかの要素が正か負の無限大になっているかどうかを検証します。 [詳解] | |
static bool | InBound (SimdVectorArg vec, SimdVectorArg bounds) noexcept |
vec の要素がbounds の境界内であるかどうかを検証します。 [詳解] | |
static f128 | Dot (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
3次元ベクトル間の内積を計算します。 [詳解] | |
template<bool SetLane0, bool SetLane1, bool SetLane2, bool SetLane3> | |
static f128 | DotEx (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
3次元ベクトル間の内積を計算して、各レーンに設定します。 [詳解] | |
static SimdVector | Cross (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
3次元ベクトル間の外積を計算します。 [詳解] | |
static SimdVector | Normalize (SimdVectorArg vec) noexcept |
3次元ベクトルを正規化します。 [詳解] | |
static SimdVector | NormalizeEst (SimdVectorArg vec) noexcept |
3次元ベクトルを相対的に低い精度で正規化します。 [詳解] | |
static float | Normalize (SimdVector *normalized, SimdVectorArg vec) noexcept |
3次元ベクトルを正規化します。 [詳解] | |
static float | NormalizeEst (SimdVector *normalized, SimdVectorArg vec) noexcept |
3次元ベクトルを相対的に低い精度で正規化します。 [詳解] | |
static f128 | LengthSq (SimdVectorArg vec) noexcept |
3次元ベクトルの長さの2乗を計算します。 [詳解] | |
static f128 | Length (SimdVectorArg vec) noexcept |
3次元ベクトルの長さを計算します。 [詳解] | |
static f128 | LengthEst (SimdVectorArg vec) noexcept |
3次元ベクトルの長さを相対的に低い精度で計算します。 [詳解] | |
static f128 | RecpLength (SimdVectorArg vec) noexcept |
3次元ベクトルの長さの逆数を計算します。 [詳解] | |
static f128 | RecpLengthEst (SimdVectorArg vec) noexcept |
3次元ベクトルの長さの逆数を相対的に低い精度で計算します。 [詳解] | |
static f128 | GetAngle (SimdVectorArg vec1_normalized, SimdVectorArg vec2_normalized) noexcept |
正規化された2つの3次元ベクトル間の角度(ラジアン)を計算します。 [詳解] | |
static SimdVector | Reflect (SimdVectorArg vec, SimdVectorArg normal) noexcept |
3次元の法線ベクトルによって3次元ベクトルを反射します。 [詳解] | |
static SimdVector | Transform (SimdVectorArg vec, SimdMatrixArg m) noexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を1として計算します)。 [詳解] | |
static SimdVector | TransformCoord (SimdVectorArg vec, SimdMatrixArg m) noexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を1として計算します)。 [詳解] | |
static SimdVector | TransformNormal (SimdVectorArg vec, SimdMatrixArg m) noexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を0として計算します)。 [詳解] | |
static SimdVector | Rotate (SimdVectorArg vec, SimdQuaternionArg q_normalized) noexcept |
クォータニオンを使ってベクトルを回転させます。 [詳解] | |
static SimdVector | InvRotate (SimdVectorArg vec, SimdQuaternionArg q_normalized) noexcept |
クォータニオンを使ってベクトルを逆回転させます。 [詳解] | |
ロードとストア | |
static SimdVector | LoadFloat3 (const Float3 *p) noexcept |
メモリから3次元ベクトルを読み込みます [詳解] | |
template<typename MyVector3 > | |
static SimdVector | LoadFloat3 (const MyVector3 *p) noexcept |
メモリから3次元ベクトルを読み込みます [詳解] | |
static void | StoreFloat3 (Float3 *p, SimdVectorArg vec) noexcept |
3次元ベクトルをメモリに書き込みます [詳解] | |
template<typename MyVector3 > | |
static void | StoreFloat3 (MyVector3 *p, SimdVectorArg vec) noexcept |
3次元ベクトルをメモリに書き込みます [詳解] | |
比較 | |
static bool | CmpEq (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
2つの3次元ベクトルが等しいかどうか比較します。 [詳解] | |
static bool | CmpLt (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
vec1 の全ての要素がvec2 の対応する要素よりも小さいかどうか比較します。 [詳解] | |
static bool | CmpLe (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
vec1 の全ての要素がvec2 の対応する要素以下かどうか比較します。 [詳解] | |
static bool | CmpGt (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
vec1 の全ての要素がvec2 の対応する要素よりも大きいかどうか比較します。 [詳解] | |
static bool | CmpGe (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
vec1 の全ての要素がvec2 の対応する要素以上かどうか比較します。 [詳解] | |
static bool | CmpNe (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
vec1 とvec2 が等しくないかどうか比較します。 [詳解] | |
static bool | CmpNearEq (SimdVectorArg vec1, SimdVectorArg vec2, SimdVectorArg eps) noexcept |
vec1 とvec2 がほぼ等しいかどうか比較します。 [詳解] | |
3次元ベクトルの計算を行う関数が集められたクラスです。全ての関数でレーン3に設定された値は無視されます。
F128
クラスに実装されている関数を使うことができる場合があります。 SimdVector3.h の 26 行目に定義があります。
|
staticnoexcept |
2つの3次元ベクトルが等しいかどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
true
, そうでなければfalse
|
staticnoexcept |
vec1
の全ての要素がvec2
の対応する要素以上かどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
vec1
が vec2
以上の場合はtrue
, そうでなければfalse
|
staticnoexcept |
vec1
の全ての要素がvec2
の対応する要素よりも大きいかどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
vec1
が vec2
よりも大きい場合はtrue
, そうでなければfalse
|
staticnoexcept |
vec1
の全ての要素がvec2
の対応する要素以下かどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
vec1
が vec2
以下の場合はtrue
, そうでなければfalse
|
staticnoexcept |
vec1
の全ての要素がvec2
の対応する要素よりも小さいかどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
vec1
が vec2
よりも小さい場合はtrue
, そうでなければfalse
|
staticnoexcept |
vec1
とvec2
が等しくないかどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
vec1
が vec2
と等しくない場合はtrue
, そうでなければfalse
|
staticnoexcept |
vec1
とvec2
がほぼ等しいかどうか比較します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
[in] | eps | 許容値 |
vec1
が vec2
がほぼ等しい場合はtrue
, そうでなければfalse
|
staticnoexcept |
3次元ベクトル間の外積を計算します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトル間の内積を計算します。
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトル間の内積を計算して、各レーンに設定します。
SetLane0 | true の場合レーン0に内積が、false の場合0が格納されます。 |
SetLane1 | true の場合レーン1に内積が、false の場合0が格納されます。 |
SetLane2 | true の場合レーン2に内積が、false の場合0が格納されます。 |
SetLane3 | true の場合レーン3に内積が、false の場合0が格納されます。 |
[in] | vec1 | 3次元ベクトル |
[in] | vec2 | 3次元ベクトル |
|
staticnoexcept |
正規化された2つの3次元ベクトル間の角度(ラジアン)を計算します。
[in] | vec1_normalized | 正規化された3次元ベクトル |
[in] | vec2_normalized | 正規化された3次元ベクトル |
|
staticnoexcept |
vec
の要素がbounds
の境界内であるかどうかを検証します。
[in] | vec | 3次元ベクトル |
[in] | bounds | 境界となる3次元のボックス |
true
, そうでなければfalse
|
staticnoexcept |
クォータニオンを使ってベクトルを逆回転させます。
[in] | vec | 回転させるベクトル |
[in] | q_normalized | 正規化されたクォータニオン |
|
staticnoexcept |
vec
のいずれかの要素が正か負の無限大になっているかどうかを検証します。
[in] | vec | 3次元ベクトル |
vec
のいずれかの要素が無限大であればtrue
, そうでなければfalse
|
staticnoexcept |
vec
のいずれかの要素がNaN
であるかどうかを検証します。
[in] | vec | 3次元ベクトル |
vec
のいずれかの要素がNaN
であればtrue
, そうでなければfalse
|
staticnoexcept |
3次元ベクトルの長さを計算します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトルの長さを相対的に低い精度で計算します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトルの長さの2乗を計算します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
メモリから3次元ベクトルを読み込みます
[in] | p | 3次元ベクトルが格納されているポインタ |
|
staticnoexcept |
メモリから3次元ベクトルを読み込みます
MyVector3 | float 型のx, y, z という名前の公開データメンバを連続した領域に持つ構造体 |
[in] | p | 3次元ベクトルが格納されているポインタ |
MyVector3
は例えばDirectXのXMFLOAT3
, XMFLOAT3A
のようなクラスになります。
|
staticnoexcept |
3次元ベクトルを正規化します。
[in] | vec | 3次元ベクトル |
vec
の長さが無限大の場合は各要素がNaN
のベクトルを、長さが0の場合は0ベクトルを返します。
|
staticnoexcept |
3次元ベクトルを正規化します。
[out] | normalized | 正規化された3次元ベクトル |
[in] | vec | 3次元ベクトル |
vec
の長さの2乗
|
staticnoexcept |
3次元ベクトルを相対的に低い精度で正規化します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトルを相対的に低い精度で正規化します。
[out] | normalized | 正規化された3次元ベクトル |
[in] | vec | 3次元ベクトル |
vec
の長さの2乗
|
staticnoexcept |
3次元ベクトルの長さの逆数を計算します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
3次元ベクトルの長さの逆数を相対的に低い精度で計算します。
[in] | vec | 3次元ベクトル |
|
staticnoexcept |
3次元の法線ベクトルによって3次元ベクトルを反射します。
[in] | vec | 反射される3次元ベクトル |
[in] | normal | 3次元法線ベクトル(単位ベクトル) |
|
staticnoexcept |
クォータニオンを使ってベクトルを回転させます。
[in] | vec | 回転させるベクトル |
[in] | q_normalized | 正規化されたクォータニオン |
|
staticnoexcept |
3次元ベクトルをメモリに書き込みます
[in,out] | p | 3次元ベクトルが格納されるポインタ |
[in] | vec | 3次元ベクトル(w要素はメモリに格納されない) |
|
staticnoexcept |
3次元ベクトルをメモリに書き込みます
MyVector3 | float 型のx, y, z という名前の公開データメンバを連続した領域に持つ構造体 |
[in,out] | p | 3次元ベクトルが格納されるポインタ |
[in] | vec | 3次元ベクトル(w要素はメモリに格納されない) |
MyVector3
は例えばDirectXのXMFLOAT3
, XMFLOAT3A
のようなクラスになります。
|
staticnoexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を1として計算します)。
[in] | vec | 3次元ベクトル |
[in] | m | 変換行列 |
vec
のレーン3(w要素)は1であるとして計算が行われます。計算結果のベクトルは同時座標系にない(レーン3(w要素)は1.0ではない)かもしれません。
|
staticnoexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を1として計算します)。
[in] | vec | 3次元ベクトル |
[in] | m | 変換行列 |
vec
のレーン3(w要素)は1であるとして計算が行われます。計算結果のベクトルは同時座標系にあり(レーン3(w要素)は1.0)ます。
|
staticnoexcept |
行列により3次元ベクトルを変換します(レーン3(w要素)を0として計算します)。
[in] | vec | 3次元ベクトル |
[in] | m | 変換行列 |
© 2012-2017 Nintendo Co., Ltd. All rights reserved.