Vector4

Fields

double

_x

double

_y

double

_z

double

_w

const Vector4

ZERO

const Vector4

UNIT

const Vector4

XAXIS

const Vector4

YAXIS

const Vector4

ZAXIS

const Vector4

UNDEFINED

Functions

CID

GetClassID

void *

As

const void *

As

class T_As

As

class T_As

As

Vector4

Vector4

Vector4

Vector4

Vector4

Vector4

Vector4

~Vector4

double

operator[]

double &

operator[]

Vector4

operator+

Vector4

operator-

Vector4

operator-

void

operator+=

void

operator-=

Vector4

operator*

Vector4

operator*

void

operator*=

void

operator*=

Vector4

operator/

Vector4

operator/

void

operator/=

void

operator/=

bool

operator==

bool

operator!=

bool

operator

double

GetLength3

double

GetLength4

double

Normalize3

double

Normalize4

double

Dot3

double

Dot3_Sat

double

Dot4

double

Dot4_Sat

Vector4

Cross3

void

Set

double

X

double

Y

double

Z

double

W

Detailed Description

class Vector4 : public RED::Object

4D vector used for homogeneous geometrical operations.

@related class RED::Vector3, class RED::Matrix

Public Functions

virtual void *As(const RED::CID &iCID)

Converts the object to an instance of the given type.

Parameters

iCID – Requested class.

Returns

An object pointer of the given class on success, NULL otherwise.

virtual const void *As(const RED::CID &iCID) const

Converts the object to an instance of the given type.

Parameters

iCID – Requested class.

Returns

An object pointer of the given class on success, NULL otherwise.

template<class T_As>
inline T_As *As()
template<class T_As>
inline const T_As *As() const
Vector4()

Default constructor.

Constructs a zero vector.

Vector4(double iX, double iY, double iZ, double iW)

Direct assignment construction.

Parameters
  • iX – X dimension of the vector.

  • iY – Y dimension of the vector.

  • iZ – Z dimension of the vector.

  • iW – W dimension of the vector.

Vector4(double iV)

Direct assignment construction.

Parameters

iV – Value, replicated on the 4 members of the vector.

Vector4(const RED::Color &iSource)

Constructor by copy from a RED::Color.

Parameters

iSourceColor to put into ‘this’.

Vector4(const RED::Vector3 &iSource)

Construction from a non homogeneous vector.

The fourth vector component receive 1.0f.

Parameters

iSource – Three components vector.

Vector4(const float data[4])

construction for a four floats array.

Parameters

data – array containing the four floating-point vector values.

Vector4(const double data[4])

construction for a four double array.

Parameters

data – array containing the four double precision floating-point vector values.

virtual ~Vector4()

Destructor.

inline double operator[](unsigned int iIndex) const

Gets the n-th component of a vector.

Returns

The n-th component of the vector.

inline double &operator[](unsigned int iIndex)

Gets the n-th component of a vector in read-write mode.

Returns

A reference to the n-th component of the vector.

inline RED::Vector4 operator+(const RED::Vector4 &iSource) const

Addition operation.

Builds a new vector by the addition of two others.

Returns

the sum of the two input vectors.

inline RED::Vector4 operator-(const RED::Vector4 &iRight) const

Subtraction operation.

Builds a new vector by the subtraction of two others.

Parameters

iRight – Right operand of the subtraction

Returns

the subtraction of the two input vectors.

inline RED::Vector4 operator-() const

Returns the opposite of the vector.

Returns

-‘this’

inline void operator+=(const RED::Vector4 &iSource)

Increment operation.

Adds the iSource vector to ‘this’.

Parameters

iSource – Added term.

inline void operator-=(const RED::Vector4 &iSource)

Decrement operation.

Subtracts the iSource vector to ‘this’.

Parameters

iSource – Subtracted term.

inline RED::Vector4 operator*(double iScalar) const

Multiplies the components of a vector with a scalar.

Parameters

iScalar – Number to multiply the vector with.

Returns

The product of the vector with the scalar.

inline RED::Vector4 operator*(const RED::Vector4 &iRight) const

Multiplication of members of two vectors.

Builds a new vector whose members are the component wise products of ‘this’ with iRight.

Parameters

iRightVector to multiply to this.

Returns

The product of the two vectors.

inline void operator*=(double iScalar)

Multiplies the components of the vector with a scalar.

Parameters

iScalar – Number to multiply the vector with.

inline void operator*=(const RED::Vector4 &iRight)

Multiplication of members of two vectors.

