Raven Engine v0.1
A modern 3D Game Engine
Loading...
Searching...
No Matches
Crux Namespace Reference

Namespaces

namespace  Detail
namespace  Entropy
namespace  Hash
namespace  Interop

Classes

struct  AABB
 Axis-aligned bounding box defined by a min and max corner in 3D space. More...
struct  BoundingSphere
 Bounding sphere defined by a center point and radius. More...
struct  Frustum
 View frustum represented as six half-space planes. More...
struct  Matrix
 Generic fixed-size matrix container. More...
struct  Quat
 Templated quaternion representation. More...
class  Random
 Static wrapper around RandomEngine for convenience. More...
class  RandomEngine
 High-performance 64-bit state, 32-bit output PRNG based on PCG32. More...
struct  Vector
 General N-dimensional fixed-size vector container. More...
struct  Vector< T, 2 >
 2-dimensional vector. More...
struct  Vector< T, 3 >
 3-dimensional vector. More...
struct  Vector< T, 4 >
 4-dimensional vector. More...

Typedefs

using mat2 = Matrix<f32, 2, 2>
 2x2 single-precision f32ing-point matrix.
using mat3 = Matrix<f32, 3, 3>
 3x3 single-precision f32ing-point matrix.
using mat4 = Matrix<f32, 4, 4>
 4x4 single-precision f32ing-point matrix.
using dmat2 = Matrix<double, 2, 2>
 2x2 double-precision f32ing-point matrix.
using dmat3 = Matrix<double, 3, 3>
 3x3 double-precision f32ing-point matrix.
using dmat4 = Matrix<double, 4, 4>
 4x4 double-precision f32ing-point matrix.
using imat2 = Matrix<int, 2, 2>
 2x2 integer matrix.
using imat3 = Matrix<int, 3, 3>
 3x3 integer matrix.
using imat4 = Matrix<int, 4, 4>
 4x4 integer matrix.
using ivec2 = Vector<int, 2>
using ivec3 = Vector<int, 3>
 2D integer vector
using ivec4 = Vector<int, 4>
 3D integer vector
using uvec2 = Vector<unsigned, 2>
 4D integer vector
using uvec3 = Vector<unsigned, 3>
 2D unsigned vector
using uvec4 = Vector<unsigned, 4>
 3D unsigned vector
using vec2 = Vector<f32, 2>
 4D unsigned vector
using vec3 = Vector<f32, 3>
 2D f32 vector
using vec4 = Vector<f32, 4>
 3D f32 vector
using dvec2 = Vector<double, 2>
 4D f32 vector
using dvec3 = Vector<double, 3>
 2D double vector
using dvec4 = Vector<double, 4>
 3D double vector
Convenience aliases
using quatf = Quat<f32>
 Single-precision quaternion alias.
using quatd = Quat<double>
 Double-precision quaternion alias.

Functions

template<typename T>
constexpr T Lerp (T a, T b, f32 t)
 Linear interpolation between a and b by factor t.
template<typename T>
constexpr T Min (T a, T b)
 Return the minimum of two values.
template<typename T>
constexpr T Max (T a, T b)
 Return the maximum of two values.
template<typename T>
constexpr T Clamp (T value, T min, T max)
 Clamp a value between a minimum and maximum.
template<typename T>
constexpr T Saturate (T value)
 Clamp a value to the [0,1] range.
template<typename T>
constexpr T Sign (T value)
 Signum function: returns -1, 0, or +1.
template<typename T>
constexpr T Abs (T value)
 Absolute value.
template<typename T>
constexpr T Floor (T value)
 Floor function for f32ing-point values.
template<typename T>
constexpr T Ceil (T value)
 Ceiling function for f32ing-point values.
template<typename T>
constexpr T Fract (T value)
 Fractional part of a value.
template<typename T>
constexpr T Square (T value)
 Square of a value.
template<typename T>
constexpr T Cube (T value)
 Cube of a value.
constexpr f32 Smoothstep (f32 edge0, f32 edge1, f32 x)
 Smoothstep interpolation between edge0 and edge1.
constexpr f32 CTInverseSqrt (f32 x)
 Fast compile-time inverse square root (single Newton step).
