Skip to main content

Vector4

The Vector4 type provides a highly optimized and flexible container for 4D vector mathematics. It supports efficient storage, manipulation, and arithmetic operations, and is designed for performance-critical applications such as graphics, physics, and simulation. Vector4 is available in multiple scalar type variants, and includes seamless conversions from 2D and 3D vector types.

info

Vector4 has a 16-byte alignment to ensure optimal performance and compatibility with SIMD operations.

info

SIMD types can be used as template parameters for structure of array (SOA) calculations.

#include <math/TellusimVector.h>

Vector4i

Represents a 3D vector of 32-bit signed integers.

Vector4u

Represents a 4D vector of 32-bit unsigned integers.

Vector4f

Represents a 4D vector of 32-bit floating-point numbers.

Vector4d

Represents a 4D vector of 64-bit floating-point numbers.

Variables

TypeNameDescription
Typex, y, z, wIndividual components.
Vector2xy, zwVector2 swizzles.
Vector3xyzVector3 swizzle.
Typev[4]Array access.

Constants

TypeNameDescription
Vector4zeroVector of zeros.
Vector4oneVector of ones.

Constructors

Vector4()
Vector4(const Vector4 &v)
Vector4(const Type &x, const Type &y, const Type &z, const Type &w)
explicit Vector4(const Vector2<CType> &v0, const Vector2<CType> &v1)
explicit Vector4(const Vector2<CType> &v, const Type &z, const Type &w)
explicit Vector4(const Vector3<CType> &v, const Type &w)
explicit Vector4(const Vector4<CType> &v)
explicit Vector4(const Type *v)
explicit Vector4(const Type &v)

Methods

Update vector data.

void set(const Type &v)
void set(const Type &X, const Type &Y, const Type &Z, const Type &W)
void set(const Vector2 &v, const Type &Z, const Type &W)
void set(const Vector3 &v, const Type &W)
void set(const Type *v)
void get(Type *v) const

Vector to scalar operators.

Vector4 &operator*=(const Type &v)
Vector4 &operator/=(const Type &v)
Vector4 &operator%=(const Type &v)
Vector4 &operator+=(const Type &v)
Vector4 &operator-=(const Type &v)
Vector4 &operator&=(const Type &v)
Vector4 &operator|=(const Type &v)
Vector4 &operator^=(const Type &v)
Vector4 &operator<<=(const Type &v)
Vector4 &operator>>=(const Type &v)

Vector to vector operators.

Vector4 &operator*=(const Vector4 &v)
Vector4 &operator/=(const Vector4 &v)
Vector4 &operator%=(const Vector4 &v)
Vector4 &operator+=(const Vector4 &v)
Vector4 &operator-=(const Vector4 &v)
Vector4 &operator&=(const Vector4 &v)
Vector4 &operator|=(const Vector4 &v)
Vector4 &operator^=(const Vector4 &v)

Vector data.

const Type &operator[](uint32_t index) const
Type &operator[](uint32_t index)

Homogeneous transform.

Vector3 cartesian() const

Operators

Unary operators.

Vector4 operator-(const Vector4 &v)

Vector to scalar operators.

Vector4 operator*(const Vector4 &v0, const Type &v1)
Vector4 operator/(const Vector4 &v0, const Type &v1)
Vector4 operator%(const Vector4 &v0, const Type &v1)
Vector4 operator+(const Vector4 &v0, const Type &v1)
Vector4 operator-(const Vector4 &v0, const Type &v1)
Vector4 operator&(const Vector4 &v0, const Type &v1)
Vector4 operator|(const Vector4 &v0, const Type &v1)
Vector4 operator^(const Vector4 &v0, const Type &v1)
Vector4 operator<<(const Vector4 &v0, const Type &v1)
Vector4 operator>>(const Vector4 &v0, const Type &v1)

Vector to vector operators.

Vector4 operator*(const Vector4 &v0, const Vector4 &v1)
Vector4 operator/(const Vector4 &v0, const Vector4 &v1)
Vector4 operator%(const Vector4 &v0, const Vector4 &v1)
Vector4 operator+(const Vector4 &v0, const Vector4 &v1)
Vector4 operator-(const Vector4 &v0, const Vector4 &v1)
Vector4 operator&(const Vector4 &v0, const Vector4 &v1)
Vector4 operator|(const Vector4 &v0, const Vector4 &v1)
Vector4 operator^(const Vector4 &v0, const Vector4 &v1)

