Newton Dynamics  4.00
ndVector Class Reference
Inheritance diagram for ndVector:
ndPlane ndQuaternion

Public Member Functions

 ndVector (ndFloat32 val)
 
 ndVector (const ndVector &v)
 
 ndVector (const float32x4_t type)
 
 ndVector (const ndFloat32 *const ptr)
 
 ndVector (const ndFloat32 *const baseAddr, const ndInt32 *const index)
 
 ndVector (const ndFloat64 *const ptr)
 
 ndVector (ndFloat32 x, ndFloat32 y, ndFloat32 z, ndFloat32 w)
 
 ndVector (ndInt32 ix, ndInt32 iy, ndInt32 iz, ndInt32 iw)
 
 ndVector (const ndBigVector &copy)
 
ndFloat32 GetScalar () const
 
void Store (ndFloat32 *const dst) const
 
ndVector BroadcastX () const
 
ndVector BroadcastY () const
 
ndVector BroadcastZ () const
 
ndVector BroadcastW () const
 
ndFloat32 & operator[] (ndInt32 i)
 
const ndFloat32 & operator[] (ndInt32 i) const
 
ndVector operator+ (const ndVector &A) const
 
ndVector operator- (const ndVector &A) const
 
ndVector operator* (const ndVector &A) const
 
ndVectoroperator+= (const ndVector &A)
 
ndVectoroperator-= (const ndVector &A)
 
ndVectoroperator*= (const ndVector &A)
 
ndVector MulAdd (const ndVector &A, const ndVector &B) const
 
ndVector MulSub (const ndVector &A, const ndVector &B) const
 
ndVector AddHorizontal () const
 
ndVector Scale (ndFloat32 scale) const
 
ndVector CrossProduct (const ndVector &B) const
 
ndVector CrossProduct (const ndVector &A, const ndVector &B) const
 
ndVector GetInt () const
 
ndVector TestZero () const
 
ndVector Floor () const
 
ndVector DotProduct (const ndVector &A) const
 
ndVector Reciproc () const
 
ndVector Sqrt () const
 
ndVector InvSqrt () const
 
ndVector InvMagSqrt () const
 
ndVector Normalize () const
 
ndVector Abs () const
 
ndVector GetMax () const
 
ndVector GetMax (const ndVector &data) const
 
ndVector GetMin (const ndVector &data) const
 
ndVector operator== (const ndVector &data) const
 
ndVector operator> (const ndVector &data) const
 
ndVector operator< (const ndVector &data) const
 
ndVector operator>= (const ndVector &data) const
 
ndVector operator<= (const ndVector &data) const
 
ndVector operator& (const ndVector &data) const
 
ndVector operator| (const ndVector &data) const
 
ndVector operator^ (const ndVector &data) const
 
ndVector AndNot (const ndVector &data) const
 
ndVector Select (const ndVector &data, const ndVector &mask) const
 
ndInt32 GetSignMask () const
 
ndVector ShiftRight () const
 
ndVector ShiftTripleRight () const
 
ndVector ShiftTripleLeft () const
 
ndVector ShiftRightLogical (ndInt32 bits) const
 
 ndVector (ndFloat32 val)
 
 ndVector (const ndVector &v)
 
 ndVector (const ndFloat32 *const ptr)
 
 ndVector (const ndFloat32 *const baseAddr, const ndInt32 *const index)
 
 ndVector (const ndFloat64 *const ptr)
 
 ndVector (ndFloat32 x, ndFloat32 y, ndFloat32 z, ndFloat32 w)
 
 ndVector (ndInt32 ix, ndInt32 iy, ndInt32 iz, ndInt32 iw)
 
 ndVector (const ndBigVector &copy)
 
ndFloat32 GetScalar () const
 
void Store (ndFloat32 *const dst) const
 
ndVector BroadcastX () const
 
ndVector BroadcastY () const
 
ndVector BroadcastZ () const
 
ndVector BroadcastW () const
 
ndFloat32 & operator[] (ndInt32 i)
 
const ndFloat32 & operator[] (ndInt32 i) const
 
ndVector operator+ (const ndVector &A) const
 
ndVector operator- (const ndVector &A) const
 
ndVector operator* (const ndVector &A) const
 
ndVectoroperator+= (const ndVector &A)
 
ndVectoroperator-= (const ndVector &A)
 
ndVectoroperator*= (const ndVector &A)
 
ndVector MulAdd (const ndVector &A, const ndVector &B) const
 
ndVector MulSub (const ndVector &A, const ndVector &B) const
 
ndVector AddHorizontal () const
 
ndVector Scale (ndFloat32 scale) const
 
ndVector CrossProduct (const ndVector &B) const
 
ndVector CrossProduct (const ndVector &A, const ndVector &B) const
 
ndVector GetInt () const
 
ndVector TestZero () const
 
ndVector Floor () const
 
ndVector DotProduct (const ndVector &A) const
 
ndVector Reciproc () const
 
ndVector Sqrt () const
 
ndVector InvSqrt () const
 
ndVector InvMagSqrt () const
 
ndVector Normalize () const
 
ndVector Abs () const
 
ndVector GetMax () const
 
ndVector GetMax (const ndVector &data) const
 
ndVector GetMin (const ndVector &data) const
 
ndVector operator== (const ndVector &data) const
 
ndVector operator> (const ndVector &data) const
 
ndVector operator< (const ndVector &data) const
 
ndVector operator>= (const ndVector &data) const
 
ndVector operator<= (const ndVector &data) const
 
ndVector operator& (const ndVector &data) const
 
ndVector operator| (const ndVector &data) const
 
ndVector operator^ (const ndVector &data) const
 
ndVector AndNot (const ndVector &data) const
 
