XVector4#

template<typename T>
class XVector4#

Template class representing a 4-dimensional vector with x, y, z, and w components.

A template-based 4D vector class that provides basic vector operations including arithmetic operations, comparisons, and type conversions. This class is commonly used for homogeneous coordinates in 3D graphics and mathematical computations.

Note

This class includes validation macros in debug builds to ensure finite values

Template Parameters:

T – The numeric type for vector components (typically float or double)

Public Types

typedef T value_type#

Type alias for the template parameter T.

Public Functions

inline XVector4()#

Default constructor initializes all components to zero.

inline XVector4(T a)#

Constructor that initializes all components to the same value.

Parameters:

a[in] Value to assign to all components

inline XVector4(const T *p)#

Constructor that initializes components from an array.

Parameters:

p[in] Pointer to array of at least 4 elements

inline XVector4(T x_, T y_, T z_, T w_ = 1.0f)#

Constructor that initializes components with specific values.

Parameters:
  • x_[in] X component value

  • y_[in] Y component value

  • z_[in] Z component value

  • w_[in] W component value (defaults to 1.0f)

inline XVector4(const Vec3 &v, float w)#

Constructor that creates a 4D vector from a 3D vector and w component.

Parameters:
  • v[in] 3D vector for x, y, z components

  • w[in] W component value

inline operator T*()#

Conversion operator to non-const pointer to components.

Returns:

Pointer to the first component (x)

inline operator const T*() const#

Conversion operator to const pointer to components.

Returns:

Const pointer to the first component (x)

inline void Set(T x_, T y_, T z_, T w_)#

Sets all four components of the vector.

Parameters:
  • x_[in] New x component value

  • y_[in] New y component value

  • z_[in] New z component value

  • w_[in] New w component value

inline XVector4<T> operator*(T scale) const#

Scalar multiplication operator.

Parameters:

scale[in] Scalar value to multiply with

Returns:

New vector with each component multiplied by scale

inline XVector4<T> operator/(T scale) const#

Scalar division operator.

Parameters:

scale[in] Scalar value to divide by

Returns:

New vector with each component divided by scale

inline XVector4<T> operator+(const XVector4<T> &v) const#

Vector addition operator.

Parameters:

v[in] Vector to add

Returns:

New vector that is the sum of this vector and v

inline XVector4<T> operator-(const XVector4<T> &v) const#

Vector subtraction operator.

Parameters:

v[in] Vector to subtract

Returns:

New vector that is the difference of this vector and v

inline XVector4<T> operator*(XVector4<T> scale) const#

Component-wise vector multiplication operator.

Parameters:

scale[in] Vector to multiply component-wise

Returns:

New vector with components multiplied element-wise

inline XVector4<T> &operator*=(T scale)#

Scalar multiplication assignment operator.

Parameters:

scale[in] Scalar value to multiply with

Returns:

Reference to this vector after multiplication

inline XVector4<T> &operator/=(T scale)#

Scalar division assignment operator.

Parameters:

scale[in] Scalar value to divide by

Returns:

Reference to this vector after division

inline XVector4<T> &operator+=(const XVector4<T> &v)#

Vector addition assignment operator.

Parameters:

v[in] Vector to add

Returns:

Reference to this vector after addition

inline XVector4<T> &operator-=(const XVector4<T> &v)#

Vector subtraction assignment operator.

Parameters:

v[in] Vector to subtract

Returns:

Reference to this vector after subtraction

inline XVector4<T> &operator*=(const XVector4<T> &v)#

Component-wise vector multiplication assignment operator.

Parameters:

v[in] Vector to multiply component-wise

Returns:

Reference to this vector after component-wise multiplication

inline bool operator!=(const XVector4<T> &v) const#

Inequality comparison operator.

Parameters:

v[in] Vector to compare with

Returns:

True if any component differs, false if all components are equal

inline XVector4<T> operator-() const#

Unary negation operator.

Returns:

New vector with all components negated

Public Members

T x#

X component of the vector.

T y#

Y component of the vector.

T z#

Z component of the vector.

T w#

W component of the vector.