constexpr f32 CTSqrt (const f32 x)
 Fast compile-time square root using bit manipulation.
f32 InverseSqrt (const f32 x)
 Inverse square root using hardware rsqrt.
f32 Sqrt (const f32 x)
 Standard square root using hardware sqrt.
template<typename T, size_t Rows, size_t Cols>
constexpr bool operator== (const Matrix< T, Rows, Cols > &a, const Matrix< T, Rows, Cols > &b)
template<typename T, size_t Rows, size_t Cols>
constexpr bool operator!= (const Matrix< T, Rows, Cols > &a, const Matrix< T, Rows, Cols > &b) noexcept
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > operator+ (const Matrix< T, Rows, Cols > &a, const Matrix< T, Rows, Cols > &b)
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > operator- (const Matrix< T, Rows, Cols > &a, const Matrix< T, Rows, Cols > &b)
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > operator* (const Matrix< T, Rows, Cols > &a, const T &scalar)
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > operator* (const T &scalar, const Matrix< T, Rows, Cols > &a)
template<typename T>
constexpr Vector< T, 4 > operator* (const Matrix< T, 4, 4 > &m, const Vector< T, 4 > &v)
template<typename T>
constexpr Vector< T, 3 > operator* (const Matrix< T, 4, 4 > &m, const Vector< T, 3 > &v)
template<typename T>
constexpr Vector< T, 4 > operator* (const Vector< T, 4 > &v, const Matrix< T, 4, 4 > &m)
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > operator/ (const Matrix< T, Rows, Cols > &a, const T &scalar)
template<typename T, size_t RowsA, size_t ColsA, size_t ColsB>
constexpr Matrix< T, RowsA, ColsB > operator* (const Matrix< T, RowsA, ColsA > &a, const Matrix< T, ColsA, ColsB > &b)
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > Zero ()
 Generates a zero matrix of size Rows x Cols.
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Cols, Rows > Transpose (const Matrix< T, Rows, Cols > &a)
 Transposes the given matrix (rows become columns).
template<typename T>
constexpr Matrix< T, 4, 4 > RotateX (T angle)
 Creates a 4x4 rotation matrix around the X axis.
template<typename T>
constexpr Matrix< T, 4, 4 > RotateY (T angle)
 Creates a 4x4 rotation matrix around the Y axis.
template<typename T>
constexpr Matrix< T, 4, 4 > RotateZ (T angle)
 Creates a 4x4 rotation matrix around the Z axis.
template<typename T>
constexpr Matrix< T, 4, 4 > Rotate (T angle, const Vector< T, 3 > &axis)
 Creates a 4x4 rotation matrix around an arbitrary axis.
template<typename T>
constexpr Matrix< T, 2, 2 > Scale (T tx, T ty)
 Constructs a 2D scaling matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > Scale (T sx, T sy, T sz)
 Constructs a 4x4 3D non-uniform scaling matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > Scale (const Vector< T, 3 > &s)
 Constructs a 4x4 3D non-uniform scaling matrix from a vector.
template<typename T, size_t N>
constexpr Matrix< T, N, N > Scale (T s)
 Constructs a uniform scaling matrix of size N x N.
template<typename T>
constexpr Matrix< T, 3, 3 > Translate (T tx, T ty)
 Constructs a 3x3 2D translation matrix.
constexpr Matrix< f32, 4, 4 > Translate (f32 tx, f32 ty, f32 tz)
 Constructs a 4x4 3D translation matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > Translate (const Matrix< T, 4, 4 > &m, const Vector< T, 3 > &v)
 Applies a 3D translation to a 4x4 matrix using a vector.
template<typename T, size_t N>
constexpr Matrix< T, N, N > Identity ()
 Generates an identity matrix of size NxN.
template<typename T, size_t N>
constexpr T Trace (const Matrix< T, N, N > &a)
 Computes the trace (sum of diagonal elements) of a square matrix.
template<typename T, size_t Rows, size_t Cols>
constexpr T Norm (const Matrix< T, Rows, Cols > &a)
 Computes the Frobenius norm of the matrix.
template<typename T, size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols > Normalize (const Matrix< T, Rows, Cols > &a)
 Normalizes the matrix by dividing each element by the Frobenius norm.
