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.
Vector3 has the same alignment as its underlying type.
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
Type | Nam | Description |
---|---|---|
Type | x, y, z | Individual components. |
Vector2 | xy | Vector2 swizzle. |
Type | v[3] | Array access. |
Constants
Type | Name | Description |
---|---|---|
Vector3 | zero | Vector of zeros. |
Vector3 | one | Vector 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)