nlib
|
4次元ベクトルの計算を行う関数が集められたクラスです。 [詳解]
#include "nn/nlib/simd/SimdVector4.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 |
4次元ベクトル間の内積を計算します。 [詳解] | |
template<bool SetLane0, bool SetLane1, bool SetLane2, bool SetLane3> | |
static f128 | DotEx (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
4次元ベクトル間の内積を計算して、各レーンに設定します。 [詳解] | |
static f128 | Dot2 (SimdVectorArg a, SimdVectorArg b0, SimdVectorArg b1) noexcept |
4次元ベクトル間の内積, dot(a , b0 ), dot(a , b1 )を計算して、結果をレーン0, 1に設定します。 [詳解] | |
static f128 | Dot3 (SimdVectorArg a, SimdVectorArg b0, SimdVectorArg b1, SimdVectorArg b2) noexcept |
4次元ベクトル間の内積, dot(a , b0 ), dot(a , b1 ), dot(a , b2 )を計算して、結果をレーン0, 1, 2に設定します。 [詳解] | |
static f128 | Dot4 (SimdVectorArg a, SimdVectorArg b0, SimdVectorArg b1, SimdVectorArg b2, SimdVectorArg b3) noexcept |
4次元ベクトル間の内積, dot(a , b0 ), dot(a , b1 ), dot(a , b2 ), dot(a , b3 )を計算して、結果をレーン0, 1, 2, 3に設定します。 [詳解] | |
static SimdVector | Normalize (SimdVectorArg vec) noexcept |
4次元ベクトルを正規化します。 [詳解] | |
static SimdVector | NormalizeEst (SimdVectorArg vec) noexcept |
4次元ベクトルを相対的に低い精度で正規化します。 [詳解] | |
static f128 | LengthSq (SimdVectorArg vec) noexcept |
4次元ベクトルの長さの2乗を計算します。 [詳解] | |
static f128 | Length (SimdVectorArg vec) noexcept |
4次元ベクトルの長さを計算します。 [詳解] | |
static f128 | LengthEst (SimdVectorArg vec) noexcept |
4次元ベクトルの長さを相対的に低い精度で計算します。 [詳解] | |
static f128 | RecpLength (SimdVectorArg vec) noexcept |
4次元ベクトルの長さの逆数を計算します。 [詳解] | |
static f128 | RecpLengthEst (SimdVectorArg vec) noexcept |
4次元ベクトルの長さの逆数を相対的に低い精度で計算します。 [詳解] | |
static f128 | GetAngle (SimdVectorArg vec1_normalized, SimdVectorArg vec2_normalized) noexcept |
正規化された2つの4次元ベクトル間の角度(ラジアン)を計算します。 [詳解] | |
static SimdVector | Reflect (SimdVectorArg vec, SimdVectorArg normal) noexcept |
4次元の法線ベクトルによって4次元ベクトルを反射します。 [詳解] | |
static SimdVector | Transform (SimdVectorArg vec, SimdMatrixArg m) noexcept |
行列により4次元ベクトルを変換します。 [詳解] | |
ロードとストア | |
template<typename MyVector4 > | |
static SimdVector | LoadFloat4 (const MyVector4 *p) noexcept |
メモリから4次元ベクトルを読み込みます [詳解] | |
template<typename MyVector4 > | |
static void | StoreFloat4 (MyVector4 *p, SimdVectorArg vec) noexcept |
4次元ベクトルをメモリに書き込みます [詳解] | |
比較 | |
static bool | CmpEq (SimdVectorArg vec1, SimdVectorArg vec2) noexcept |
2つの4次元ベクトルが等しいかどうか比較します。 [詳解] | |
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 がほぼ等しいかどうか比較します。 [詳解] | |
4次元ベクトルの計算を行う関数が集められたクラスです。
F128
クラスに実装されている関数を使うことができる場合があります。 SimdVector4.h の 11 行目に定義があります。
|
inlinestaticnoexcept |
2つの4次元ベクトルが等しいかどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
true
, そうでなければfalse
SimdVector4.h の 17 行目に定義があります。
|
inlinestaticnoexcept |
vec1
の全ての要素がvec2
の対応する要素以上かどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
vec1
が vec2
以上の場合はtrue
, そうでなければfalse
SimdVector4.h の 29 行目に定義があります。
|
inlinestaticnoexcept |
vec1
の全ての要素がvec2
の対応する要素よりも大きいかどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
vec1
が vec2
よりも大きい場合はtrue
, そうでなければfalse
SimdVector4.h の 26 行目に定義があります。
|
inlinestaticnoexcept |
vec1
の全ての要素がvec2
の対応する要素以下かどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
vec1
が vec2
以下の場合はtrue
, そうでなければfalse
SimdVector4.h の 23 行目に定義があります。
|
inlinestaticnoexcept |
vec1
の全ての要素がvec2
の対応する要素よりも小さいかどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
vec1
が vec2
よりも小さい場合はtrue
, そうでなければfalse
SimdVector4.h の 20 行目に定義があります。
|
inlinestaticnoexcept |
vec1
とvec2
が等しくないかどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
vec1
が vec2
と等しくない場合はtrue
, そうでなければfalse
SimdVector4.h の 32 行目に定義があります。
|
inlinestaticnoexcept |
vec1
とvec2
がほぼ等しいかどうか比較します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
[in] | eps | 許容値 |
vec1
が vec2
がほぼ等しい場合はtrue
, そうでなければfalse
SimdVector4.h の 36 行目に定義があります。
|
staticnoexcept |
4次元ベクトル間の内積を計算します。
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
|
staticnoexcept |
4次元ベクトル間の内積, dot(a
, b0
), dot(a
, b1
)を計算して、結果をレーン0, 1に設定します。
[in] | a | 4次元ベクトル |
[in] | b0 | 4次元ベクトル |
[in] | b1 | 4次元ベクトル |
a
, b0
), レーン1にdot(a
, b1
)が格納されています。
|
staticnoexcept |
4次元ベクトル間の内積, dot(a
, b0
), dot(a
, b1
), dot(a
, b2
)を計算して、結果をレーン0, 1, 2に設定します。
[in] | a | 4次元ベクトル |
[in] | b0 | 4次元ベクトル |
[in] | b1 | 4次元ベクトル |
[in] | b2 | 4次元ベクトル |
a
, b0
), レーン1にdot(a
, b1
), レーン2にdot(a
, b2
)が格納されています。
|
staticnoexcept |
4次元ベクトル間の内積, dot(a
, b0
), dot(a
, b1
), dot(a
, b2
), dot(a
, b3
)を計算して、結果をレーン0, 1, 2, 3に設定します。
[in] | a | 4次元ベクトル |
[in] | b0 | 4次元ベクトル |
[in] | b1 | 4次元ベクトル |
[in] | b2 | 4次元ベクトル |
[in] | b3 | 4次元ベクトル |
a
, b0
), レーン1にdot(a
, b1
), レーン2にdot(a
, b2
), レーン3にdot(a
, b3
)が格納されています。
|
staticnoexcept |
4次元ベクトル間の内積を計算して、各レーンに設定します。
SetLane0 | true の場合レーン0に内積が、false の場合0.fが格納されます。 |
SetLane1 | true の場合レーン1に内積が、false の場合0.fが格納されます。 |
SetLane2 | true の場合レーン2に内積が、false の場合0.fが格納されます。 |
SetLane3 | true の場合レーン3に内積が、false の場合0.fが格納されます。 |
[in] | vec1 | 4次元ベクトル |
[in] | vec2 | 4次元ベクトル |
|
staticnoexcept |
正規化された2つの4次元ベクトル間の角度(ラジアン)を計算します。
[in] | vec1_normalized | 正規化された4次元ベクトル |
[in] | vec2_normalized | 正規化された4次元ベクトル |
|
inlinestaticnoexcept |
vec
の要素がbounds
の境界内であるかどうかを検証します。
[in] | vec | 4次元ベクトル |
[in] | bounds | 境界となる4次元のボックス |
true
, そうでなければfalse
SimdVector4.h の 45 行目に定義があります。
|
inlinestaticnoexcept |
vec
のいずれかの要素が正か負の無限大になっているかどうかを検証します。
[in] | vec | 4次元ベクトル |
vec
のいずれかの要素が無限大であればtrue
, そうでなければfalse
SimdVector4.h の 42 行目に定義があります。
|
inlinestaticnoexcept |
vec
のいずれかの要素がNaN
であるかどうかを検証します。
[in] | vec | 4次元ベクトル |
vec
のいずれかの要素がNaN
であればtrue
, そうでなければfalse
SimdVector4.h の 39 行目に定義があります。
|
staticnoexcept |
4次元ベクトルの長さを計算します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
4次元ベクトルの長さを相対的に低い精度で計算します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
4次元ベクトルの長さの2乗を計算します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
メモリから4次元ベクトルを読み込みます
MyVector4 | float 型のx, y, z, w という名前の公開データメンバを連続した領域に持つ構造体 |
[in] | p | 4次元ベクトルが格納されているポインタ |
MyVector4
は例えばnlib
の nn::nlib::simd::Float4 やDirectXのXMFLOAT4
, XMFLOAT4A
のようなクラスになります。
|
staticnoexcept |
4次元ベクトルを正規化します。
[in] | vec | 4次元ベクトル |
vec
の長さが無限大の場合は各要素がNaN
のベクトルを、長さが0の場合は0ベクトルを返します。
|
staticnoexcept |
4次元ベクトルを相対的に低い精度で正規化します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
4次元ベクトルの長さの逆数を計算します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
4次元ベクトルの長さの逆数を相対的に低い精度で計算します。
[in] | vec | 4次元ベクトル |
|
staticnoexcept |
4次元の法線ベクトルによって4次元ベクトルを反射します。
[in] | vec | 反射される4次元ベクトル |
[in] | normal | 4次元法線ベクトル(単位ベクトル) |
|
staticnoexcept |
4次元ベクトルをメモリに書き込みます
MyVector4 | float 型のx, y, z, w という名前の公開データメンバを連続した領域に持つ構造体 |
[in,out] | p | 4次元ベクトルが格納されるポインタ |
[in] | vec | 4次元ベクトル |
MyVector4
は例えばDirectXのXMFLOAT4
, XMFLOAT4A
のようなクラスになります。
|
staticnoexcept |
行列により4次元ベクトルを変換します。
[in] | vec | 4次元ベクトル |
[in] | m | 変換行列 |
© 2013, 2014, 2015 Nintendo Co., Ltd. All rights reserved.