Matrix to vector multiplications.

Vector4 operator*(const Matrix4x3 &m, const Vector4 &v)
Vector4 operator*(const Matrix4x4 &m, const Vector4 &v)

Vector to Matrix multiplications.

Vector4 operator*(const Vector4 &v, const Matrix4x3 &m)
Vector4 operator*(const Vector4 &v, const Matrix4x4 &m)

Quaternion to vector multiplications.

Vector4 operator*(const Quaternion &q, const Vector4 &v)

Vector to quaternion multiplications.

Vector4 operator*(const Vector4 &v, const Quaternion &q)

Comparison operators.

bool operator==(const Vector4 &v0, const Vector4 &v1)
bool operator!=(const Vector4 &v0, const Vector4 &v1)
bool compare(const Vector4 &v0, const Vector4 &v1, const Type &a)
bool compare(const Vector4 &v0, const Vector4 &v1, const Type &a, const Type &r)

Functions

Sign functions.

Vector4 abs(const Vector4 &v)
Vector4 sign(const Vector4 &v)

Min/max functions.

Vector4 min(const Vector4 &v0, const Vector4 &v1)
Vector4 max(const Vector4 &v0, const Vector4 &v1)
Vector4 min(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2)
Vector4 max(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2)
Vector4 min(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2, const Vector4 &v3)
Vector4 max(const Vector4 &v0, const Vector4 &v1, const Vector4 &v2, const Vector4 &v3)

Range functions.

Vector4 saturate(const Vector4 &v)
Vector4 clamp(const Vector4 &v, const Type &v0, const Type &v1)
Vector4 clamp(const Vector4 &v, const Vector4 &v0, const Vector4 &v1)

Select functions.

Vector4 select(const Vector4 &v0, const Vector4 &v1, const Type &s)
Vector4 select(const Vector4 &v0, const Vector4 &v1, const Vector4 &s)

Math functions.

Vector4 sin(const Vector4 &v)
Vector4 cos(const Vector4 &v)
Vector4 tan(const Vector4 &v)
Vector4 rcp(const Vector4 &v)
Vector4 sqrt(const Vector4 &v)
Vector4 rsqrt(const Vector4 &v)
Vector4 ceil(const Vector4 &v)
Vector4 floor(const Vector4 &v)
Vector4 round(const Vector4 &v)
Vector4 fract(const Vector4 &v)

Exponential functions.

Vector4 pow(const Vector4 &v0, const Type &v1)
Vector4 pow(const Vector4 &v0, const Vector4 &v1)
Vector4 exp(const Vector4 &v)
Vector4 log(const Vector4 &v)
Vector4 exp2(const Vector4 &v)
Vector4 log2(const Vector4 &v)
Vector4 log10(const Vector4 &v)

Vector functions

Type dot(const Vector4 &v0, const Vector4 &v1)
Type dot(const Vector4 &v0, const Vector3 &v1)
Type dot(const Vector3 &v0, const Vector4 &v1)
Type dot3(const Vector4 &v0, const Vector3 &v1)
Type dot3(const Vector3 &v0, const Vector4 &v1)
Type dot43(const Vector4 &v0, const Vector4 &v1)
Type dot34(const Vector4 &v0, const Vector4 &v1)
Type dot33(const Vector4 &v0, const Vector4 &v1)
Vector4 cross(const Vector4 &v0, const Vector4 &v1)
Type cross2(const Vector4 &v0, const Vector4 &v1)
Type length2(const Vector4 &v)
Type length32(const Vector4 &v)
Type length(const Vector4 &v)
Type length3(const Vector4 &v)
Vector4 normalize(const Vector4 &v)
Vector4 normalize3(const Vector4 &v)
Vector4 lerp(const Vector4 &v0, const Vector4 &v1, const Type &k)
Vector4 lerp(const Vector4 &v0, const Vector4 &v1, const Vector4 &k)