template<typename T>
constexpr T Determinant (const Matrix< T, 2, 2 > &a)
 Computes the determinant of a 2x2 matrix.
template<typename T>
constexpr T Determinant (const Matrix< T, 3, 3 > &a)
 Computes the determinant of a 3x3 matrix.
template<typename T>
constexpr T Determinant (const Matrix< T, 4, 4 > &a)
 Computes the determinant of a 4x4 matrix.
template<typename T>
constexpr Matrix< T, 2, 2 > Inverse (const Matrix< T, 2, 2 > &a)
 Computes the inverse of a 2x2 matrix.
template<typename T>
constexpr Matrix< T, 3, 3 > Inverse (const Matrix< T, 3, 3 > &a)
 Computes the inverse of a 3x3 matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > Inverse (const Matrix< T, 4, 4 > &a)
 Computes the inverse of a 4x4 matrix.
template<typename T>
constexpr Matrix< T, 3, 3 > ToMat3 (const Matrix< T, 4, 4 > &m)
 Converts a 4x4 Matrix into a 3x3 Matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > ToMat4 (const Matrix< T, 3, 3 > &m)
 Converts a 3x3 Matrix into a 4x4 Matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > LookAt (const Vector< T, 3 > &position, const Vector< T, 3 > &target, const Vector< T, 3 > &up)
 Creates a look-at view matrix using position, target, and up vectors.
template<typename T>
void DecomposeTransform (const Matrix< T, 4, 4 > &transform, Vector< T, 3 > &translation, Vector< T, 3 > &rotation, Vector< T, 3 > &scale)
 Decomposes a 4x4 transformation matrix into translation, rotation, and scale.
template<typename T>
Matrix< T, 4, 4 > ComposeTransform (const Vector< T, 3 > &translation, const Vector< T, 3 > &rotation, const Vector< T, 3 > &scale)
 Helper to compose a transformation matrix from translation, rotation, and scale.
Matrix< f32, 4, 4 > Perspective (f32 yFov, f32 aspect, f32 zNear, f32 zFar)
 Constructs a perspective projection matrix.
template<typename T>
constexpr Matrix< T, 4, 4 > Ortho (T left, T right, T bottom, T top, T zNear, T zFar)
 Constructs an orthographic projection matrix.
template<typename T>
constexpr bool operator== (const Quat< T > &rhs, const Quat< T > &lhs)
template<typename T>
constexpr bool operator!= (const Quat< T > &rhs, const Quat< T > &lhs)
template<typename T>
constexpr T QuatDot (const Quat< T > &quatA, const Quat< T > &quatB) noexcept
 Compute the dot product of two quaternions.
template<typename T>
constexpr T QuatLengthSq (const Quat< T > &quat) noexcept
 Compute squared length (norm) of a quaternion.
template<typename T>
QuatLength (const Quat< T > &quat) noexcept
 Compute Euclidean length (norm) of a quaternion.
template<typename T>
constexpr T QuatLengthCT (const Quat< T > &quat) noexcept
 Compute Euclidean length (norm) of a quaternion (compile-time version).
template<typename T>
constexpr Quat< T > QuatConjugate (const Quat< T > &quat) noexcept
 Compute the conjugate of a quaternion.
template<typename T>
constexpr Quat< T > QuatInverse (const Quat< T > &quat) noexcept
 Compute the multiplicative inverse of a quaternion.
template<typename T>
QuatNormalizeInplace (Quat< T > &quat) noexcept
 Normalize quaternion in-place.
template<typename T>
Quat< T > QuatNormalize (Quat< T > quat) noexcept
 Return normalized copy of quaternion.
template<typename T>
constexpr Quat< T > QuatMul (const Quat< T > &quatA, const Quat< T > &quatB) noexcept
 Hamilton product of two quaternions (composition of rotations).
template<typename T>
constexpr Vector< T, 3 > QuatRotate (const Quat< T > &quat, const Vector< T, 3 > &vec) noexcept
 Rotate a 3D vector by a quaternion (optimized form).
template<typename T>
Quat< T > QuatFromAxisAngle (const Vector< T, 3 > &axis, T angleRadians) noexcept
 Construct quaternion from axis-angle representation.
