Skip to main content

Vector3

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

note

Vector3 has the same alignment as its underlying type.

info

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

#include <math/TellusimVector.h>

Vector3i

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

Vector3u

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

Vector3f

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

Vector3d

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

Variables

TypeNamDescription
Typex, y, zIndividual components.
Vector2xyVector2 swizzle.
Typev[3]Array access.

Constants

TypeNameDescription
Vector3zeroVector of zeros.
Vector3oneVector of ones.

Constructors

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

Methods

Update vector data.

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

Vector to scalar operators.

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

Vector to vector operators.

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

Vector data.

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

Homogeneous transform.

Vector2 cartesian() const

Operators

Unary operators.

Vector3 operator-(const Vector3 &v)

Vector to scalar operators.

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

Vector to vector operators.

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

Matrix to vector multiplications.

Vector3 operator*(const Matrix4x3 &m, const Vector3 &v)
Vector3 operator*(const Matrix4x4 &m, const Vector3 &v)
Vector3 mul3x3(const Matrix4x3 &m, const Vector3 &v)
Vector3 mul3x3(const Matrix4x4 &m, const Vector3 &v)

Vector to matrix multiplications.

Vector3 operator*(const Vector3 &v, const Matrix4x3 &m)
Vector3 operator*(const Vector3 &v, const Matrix4x4 &m)
Vector3 mul3x3(const Vector3 &v, const Matrix4x4 &m)

Quaternion to vector multiplications.

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

Vector to quaternion multiplications.

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

Comparison operators.

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

Functions

Sign functions.

Vector3 abs(const Vector3 &v)
Vector3 sign(const Vector3 &v)

Min/max functions.

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

Range functions.

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

Math functions.

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

Exponential functions.

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

Vector functions

Type dot(const Vector3 &v0, const Vector3 &v1)
Type dot32(const Vector3 &v0, const Vector3 &v1)
Type dot23(const Vector3 &v0, const Vector3 &v1)
Type dot22(const Vector3 &v0, const Vector3 &v1)
Vector3 cross(const Vector3 &v0, const Vector3 &v1)
Type cross2(const Vector3 &v0, const Vector3 &v1)
Type length2(const Vector2 &v)
Type length22(const Vector2 &v)
Type length(const Vector2 &v)
Vector3 normalize(const Vector3 &v)
Vector3 normalize2(const Vector3 &v)
Vector3 lerp(const Vector3 &v0, const Vector3 &v1, const Type &k)
Vector3 lerp(const Vector3 &v0, const Vector3 &v1, const Vector3 &k)