Raven Engine v0.1
Loading...
Searching...
No Matches
VectorOps.h File Reference

Core vector arithmetic and geometric operations for Crux. More...

#include <cmath>
#include "Crux/Utils/Constants.h"
#include "Crux/Math/BasicMath.h"
#include "Crux/Types/Vector.h"

Namespaces

namespace  Crux

Functions

template<typename T, size_t N>
constexpr Vector< T, N > Crux::operator+ (const Vector< T, N > &a, const Vector< T, N > &b)
 Component-wise addition of two vectors.
template<typename T, size_t N>
constexpr Vector< T, N > Crux::operator- (const Vector< T, N > &a, const Vector< T, N > &b)
 Component-wise subtraction of two vectors.
template<typename T, size_t N>
constexpr Vector< T, N > Crux::operator* (const Vector< T, N > &a, const T &scalar)
 Scalar multiplication (vector * scalar).
template<typename T, size_t N>
constexpr Vector< T, N > Crux::operator* (const T &scalar, const Vector< T, N > &a)
 Scalar multiplication (scalar * vector).
template<typename T, size_t N>
constexpr Vector< T, N > Crux::operator/ (const Vector< T, N > &a, const T &scalar)
 Scalar division of a vector.
template<typename T, size_t N>
constexpr Vector< T, N > & Crux::operator+= (Vector< T, N > &a, const Vector< T, N > &b)
 Compound addition assignment (vector += vector).
template<typename T, size_t N>
constexpr Vector< T, N > & Crux::operator-= (Vector< T, N > &a, const Vector< T, N > &b)
 Compound subtraction assignment (vector -= vector).
template<typename T, size_t N>
constexpr Vector< T, N > & Crux::operator*= (Vector< T, N > &a, const T &scalar)
 Compound scalar multiplication assignment (vector *= scalar).
template<typename T, size_t N>
constexpr Vector< T, N > & Crux::operator/= (Vector< T, N > &a, const T &scalar)
 Compound scalar division assignment (vector /= scalar).
template<typename T, size_t N>
constexpr T Crux::Dot (const Vector< T, N > &a, const Vector< T, N > &b)
 Dot product of two vectors.
template<typename T>
constexpr Vector< T, 3 > Crux::Cross (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Cross product for 3D vectors.
template<typename T, size_t N>
constexpr T Crux::LengthSq (const Vector< T, N > &a)
 Squared length (magnitude) of a vector.
template<typename T, size_t N>
Crux::Length (const Vector< T, N > &a)
 Length (magnitude) of a vector.
template<typename T, size_t N>
Vector< T, N > Crux::Normalize (const Vector< T, N > &a)
 Normalizes a vector to unit length.
template<typename T, size_t N>
constexpr Vector< T, N > Crux::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 > Crux::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 > Crux::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 > Crux::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 > Crux::Abs (const Vector< T, N > &a)
 Element-wise absolute value of a vector.
template<typename T, size_t N>
constexpr bool Crux::operator== (const Vector< T, N > &a, const Vector< T, N > &b)
 Approximate equality comparison with tolerance.
template<typename T, size_t N>
constexpr bool Crux::operator!= (const Vector< T, N > &a, const Vector< T, N > &b)
 Inequality comparison.
template<typename T, size_t N>
Crux::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 > Crux::Lerp (const Vector< T, N > &a, const Vector< T, N > &b, T t)
 Linear interpolation between two vectors.

Detailed Description

Core vector arithmetic and geometric operations for Crux.

Provides templated implementations of common vector operations such as addition, dot/cross products, normalization, projections, reflections, and more. All functions are constexpr-friendly for compile-time use with Vector<T, N> types.

Author
Philip