![]() |
Jolt Physics
A multi core friendly Game Physics Engine
|
#include <Vec4.h>
Public Types | |
using | Type = { float mData[4] |
Public Member Functions | |
Vec4 ()=default | |
Constructor. More... | |
Vec4 (const Vec4 &inRHS)=default | |
Vec4 & | operator= (const Vec4 &inRHS)=default |
JPH_INLINE | Vec4 (Vec3Arg inRHS) |
WARNING: W component undefined! More... | |
JPH_INLINE | Vec4 (Vec3Arg inRHS, float inW) |
JPH_INLINE | Vec4 (Type inRHS) |
JPH_INLINE | Vec4 (float inX, float inY, float inZ, float inW) |
Create a vector from 4 components. More... | |
JPH_INLINE float | GetX () const |
Get individual components. More... | |
JPH_INLINE float | GetY () const |
JPH_INLINE float | GetZ () const |
JPH_INLINE float | GetW () const |
JPH_INLINE void | SetX (float inX) |
Set individual components. More... | |
JPH_INLINE void | SetY (float inY) |
JPH_INLINE void | SetZ (float inZ) |
JPH_INLINE void | SetW (float inW) |
JPH_INLINE void | Set (float inX, float inY, float inZ, float inW) |
Set all components. More... | |
JPH_INLINE float | operator[] (uint inCoordinate) const |
Get float component by index. More... | |
JPH_INLINE float & | operator[] (uint inCoordinate) |
JPH_INLINE bool | operator== (Vec4Arg inV2) const |
Comparison. More... | |
JPH_INLINE bool | operator!= (Vec4Arg inV2) const |
JPH_INLINE bool | IsClose (Vec4Arg inV2, float inMaxDistSq=1.0e-12f) const |
Test if two vectors are close. More... | |
JPH_INLINE bool | IsNormalized (float inTolerance=1.0e-6f) const |
Test if vector is normalized. More... | |
JPH_INLINE bool | IsNaN () const |
Test if vector contains NaN elements. More... | |
JPH_INLINE Vec4 | operator* (Vec4Arg inV2) const |
Multiply two float vectors (component wise) More... | |
JPH_INLINE Vec4 | operator* (float inV2) const |
Multiply vector with float. More... | |
JPH_INLINE Vec4 | operator/ (float inV2) const |
Divide vector by float. More... | |
JPH_INLINE Vec4 & | operator*= (float inV2) |
Multiply vector with float. More... | |
JPH_INLINE Vec4 & | operator*= (Vec4Arg inV2) |
Multiply vector with vector. More... | |
JPH_INLINE Vec4 & | operator/= (float inV2) |
Divide vector by float. More... | |
JPH_INLINE Vec4 | operator+ (Vec4Arg inV2) const |
Add two float vectors (component wise) More... | |
JPH_INLINE Vec4 & | operator+= (Vec4Arg inV2) |
Add two float vectors (component wise) More... | |
JPH_INLINE Vec4 | operator- () const |
Negate. More... | |
JPH_INLINE Vec4 | operator- (Vec4Arg inV2) const |
Subtract two float vectors (component wise) More... | |
JPH_INLINE Vec4 & | operator-= (Vec4Arg inV2) |
Add two float vectors (component wise) More... | |
JPH_INLINE Vec4 | operator/ (Vec4Arg inV2) const |
Divide (component wise) More... | |
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW> | |
JPH_INLINE Vec4 | Swizzle () const |
Swizzle the elements in inV. More... | |
JPH_INLINE Vec4 | SplatX () const |
Replicate the X component to all components. More... | |
JPH_INLINE Vec4 | SplatY () const |
Replicate the Y component to all components. More... | |
JPH_INLINE Vec4 | SplatZ () const |
Replicate the Z component to all components. More... | |
JPH_INLINE Vec4 | SplatW () const |
Replicate the W component to all components. More... | |
JPH_INLINE Vec4 | Abs () const |
Return the absolute value of each of the components. More... | |
JPH_INLINE Vec4 | Reciprocal () const |
Reciprocal vector (1 / value) for each of the components. More... | |
JPH_INLINE Vec4 | DotV (Vec4Arg inV2) const |
Dot product, returns the dot product in X, Y and Z components. More... | |
JPH_INLINE float | Dot (Vec4Arg inV2) const |
Dot product. More... | |
JPH_INLINE float | LengthSq () const |
Squared length of vector. More... | |
JPH_INLINE float | Length () const |
Length of vector. More... | |
JPH_INLINE Vec4 | Normalized () const |
Normalize vector. More... | |
JPH_INLINE void | StoreFloat4 (Float4 *outV) const |
Store 4 floats to memory. More... | |
JPH_INLINE UVec4 | ToInt () const |
Convert each component from a float to an int. More... | |
JPH_INLINE UVec4 | ReinterpretAsInt () const |
Reinterpret Vec4 as a UVec4 (doesn't change the bits) More... | |
JPH_INLINE int | GetSignBits () const |
Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3. More... | |
JPH_INLINE float | ReduceMin () const |
Get the minimum of X, Y, Z and W. More... | |
JPH_INLINE float | ReduceMax () const |
Get the maximum of X, Y, Z and W. More... | |
JPH_INLINE Vec4 | Sqrt () const |
Component wise square root. More... | |
JPH_INLINE Vec4 | GetSign () const |
Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative) More... | |
void | SinCos (Vec4 &outSin, Vec4 &outCos) const |
Calculate the sine and cosine for each element of this vector (input in radians) More... | |
Vec4 | Tan () const |
Calculate the tangent for each element of this vector (input in radians) More... | |
Vec4 | ASin () const |
Vec4 | ACos () const |
Vec4 | ATan () const |
Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2, PI / 2]) More... | |
template<uint32 SwizzleX, uint32 SwizzleY, uint32 SwizzleZ, uint32 SwizzleW> | |
Vec4 | Swizzle () const |
template<const int Scale> | |
Vec4 | sGatherFloat4 (const float *inBase, UVec4Arg inOffsets) |
Static Public Member Functions | |
static JPH_INLINE Vec4 | sZero () |
Vector with all zeros. More... | |
static JPH_INLINE Vec4 | sNaN () |
Vector with all NaN's. More... | |
static JPH_INLINE Vec4 | sReplicate (float inV) |
Replicate inV across all components. More... | |
static JPH_INLINE Vec4 | sLoadFloat4 (const Float4 *inV) |
Load 4 floats from memory. More... | |
static JPH_INLINE Vec4 | sLoadFloat4Aligned (const Float4 *inV) |
Load 4 floats from memory, 16 bytes aligned. More... | |
template<const int Scale> | |
static JPH_INLINE Vec4 | sGatherFloat4 (const float *inBase, UVec4Arg inOffsets) |
Gather 4 floats from memory at inBase + inOffsets[i] * Scale. More... | |
static JPH_INLINE Vec4 | sMin (Vec4Arg inV1, Vec4Arg inV2) |
Return the minimum value of each of the components. More... | |
static JPH_INLINE Vec4 | sMax (Vec4Arg inV1, Vec4Arg inV2) |
Return the maximum of each of the components. More... | |
static JPH_INLINE UVec4 | sEquals (Vec4Arg inV1, Vec4Arg inV2) |
Equals (component wise) More... | |
static JPH_INLINE UVec4 | sLess (Vec4Arg inV1, Vec4Arg inV2) |
Less than (component wise) More... | |
static JPH_INLINE UVec4 | sLessOrEqual (Vec4Arg inV1, Vec4Arg inV2) |
Less than or equal (component wise) More... | |
static JPH_INLINE UVec4 | sGreater (Vec4Arg inV1, Vec4Arg inV2) |
Greater than (component wise) More... | |
static JPH_INLINE UVec4 | sGreaterOrEqual (Vec4Arg inV1, Vec4Arg inV2) |
Greater than or equal (component wise) More... | |
static JPH_INLINE Vec4 | sFusedMultiplyAdd (Vec4Arg inMul1, Vec4Arg inMul2, Vec4Arg inAdd) |
Calculates inMul1 * inMul2 + inAdd. More... | |
static JPH_INLINE Vec4 | sSelect (Vec4Arg inV1, Vec4Arg inV2, UVec4Arg inControl) |
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1. More... | |
static JPH_INLINE Vec4 | sOr (Vec4Arg inV1, Vec4Arg inV2) |
Logical or (component wise) More... | |
static JPH_INLINE Vec4 | sXor (Vec4Arg inV1, Vec4Arg inV2) |
Logical xor (component wise) More... | |
static JPH_INLINE Vec4 | sAnd (Vec4Arg inV1, Vec4Arg inV2) |
Logical and (component wise) More... | |
static JPH_INLINE void | sSort4 (Vec4 &ioValue, UVec4 &ioIndex) |
static JPH_INLINE void | sSort4Reverse (Vec4 &ioValue, UVec4 &ioIndex) |
static Vec4 | sATan2 (Vec4Arg inY, Vec4Arg inX) |
Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI]) More... | |
Public Attributes | |
union { | |
Type mValue | |
float mF32 [4] | |
}; | |
Friends | |
JPH_INLINE Vec4 | operator* (float inV1, Vec4Arg inV2) |
Multiply vector with float. More... | |
ostream & | operator<< (ostream &inStream, Vec4Arg inV) |
To String. More... | |
using Vec4::Type = { float mData[4] |
|
default |
Constructor.
Intentionally not initialized for performance reasons
|
default |
|
explicit |
WARNING: W component undefined!
Vec4::Vec4 | ( | Vec3Arg | inRHS, |
float | inW | ||
) |
|
inline |
Vec4::Vec4 | ( | float | inX, |
float | inY, | ||
float | inZ, | ||
float | inW | ||
) |
Create a vector from 4 components.
Vec4 Vec4::Abs | ( | ) | const |
Return the absolute value of each of the components.
|
inline |
Calculate the arc cosine for each element of this vector (returns value in the range [0, PI]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::acos
|
inline |
Calculate the arc sine for each element of this vector (returns value in the range [-PI / 2, PI / 2]) Note that all input values will be clamped to the range [-1, 1] and this function will not return NaNs like std::asin
|
inline |
Calculate the arc tangent for each element of this vector (returns value in the range [-PI / 2, PI / 2])
float Vec4::Dot | ( | Vec4Arg | inV2 | ) | const |
Dot product.
Dot product, returns the dot product in X, Y and Z components.
Vec4 Vec4::GetSign | ( | ) | const |
Get vector that contains the sign of each element (returns 1.0f if positive, -1.0f if negative)
int Vec4::GetSignBits | ( | ) | const |
Store if X is negative in bit 0, Y in bit 1, Z in bit 2 and W in bit 3.
|
inline |
|
inline |
Get individual components.
|
inline |
|
inline |
bool Vec4::IsClose | ( | Vec4Arg | inV2, |
float | inMaxDistSq = 1.0e-12f |
||
) | const |
Test if two vectors are close.
bool Vec4::IsNaN | ( | ) | const |
Test if vector contains NaN elements.
bool Vec4::IsNormalized | ( | float | inTolerance = 1.0e-6f | ) | const |
Test if vector is normalized.
float Vec4::Length | ( | ) | const |
Length of vector.
float Vec4::LengthSq | ( | ) | const |
Squared length of vector.
Vec4 Vec4::Normalized | ( | ) | const |
Normalize vector.
|
inline |
Vec4 Vec4::operator* | ( | float | inV2 | ) | const |
Multiply vector with float.
Vec4 & Vec4::operator*= | ( | float | inV2 | ) |
Multiply vector with float.
Vec4 Vec4::operator- | ( | ) | const |
Negate.
Vec4 Vec4::operator/ | ( | float | inV2 | ) | const |
Divide vector by float.
Vec4 & Vec4::operator/= | ( | float | inV2 | ) |
Divide vector by float.
bool Vec4::operator== | ( | Vec4Arg | inV2 | ) | const |
Comparison.
|
inline |
|
inline |
Get float component by index.
Vec4 Vec4::Reciprocal | ( | ) | const |
Reciprocal vector (1 / value) for each of the components.
float Vec4::ReduceMax | ( | ) | const |
Get the maximum of X, Y, Z and W.
float Vec4::ReduceMin | ( | ) | const |
Get the minimum of X, Y, Z and W.
Calculate the arc tangent of y / x using the signs of the arguments to determine the correct quadrant (returns value in the range [-PI, PI])
|
inline |
Set all components.
|
inline |
|
inline |
Set individual components.
|
inline |
|
inline |
Calculates inMul1 * inMul2 + inAdd.
|
static |
Gather 4 floats from memory at inBase + inOffsets[i] * Scale.
Greater than or equal (component wise)
Calculate the sine and cosine for each element of this vector (input in radians)
Load 4 floats from memory, 16 bytes aligned.
Return the minimum value of each of the components.
Vec4 Vec4::SplatW | ( | ) | const |
Replicate the W component to all components.
Vec4 Vec4::SplatX | ( | ) | const |
Replicate the X component to all components.
Vec4 Vec4::SplatY | ( | ) | const |
Replicate the Y component to all components.
Vec4 Vec4::SplatZ | ( | ) | const |
Replicate the Z component to all components.
Vec4 Vec4::Sqrt | ( | ) | const |
Component wise square root.
|
static |
Replicate inV across all components.
Component wise select, returns inV1 when highest bit of inControl = 0 and inV2 when highest bit of inControl = 1.
Sort the four elements of ioValue and sort ioIndex at the same time. Based on a sorting network: http://en.wikipedia.org/wiki/Sorting_network
Reverse sort the four elements of ioValue (highest first) and sort ioIndex at the same time. Based on a sorting network: http://en.wikipedia.org/wiki/Sorting_network
void Vec4::StoreFloat4 | ( | Float4 * | outV | ) | const |
Store 4 floats to memory.
JPH_INLINE Vec4 Vec4::Swizzle | ( | ) | const |
Swizzle the elements in inV.
Vec4 Vec4::Swizzle | ( | ) | const |
|
inline |
Calculate the tangent for each element of this vector (input in radians)
UVec4 Vec4::ToInt | ( | ) | const |
Convert each component from a float to an int.
|
friend |
To String.
union { ... } Vec4::@19 |
float Vec4::mF32[4] |
Type Vec4::mValue |