template<typename T>
void QuatToAxisAngle (const Quat< T > &quat, Vector< T, 3 > &outAxis, T &outAngle) noexcept
 Decompose quaternion into axis-angle representation.
template<typename T>
Quat< T > QuatFromEuler (T roll, T pitch, T yaw) noexcept
 Construct quaternion from Euler angles (roll, pitch, yaw).
template<typename T>
void QuatToEuler (const Quat< T > &quat, T &outRoll, T &outPitch, T &outYaw) noexcept
 Convert quaternion to Euler angles (roll, pitch, yaw).
template<typename T>
Quat< T > QuatLerp (const Quat< T > &quatA, const Quat< T > &quatB, T t) noexcept
 Linear interpolation (LERP) between two quaternions.
template<typename T>
Quat< T > QuatNlerp (const Quat< T > &quatA, const Quat< T > &quatB, T t) noexcept
 Normalized linear interpolation (NLERP) between two quaternions.
template<typename T>
Quat< T > QuatSlerp (const Quat< T > &quatA, const Quat< T > &quatB, T t) noexcept
 Spherical linear interpolation (SLERP) between two quaternions.
template<typename T>
Matrix< T, 3, 3 > QuatToMat3 (const Quat< T > &quatIn) noexcept
 Convert quaternion to 3x3 rotation matrix (row-major).
template<typename T>
Matrix< T, 4, 4 > ToMat4 (const Quat< T > &quat) noexcept
 Convert quaternion to 4x4 rotation matrix.
template<typename T>
Quat< T > QuatFromMat3 (const Matrix< T, 3, 3 > &mat) noexcept
 Convert a 3x3 rotation matrix to a quaternion.
template<typename T>
Quat< T > operator* (const Quat< T > &a, const Quat< T > &b) noexcept
 Quaternion multiplication operator (Hamilton product).
template<typename T>
Quat< T > operator* (T s, const Quat< T > &q) noexcept
 Scalar * quaternion multiplication (commutative for scalar).
constexpr f32 PolySinImpl (f32 x)
constexpr f32 PolyCosImpl (f32 x)
constexpr f32 Radians (f32 degrees)
 Convert degrees to radians.
constexpr Vector< f32, 3 > Radians (Vector< f32, 3 > vector)
 Convert a Vector3s components from degrees to radians.
constexpr f32 Degrees (f32 radians)
 Convert radians to degrees.
template<typename T>
constexpr Vector< T, 3 > Degrees (Vector< T, 3 > vector)
 Convert a Vector3s components from radians to degrees.
template<Detail::PrecisionMode Mode = Detail::PrecisionMode::Standard>
f32 Sin (f32 radians)
 Computes the sine of an angle in radians using a fast polynomial approximation.
template<Detail::PrecisionMode Mode = Detail::PrecisionMode::Standard>
f32 Cos (f32 radians)
 Computes the cosine of an angle in radians using a fast polynomial approximation.
template<Detail::PrecisionMode Mode = Detail::PrecisionMode::Standard>
f32 Tan (f32 radians)
 Computes the tangent of an angle in radians using a fast polynomial approximation.
