3 #include "ParaVector3.h" 24 inline Vector4(
const float fX,
const float fY,
const float fZ,
const float fW )
25 : x( fX ), y( fY ), z( fZ ), w( fW)
29 inline explicit Vector4(
const float afCoordinate[4] )
30 : x( afCoordinate[0] ),
37 inline explicit Vector4(
const int afCoordinate[4] )
39 x = (float)afCoordinate[0];
40 y = (float)afCoordinate[1];
41 z = (float)afCoordinate[2];
42 w = (float)afCoordinate[3];
45 inline explicit Vector4(
float*
const r )
46 : x( r[0] ), y( r[1] ), z( r[2] ), w( r[3] )
50 inline explicit Vector4(
const float scaler )
59 : x(rhs.x), y(rhs.y), z(rhs.z), w(w_)
65 operator=(reinterpret_cast<const Vector4&>(r));
69 inline float operator [] (
const size_t i )
const 76 inline float& operator [] (
const size_t i )
89 inline const float*
ptr()
const 117 inline bool operator == (
const Vector4& rkVector )
const 119 return ( x == rkVector.x &&
125 inline bool operator != (
const Vector4& rkVector )
const 127 return ( x != rkVector.x ||
161 inline Vector4 operator * (
const float fScalar )
const 181 inline Vector4 operator / (
const float fScalar )
const 183 assert( fScalar != 0.0f );
185 float fInv = 1.0f / fScalar;
203 inline const Vector4& operator + ()
const 208 inline Vector4 operator - ()
const 210 return Vector4(-x, -y, -z, -w);
213 inline friend Vector4 operator * (
const float fScalar,
const Vector4& rkVector )
216 fScalar * rkVector.x,
217 fScalar * rkVector.y,
218 fScalar * rkVector.z,
219 fScalar * rkVector.w);
222 inline friend Vector4 operator / (
const float fScalar,
const Vector4& rkVector )
225 fScalar / rkVector.x,
226 fScalar / rkVector.y,
227 fScalar / rkVector.z,
228 fScalar / rkVector.w);
231 inline friend Vector4 operator + (
const Vector4& lhs,
const float rhs)
240 inline friend Vector4 operator + (
const float lhs,
const Vector4& rhs)
258 inline friend Vector4 operator - (
const float lhs,
const Vector4& rhs)
288 inline Vector4& operator *= (
const float fScalar )
297 inline Vector4& operator += (
const float fScalar )
306 inline Vector4& operator -= (
const float fScalar )
325 inline Vector4& operator /= (
const float fScalar )
327 assert( fScalar != 0.0f );
329 float fInv = 1.0f / fScalar;
349 inline operator Vector3()
const;
360 return x * vec.x + y * vec.y + z * vec.z + w * vec.w;
371 inline friend std::ostream&
operator <<
374 o <<
"Vector4(" << v.x <<
", " << v.y <<
", " << v.z <<
", " << v.w <<
")";
float dotProduct(const Vector4 &vec) const
Calculates the dot (scalar) product of this vector with another.
Definition: ParaVector4.h:358
float * ptr()
Pointer accessor for direct copying.
Definition: ParaVector4.h:84
4-dimensional homogeneous vector.
Definition: ParaVector4.h:10
const float * ptr() const
Pointer accessor for direct copying.
Definition: ParaVector4.h:89
different physics engine has different winding order.
Definition: EventBinding.h:32
Vector4 transformAffine(const Matrix4 &M) const
row vector: 4-D Vector transformation specially for affine matrix.
Definition: ParaVector4.inl:10
Standard 3-dimensional vector.
Definition: ParaVector3.h:16
Class encapsulating a standard 4x4 homogeneous matrix.
Definition: ParaMatrix4.h:23
Vector4 & operator=(const Vector4 &rkVector)
Assigns the value of the other vector.
Definition: ParaVector4.h:98
Definition: PEtypes.h:306