ndVector Select (const ndVector &data, const ndVector &mask) const
 
ndInt32 GetSignMask () const
 
ndVector ShiftRight () const
 
ndVector ShiftTripleRight () const
 
ndVector ShiftTripleLeft () const
 
ndVector ShiftRightLogical (ndInt32 bits) const
 
 ndVector (const __m128i type)
 
 ndVector (const __m128 type)
 
 ndVector (const ndFloat32 a)
 
 ndVector (const ndFloat32 *const ptr)
 
 ndVector (const ndFloat32 *const baseAddr, const ndInt32 *const index)
 
 ndVector (const ndFloat64 *const ptr)
 
 ndVector (const ndVector &copy)
 
 ndVector (const ndBigVector &copy)
 
 ndVector (ndFloat32 x, ndFloat32 y, ndFloat32 z, ndFloat32 w)
 
 ndVector (ndInt32 ix, ndInt32 iy, ndInt32 iz, ndInt32 iw)
 
ndFloat32 GetX () const
 
ndFloat32 GetY () const
 
ndFloat32 GetZ () const
 
ndFloat32 GetW () const
 
void SetX (ndFloat32 x)
 
void SetY (ndFloat32 x)
 
void SetZ (ndFloat32 x)
 
void SetW (ndFloat32 x)
 
ndFloat32 GetScalar () const
 
void Store (ndFloat32 *const dst) const
 
ndVector BroadcastX () const
 
ndVector BroadcastY () const
 
ndVector BroadcastZ () const
 
ndVector BroadcastW () const
 
ndVector Scale (ndFloat32 s) const
 
ndFloat32 & operator[] (ndInt32 i)
 
const ndFloat32 & operator[] (ndInt32 i) const
 
ndVector operator+ (const ndVector &A) const
 
ndVector operator- (const ndVector &A) const
 
ndVector operator* (const ndVector &A) const
 
ndVectoroperator+= (const ndVector &A)
 
ndVectoroperator-= (const ndVector &A)
 
ndVectoroperator*= (const ndVector &A)
 
ndVector DotProduct (const ndVector &A) const
 
ndVector CrossProduct (const ndVector &B) const
 
ndVector CrossProduct (const ndVector &A, const ndVector &B) const
 
ndVector Reciproc () const
 
ndVector MulAdd (const ndVector &A, const ndVector &B) const
 
ndVector MulSub (const ndVector &A, const ndVector &B) const
 
ndVector AddHorizontal () const
 
ndVector Abs () const
 
ndVector GetMax () const
 
ndVector GetMax (const ndVector &data) const
 
ndVector GetMin (const ndVector &data) const
 
ndVector GetInt () const
 
ndVector TestZero () const
 
ndVector Floor () const
 
ndVector Sqrt () const
 
ndVector InvSqrt () const
 
ndVector InvMagSqrt () const
 
ndVector Normalize () const
 
ndVector operator> (const ndVector &data) const
 
ndVector operator== (const ndVector &data) const
 
ndVector operator< (const ndVector &data) const
 
ndVector operator>= (const ndVector &data) const
 
ndVector operator<= (const ndVector &data) const
 
ndVector operator& (const ndVector &data) const
 
ndVector operator| (const ndVector &data) const
 
ndVector operator^ (const ndVector &data) const
 
ndVector AndNot (const ndVector &data) const
 
ndVector Select (const ndVector &data, const ndVector &mask) const
 
ndInt32 GetSignMask () const
 
ndVector ShiftRight () const
 
ndVector ShiftTripleRight () const
 
ndVector ShiftTripleLeft () const
 
ndVector ShiftRightLogical (ndInt32 bits) const
 
void Trace (char *const) const
 

Static Public Member Functions

static void Transpose4x4 (ndVector &dst0, ndVector &dst1, ndVector &dst2, ndVector &dst3, const ndVector &src0, const ndVector &src1, const ndVector &src2, const ndVector &src3)
 
static void Transpose4x4 (ndVector &dst0, ndVector &dst1, ndVector &dst2, ndVector &dst3, const ndVector &src0, const ndVector &src1, const ndVector &src2, const ndVector &src3)
 
static void Transpose4x4 (ndVector &dst0, ndVector &dst1, ndVector &dst2, ndVector &dst3, const ndVector &src0, const ndVector &src1, const ndVector &src2, const ndVector &src3)
 

Public Attributes

union {
   ndFloat32   m_f [4]
 
   ndInt32   m_i [4]
 
   float32x4_t   m_type
 
   uint32x4_t   m_typeInt
 
   struct {
      ndFloat32   m_x
 
      ndFloat32   m_y
 
      ndFloat32   m_z
 
      ndFloat32   m_w
 
   } 
 
   struct {
      ndInt32   m_ix
 
      ndInt32   m_iy
 
      ndInt32   m_iz
 
      ndInt32   m_iw
 
   } 
 
   __m128   m_type
 
   __m128i   m_typeInt
 
}; 
 

Static Public Attributes

static D_CORE_API ndVector m_zero
 
static D_CORE_API ndVector m_one
 
static D_CORE_API ndVector m_wOne
 
static D_CORE_API ndVector m_half
 
static D_CORE_API ndVector m_two
 
static D_CORE_API ndVector m_three
 
static D_CORE_API ndVector m_negOne
 
static D_CORE_API ndVector m_xMask
 
static D_CORE_API ndVector m_yMask
 
static D_CORE_API ndVector m_zMask
 
static D_CORE_API ndVector m_wMask
 
static D_CORE_API ndVector m_xyzwMask
 
static D_CORE_API ndVector m_epsilon
 
static D_CORE_API ndVector m_signMask
 
static D_CORE_API ndVector m_triplexMask