Store in ‘this’ the result of the component wise product of ‘this’ with iRight.

Parameters

iRightVector to multiply to this.

inline RED::Vector4 operator/(double iScalar) const

Divides the components of a vector by a scalar.

Parameters

iScalar – Number to divide the vector by.

Returns

The division of the vector by the scalar.

inline RED::Vector4 operator/(const RED::Vector4 &iRight) const

Division of members of two vectors.

Builds a new vector whose members are the component wise division of ‘this’ with iRight.

Parameters

iRightVector to divide from this.

Returns

The division of the two vectors.

inline void operator/=(double iScalar)

Divides the components of the vector by a scalar.

Parameters

iScalar – Number to divide the vector by.

inline void operator/=(const RED::Vector4 &iRight)

Division of members of two vectors.

Store in ‘this’ the result of the component wise division of ‘this’ by iRight.

Parameters

iRightVector to divide from this.

inline bool operator==(const RED::Vector4 &iOther) const

Returns the result of an equality test between two vectors.

Parameters

iOther – Reference to the vector to test with.

Returns

true if the two vectors are identical, false otherwise.

inline bool operator!=(const RED::Vector4 &iOther) const

Returns the result of a difference test between two vectors.

Parameters

iOther – Reference to the vector to test with.

Returns

true if the two vectors are different, false otherwise.

inline bool operator<(const RED::Vector4 &iOther) const

Returns true if this is lower than iOther, component wise.

Parameters

iOther – Reference to the vector to test with.

Returns

true if this is lower than iOther, false otherwise.

inline double GetLength3() const

Gets the 3 dimensions length of the vector.

Returns

sqrtf(x*x + y*y + z*z).

inline double GetLength4() const

Gets the 4 dimensions length of the vector.

Returns

sqrtf(x*x + y*y + z*z + w*w).

inline double Normalize3()

Normalizes the vector in 3 dimensions.

Calculates the 3 dimensions length of the vector (x*x + y*y + z*z) and divides the 3 dimensions components by this length. The homogeneous term is not modified by the operation.

Returns

The length of the vector before normalization.

inline double Normalize4()

Normalizes the vector in 4 dimensions.

Calculates the 4 dimensions length of the vector (x*x + y*y + z*z + w*w) and divides the 4 dimensions components by this length.

Returns

The length of the vector before normalization.

inline double Dot3(const RED::Vector4 &iV) const

3 dimensions dot product of two vectors.

Parameters

iV – Right operand of the dot product.

Returns

The dot product of the two vectors.

inline double Dot3_Sat(const RED::Vector4 &iV) const

3 dimensions dot product of two vectors, saturated.

The result is clamped to [0,1].

Parameters

iV – Right operand of the dot product.

Returns

The dot product of the two vectors.

inline double Dot4(const RED::Vector4 &iV) const

Homogeneous dot product of two vectors.

Parameters

iV – Right operand of the dot product.

Returns

The dot product of the two vectors.

inline double Dot4_Sat(const RED::Vector4 &iV) const

Homogeneous dot product of two vectors.

The result is clamped to [0,1].

Parameters

iV – Right operand of the dot product.

Returns

The dot product of the two vectors.

inline RED::Vector4 Cross3(const RED::Vector4 &iV) const

Cross product of 2 vectors in 3 dimensions.

Parameters

iV – Cross product right operand.

Returns

The cross product of this with iV.

inline void Set(double iX, double iY, double iZ, double iW)

Sets the four component of a vector.

Parameters
  • iX – First component.

  • iY – Second component.

  • iZ – Third component.

  • iW – Fourth component.

inline double X() const
Returns

The X dimension of the vector.

inline double Y() const
Returns

The Y dimension of the vector.

inline double Z() const
Returns

The Z dimension of the vector.

inline double W() const
Returns

The W dimension of the vector.

Public Members

double _x

X dimension of the vector.

double _y

Y dimension of the vector.

double _z

Z dimension of the vector.

double _w

W dimension of the vector.

Public Static Functions

static inline RED::CID GetClassID()

Public Static Attributes

static const RED::Vector4 ZERO

Zero vector.

static const RED::Vector4 UNIT

Unit vector.

static const RED::Vector4 XAXIS

( 1, 0, 0, 1 ) vector.

static const RED::Vector4 YAXIS

( 0, 1, 0, 1 ) vector.

static const RED::Vector4 ZAXIS

( 0, 0, 1, 1 ) vector.

static const RED::Vector4 UNDEFINED

( FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX ) vector.