24 for (
uint r = 0; r < Rows; ++r)
31 template <
class OtherVector>
34 for (
uint r = 0; r < inNumRows; ++r)
35 mF32[inDestRow + r] = inV[inSourceRow + r];
39 inline float operator [] (
uint inCoordinate)
const
42 return mF32[inCoordinate];
45 inline float & operator [] (
uint inCoordinate)
48 return mF32[inCoordinate];
52 inline bool operator == (
const Vector &inV2)
const
54 for (
uint r = 0; r < Rows; ++r)
55 if (mF32[r] != inV2.
mF32[r])
60 inline bool operator != (
const Vector &inV2)
const
62 for (
uint r = 0; r < Rows; ++r)
63 if (mF32[r] != inV2.
mF32[r])
71 for (
uint r = 0; r < Rows; ++r)
78 inline bool IsNearZero(
float inMaxDistSq = 1.0e-12f)
const
80 return LengthSq() <= inMaxDistSq;
84 inline bool IsClose(
const Vector &inV2,
float inMaxDistSq = 1.0e-12f)
const
86 return (inV2 - *
this).LengthSq() <= inMaxDistSq;
96 for (
uint r = 0; r < Rows; ++r)
97 v.
mF32[r] = mF32[r] * inV2;
101 inline Vector & operator *= (
const float inV2)
103 for (
uint r = 0; r < Rows; ++r)
115 inline Vector operator / (
float inV2)
const
118 for (
uint r = 0; r < Rows; ++r)
119 v.
mF32[r] = mF32[r] / inV2;
125 for (
uint r = 0; r < Rows; ++r)
134 for (
uint r = 0; r < Rows; ++r)
141 for (
uint r = 0; r < Rows; ++r)
142 mF32[r] += inV2.
mF32[r];
150 for (
uint r = 0; r < Rows; ++r)
151 v.
mF32[r] = -mF32[r];
159 for (
uint r = 0; r < Rows; ++r)
166 for (
uint r = 0; r < Rows; ++r)
167 mF32[r] -= inV2.
mF32[r];
175 for (
uint r = 0; r < Rows; ++r)
176 dot += mF32[r] * inV2.
mF32[r];
189 return Sqrt(LengthSq());
195 return abs(LengthSq() - 1.0f) <= inToleranceSq;
201 return *
this / Length();
205 friend ostream & operator << (ostream &inStream,
const Vector &inV)
208 for (
uint i = 0; i < Rows - 1; ++i)
209 inStream << inV.
mF32[i] <<
", ";
210 inStream << inV.
mF32[Rows - 1] <<
"]";
unsigned int uint
Definition Core.h:509
#define JPH_NAMESPACE_END
Definition Core.h:433
#define JPH_NAMESPACE_BEGIN
Definition Core.h:427
DVec3 operator*(double inV1, DVec3Arg inV2)
Definition DVec3.inl:623
#define JPH_ASSERT(...)
Definition IssueReporting.h:33
JPH_INLINE float Sqrt(float inV)
Take the square root of a float value.
Definition Math.h:76
Templatized vector class.
Definition Vector.h:12
void SetZero()
Vector with all zeros.
Definition Vector.h:22
Vector Normalized() const
Normalize vector.
Definition Vector.h:199
bool IsNormalized(float inToleranceSq=1.0e-6f)
Check if vector is normalized.
Definition Vector.h:193
bool IsClose(const Vector &inV2, float inMaxDistSq=1.0e-12f) const
Test if two vectors are close to each other.
Definition Vector.h:84
float Length() const
Length of vector.
Definition Vector.h:187
uint GetRows() const
Dimensions.
Definition Vector.h:19
float mF32[Rows]
Definition Vector.h:214
bool IsNearZero(float inMaxDistSq=1.0e-12f) const
Test if vector is near zero.
Definition Vector.h:78
Vector(const Vector &)=default
bool IsZero() const
Test if vector consists of all zeros.
Definition Vector.h:69
void CopyPart(const OtherVector &inV, uint inSourceRow, uint inNumRows, uint inDestRow)
Copy a (part) of another vector into this vector.
Definition Vector.h:32
Vector()=default
Constructor.
float Dot(const Vector &inV2) const
Dot product.
Definition Vector.h:172
static Vector sZero()
Definition Vector.h:28
float LengthSq() const
Squared length of vector.
Definition Vector.h:181