template<typename T, size_t N>
constexpr Vector< T, N > operator- (const Vector< T, N > &v)
template<typename T, size_t N>
constexpr Vector< T, N > operator+ (const Vector< T, N > &a, const Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > operator- (const Vector< T, N > &a, const Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > operator* (const Vector< T, N > &a, const T &scalar)
template<typename T, size_t N>
constexpr Vector< T, N > operator* (const T &scalar, const Vector< T, N > &a)
template<typename T, size_t N>
constexpr Vector< T, N > operator/ (const Vector< T, N > &a, const T &scalar)
template<typename T, size_t N>
constexpr Vector< T, N > & operator+= (Vector< T, N > &a, const Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > & operator* (const Vector< T, N > &a, const Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > & operator*= (Vector< T, N > &a, Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > & operator-= (Vector< T, N > &a, const Vector< T, N > &b)
template<typename T, size_t N>
constexpr Vector< T, N > & operator*= (Vector< T, N > &a, const T &scalar)
template<typename T, size_t N>
constexpr Vector< T, N > & operator/= (Vector< T, N > &a, const T &scalar)
template<typename T, size_t N>
constexpr T Dot (const Vector< T, N > &a, const Vector< T, N > &b)
 Dot product of two vectors.
template<typename T>
constexpr Vector< T, 3 > Cross (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Cross product for 3D vectors.
template<typename T, size_t N>
constexpr T LengthSq (const Vector< T, N > &a)
 Squared length (magnitude) of a vector.
template<typename T, size_t N>
Length (const Vector< T, N > &a)
 Length (magnitude) of a vector.
template<typename T, size_t N>
Vector< T, N > Normalize (const Vector< T, N > &a)
 Normalizes a vector to unit length.
template<typename T, size_t N>
constexpr Vector< T, N > Project (const Vector< T, N > &a, const Vector< T, N > &b)
 Projects vector a onto vector b.
template<typename T, size_t N>
constexpr Vector< T, N > Reflect (const Vector< T, N > &a, const Vector< T, N > &normal)
 Reflects vector a around the given normal.
template<typename T, size_t N>
constexpr Vector< T, N > MinComponent (const Vector< T, N > &a, const Vector< T, N > &b)
 Element-wise minimum of two vectors.
template<typename T, size_t N>
constexpr Vector< T, N > MaxComponent (const Vector< T, N > &a, const Vector< T, N > &b)
 Element-wise maximum of two vectors.
template<typename T, size_t N>
constexpr Vector< T, N > Abs (const Vector< T, N > &a)
 Element-wise absolute value of a vector.
template<typename T, size_t N>
constexpr bool operator== (const Vector< T, N > &a, const Vector< T, N > &b)
 Approximate equality comparison with tolerance.
template<typename T, size_t N>
constexpr bool operator!= (const Vector< T, N > &a, const Vector< T, N > &b)
 Inequality comparison.
template<typename T, size_t N>
AngleBetween (const Vector< T, N > &a, const Vector< T, N > &b)
 Angle between two vectors in radians.
template<typename T, size_t N>
constexpr Vector< T, N > Lerp (const Vector< T, N > &a, const Vector< T, N > &b, T t)
 Linear interpolation between two vectors.
template<typename T>
constexpr bool operator== (const Vector< T, 2 > &lhs, const Vector< T, 2 > &rhs)
template<typename T>
constexpr bool operator!= (const Vector< T, 2 > &lhs, const Vector< T, 2 > &rhs)
template<typename T>
constexpr bool operator== (const Vector< T, 3 > &lhs, const Vector< T, 3 > &rhs)
template<typename T>
constexpr bool operator!= (const Vector< T, 3 > &lhs, const Vector< T, 3 > &rhs)
template<typename T>
constexpr bool operator== (const Vector< T, 4 > &lhs, const Vector< T, 4 > &rhs)
template<typename T>
constexpr bool operator!= (const Vector< T, 4 > &lhs, const Vector< T, 4 > &rhs)

Variables

template<typename T>
constexpr T Pi = static_cast<T>(3.14159265358979323846)
 The value of pi.
template<typename T>
constexpr T TwoPi = static_cast<T>(6.28318530717958647692)
 The value of 2pi (two pi).
template<typename T>
constexpr T HalfPi = static_cast<T>(1.57079632679489661923)
 The value of pi/2 (half pi).
template<typename T>
constexpr T QuarterPi = static_cast<T>(0.78539816339744830961)
 The value of pi/4 (quarter pi).
template<typename T>
constexpr T InvPi = static_cast<T>(0.31830988618379067153)
 1/pi (inverse pi).
template<typename T>
constexpr T InvTwoPi = static_cast<T>(0.15915494309189533576)
 1/(2pi) (inverse two pi).
template<typename T>
constexpr T DegToRad = Pi<T> / static_cast<T>(180)
 Degrees-to-radians conversion factor (pi/180).
template<typename T>
constexpr T RadToDeg = static_cast<T>(180) / Pi<T>
 Radians-to-degrees conversion factor (180/pi).
template<typename T>
constexpr T Sqrt2 = static_cast<T>(1.41421356237309504880)
 sqrt2 (square root of two).
template<typename T>
constexpr T InvSqrt2 = static_cast<T>(0.70710678118654752440)
 1/sqrt2 (inverse square root of two).
template<typename T>
constexpr T Sqrt3 = static_cast<T>(1.73205080756887729352)
 sqrt3 (square root of three).
template<typename T>
constexpr T InvSqrt3 = static_cast<T>(0.57735026918962576450)
 1/sqrt3 (inverse square root of three).
template<typename T>
constexpr T E = static_cast<T>(2.71828182845904523536)
 Euler's number (e).
template<typename T>
constexpr T InvE = static_cast<T>(0.36787944117144232159)
 1/e (inverse of Euler's number).
template<typename T>
constexpr T Ln2 = static_cast<T>(0.69314718055994530942)
 Natural logarithm of 2 (ln(2)).
template<typename T>
constexpr T Ln10 = static_cast<T>(2.30258509299404568402)
 Natural logarithm of 10 (ln(10)).
template<typename T>
constexpr T Log2E = static_cast<T>(1.44269504088896340736)
 Base-2 logarithm of e (log2(e)).
template<typename T>
constexpr T Log10E = static_cast<T>(0.43429448190325182765)
 Base-10 logarithm of e (log10(e)).
template<typename T>
constexpr T Phi = static_cast<T>(1.61803398874989484820)
 The golden ratio.
template<typename T>
constexpr T Epsilon = static_cast<T>(1e-7)
 Small epsilon for f32ing-point comparisons.

Typedef Documentation

◆ ivec2

using Crux::ivec2 = Vector<int, 2>

◆ quatd

using Crux::quatd = Quat<double>

Double-precision quaternion alias.

◆ quatf

using Crux::quatf = Quat<f32>

Single-precision quaternion alias.

Function Documentation

◆ ComposeTransform()

template<typename T>
Matrix< T, 4, 4 > Crux::ComposeTransform ( const Vector< T, 3 > & translation,
const Vector< T, 3 > & rotation,
const Vector< T, 3 > & scale )
inline

Helper to compose a transformation matrix from translation, rotation, and scale.

Constructs: M = T * R * S

◆ DecomposeTransform()

template<typename T>
void Crux::DecomposeTransform ( const Matrix< T, 4, 4 > & transform,
Vector< T, 3 > & translation,
Vector< T, 3 > & rotation,
Vector< T, 3 > & scale )
inline

Decomposes a 4x4 transformation matrix into translation, rotation, and scale.

Extracts translation from the last column, scale from row lengths, and rotation by orthonormalizing the upper-left 3x3 and converting to Euler angles.

Note
For interactive manipulation (e.g., ImGuizmo), DO NOT compute delta rotations by subtracting Euler angles! Instead, directly assign the decomposed rotation. Euler angle deltas cause gimbal lock and spinning artifacts.

◆ operator!=() [1/5]

template<typename T, size_t Rows, size_t Cols>
bool Crux::operator!= ( const Matrix< T, Rows, Cols > & a,
const Matrix< T, Rows, Cols > & b )
constexprnoexcept

◆ operator!=() [2/5]

template<typename T>
bool Crux::operator!= ( const Quat< T > & rhs,
const Quat< T > & lhs )
constexpr

◆ operator!=() [3/5]

template<typename T>
bool Crux::operator!= ( const Vector< T, 2 > & lhs,
const Vector< T, 2 > & rhs )
constexpr

◆ operator!=() [4/5]

template<typename T>
bool Crux::operator!= ( const Vector< T, 3 > & lhs,
const Vector< T, 3 > & rhs )
constexpr

◆ operator!=() [5/5]

template<typename T>
bool Crux::operator!= ( const Vector< T, 4 > & lhs,
const Vector< T, 4 > & rhs )
constexpr

◆ operator*() [1/9]

template<typename T>
Vector< T, 3 > Crux::operator* ( const Matrix< T, 4, 4 > & m,
const Vector< T, 3 > & v )
constexpr

◆ operator*() [2/9]

template<typename T>
Vector< T, 4 > Crux::operator* ( const Matrix< T, 4, 4 > & m,
const Vector< T, 4 > & v )
constexpr

◆ operator*() [3/9]

template<typename T, size_t Rows, size_t Cols>
Matrix< T, Rows, Cols > Crux::operator* ( const Matrix< T, Rows, Cols > & a,
const T & scalar )
constexpr

◆ operator*() [4/9]

template<typename T, size_t RowsA, size_t ColsA, size_t ColsB>
Matrix< T, RowsA, ColsB > Crux::operator* ( const Matrix< T, RowsA, ColsA > & a,
const Matrix< T, ColsA, ColsB > & b )
constexpr

◆ operator*() [5/9]

template<typename T, size_t Rows, size_t Cols>
Matrix< T, Rows, Cols > Crux::operator* ( const T & scalar,
const Matrix< T, Rows, Cols > & a )
constexpr

◆ operator*() [6/9]

template<typename T, size_t N>
Vector< T, N > Crux::operator* ( const T & scalar,
const Vector< T, N > & a )
constexpr

◆ operator*() [7/9]

template<typename T>
Vector< T, 4 > Crux::operator* ( const Vector< T, 4 > & v,
const Matrix< T, 4, 4 > & m )
constexpr

◆ operator*() [8/9]

template<typename T, size_t N>
Vector< T, N > Crux::operator* ( const Vector< T, N > & a,
const T & scalar )
constexpr

◆ operator*() [9/9]

template<typename T, size_t N>
Vector< T, N > & Crux::operator* ( const Vector< T, N > & a,
const Vector< T, N > & b )
constexpr

◆ operator*=() [1/2]

template<typename T, size_t N>
Vector< T, N > & Crux::operator*= ( Vector< T, N > & a,
const T & scalar )
constexpr

◆ operator*=() [2/2]

template<typename T, size_t N>
Vector< T, N > & Crux::operator*= ( Vector< T, N > & a,
Vector< T, N > & b )
constexpr

◆ operator+() [1/2]

template<typename T, size_t Rows, size_t Cols>
Matrix< T, Rows, Cols > Crux::operator+ ( const Matrix< T, Rows, Cols > & a,
const Matrix< T, Rows, Cols > & b )
constexpr

◆ operator+() [2/2]

template<typename T, size_t N>
Vector< T, N > Crux::operator+ ( const Vector< T, N > & a,
const Vector< T, N > & b )
constexpr

◆ operator+=()

template<typename T, size_t N>
Vector< T, N > & Crux::operator+= ( Vector< T, N > & a,
const Vector< T, N > & b )
constexpr

◆ operator-() [1/3]

template<typename T, size_t Rows, size_t Cols>
Matrix< T, Rows, Cols > Crux::operator- ( const Matrix< T, Rows, Cols > & a,
const Matrix< T, Rows, Cols > & b )
constexpr

◆ operator-() [2/3]

template<typename T, size_t N>
Vector< T, N > Crux::operator- ( const Vector< T, N > & a,
const Vector< T, N > & b )
constexpr

◆ operator-() [3/3]

template<typename T, size_t N>
Vector< T, N > Crux::operator- ( const Vector< T, N > & v)
constexpr

◆ operator-=()

template<typename T, size_t N>
Vector< T, N > & Crux::operator-= ( Vector< T, N > & a,
const Vector< T, N > & b )
constexpr

◆ operator/() [1/2]

template<typename T, size_t Rows, size_t Cols>
Matrix< T, Rows, Cols > Crux::operator/ ( const Matrix< T, Rows, Cols > & a,
const T & scalar )
constexpr

◆ operator/() [2/2]

template<typename T, size_t N>
Vector< T, N > Crux::operator/ ( const Vector< T, N > & a,
const T & scalar )
constexpr

◆ operator/=()

template<typename T, size_t N>
Vector< T, N > & Crux::operator/= ( Vector< T, N > & a,
const T & scalar )
constexpr

◆ operator==() [1/5]

template<typename T, size_t Rows, size_t Cols>
bool Crux::operator== ( const Matrix< T, Rows, Cols > & a,
const Matrix< T, Rows, Cols > & b )
constexpr

◆ operator==() [2/5]

template<typename T>
bool Crux::operator== ( const Quat< T > & rhs,
const Quat< T > & lhs )
constexpr

◆ operator==() [3/5]

template<typename T>
bool Crux::operator== ( const Vector< T, 2 > & lhs,
const Vector< T, 2 > & rhs )
constexpr

◆ operator==() [4/5]

template<typename T>
bool Crux::operator== ( const Vector< T, 3 > & lhs,
const Vector< T, 3 > & rhs )
constexpr

◆ operator==() [5/5]

template<typename T>
bool Crux::operator== ( const Vector< T, 4 > & lhs,
const Vector< T, 4 > & rhs )
constexpr

◆ PolyCosImpl()

f32 Crux::PolyCosImpl ( f32 x)
externinlineconstexpr

◆ PolySinImpl()

f32 Crux::PolySinImpl ( f32 x)
externinlineconstexpr

Variable Documentation

◆ DegToRad

template<typename T>
T Crux::DegToRad = Pi<T> / static_cast<T>(180)
inlineconstexpr

Degrees-to-radians conversion factor (pi/180).

◆ E

template<typename T>
T Crux::E = static_cast<T>(2.71828182845904523536)
inlineconstexpr

Euler's number (e).

◆ Epsilon

template<typename T>
T Crux::Epsilon = static_cast<T>(1e-7)
inlineconstexpr

Small epsilon for f32ing-point comparisons.

◆ HalfPi

template<typename T>
T Crux::HalfPi = static_cast<T>(1.57079632679489661923)
inlineconstexpr

The value of pi/2 (half pi).

◆ InvE

template<typename T>
T Crux::InvE = static_cast<T>(0.36787944117144232159)
inlineconstexpr

1/e (inverse of Euler's number).

◆ InvPi

template<typename T>
T Crux::InvPi = static_cast<T>(0.31830988618379067153)
inlineconstexpr

1/pi (inverse pi).

◆ InvSqrt2

template<typename T>
T Crux::InvSqrt2 = static_cast<T>(0.70710678118654752440)
inlineconstexpr

1/sqrt2 (inverse square root of two).

◆ InvSqrt3

template<typename T>
T Crux::InvSqrt3 = static_cast<T>(0.57735026918962576450)
inlineconstexpr

1/sqrt3 (inverse square root of three).

◆ InvTwoPi

template<typename T>
T Crux::InvTwoPi = static_cast<T>(0.15915494309189533576)
inlineconstexpr

1/(2pi) (inverse two pi).

◆ Ln10

template<typename T>
T Crux::Ln10 = static_cast<T>(2.30258509299404568402)
inlineconstexpr

Natural logarithm of 10 (ln(10)).

◆ Ln2

template<typename T>
T Crux::Ln2 = static_cast<T>(0.69314718055994530942)
inlineconstexpr

Natural logarithm of 2 (ln(2)).

◆ Log10E

template<typename T>
T Crux::Log10E = static_cast<T>(0.43429448190325182765)
inlineconstexpr

Base-10 logarithm of e (log10(e)).

◆ Log2E

template<typename T>
T Crux::Log2E = static_cast<T>(1.44269504088896340736)
inlineconstexpr

Base-2 logarithm of e (log2(e)).

◆ Phi

template<typename T>
T Crux::Phi = static_cast<T>(1.61803398874989484820)
inlineconstexpr

The golden ratio.

◆ Pi

template<typename T>
T Crux::Pi = static_cast<T>(3.14159265358979323846)
inlineconstexpr

The value of pi.

◆ QuarterPi

template<typename T>
T Crux::QuarterPi = static_cast<T>(0.78539816339744830961)
inlineconstexpr

The value of pi/4 (quarter pi).

◆ RadToDeg

template<typename T>
T Crux::RadToDeg = static_cast<T>(180) / Pi<T>
inlineconstexpr

Radians-to-degrees conversion factor (180/pi).

◆ Sqrt2

template<typename T>
T Crux::Sqrt2 = static_cast<T>(1.41421356237309504880)
inlineconstexpr

sqrt2 (square root of two).

◆ Sqrt3

template<typename T>
T Crux::Sqrt3 = static_cast<T>(1.73205080756887729352)
inlineconstexpr

sqrt3 (square root of three).

◆ TwoPi

template<typename T>
T Crux::TwoPi = static_cast<T>(6.28318530717958647692)
inlineconstexpr

The value of 2pi (two pi).