Raven Engine v0.1
A modern 3D Game Engine
Loading...
Searching...
No Matches
QuaternionOps.h File Reference
#include <Crux/Types/Quaternion.h>
#include <Crux/Types/Vector.h>
#include <Crux/Types/Matrix.h>
#include <Crux/Math/BasicMath.h>
#include <Crux/Math/VectorOps.h>
#include <Crux/Math/Trigonometry.h>
#include <cmath>

Namespaces

namespace  Crux

Functions

template<typename T>
constexpr bool Crux::operator== (const Quat< T > &rhs, const Quat< T > &lhs)
template<typename T>
constexpr bool Crux::operator!= (const Quat< T > &rhs, const Quat< T > &lhs)
template<typename T>
constexpr T Crux::QuatDot (const Quat< T > &quatA, const Quat< T > &quatB) noexcept
 Compute the dot product of two quaternions.
template<typename T>
constexpr T Crux::QuatLengthSq (const Quat< T > &quat) noexcept
 Compute squared length (norm) of a quaternion.
template<typename T>
Crux::QuatLength (const Quat< T > &quat) noexcept
 Compute Euclidean length (norm) of a quaternion.
template<typename T>
constexpr T Crux::QuatLengthCT (const Quat< T > &quat) noexcept
 Compute Euclidean length (norm) of a quaternion (compile-time version).
template<typename T>
constexpr Quat< T > Crux::QuatConjugate (const Quat< T > &quat) noexcept
 Compute the conjugate of a quaternion.
template<typename T>
constexpr Quat< T > Crux::QuatInverse (const Quat< T > &quat) noexcept
 Compute the multiplicative inverse of a quaternion.
template<typename T>
Crux::QuatNormalizeInplace (Quat< T > &quat) noexcept
 Normalize quaternion in-place.
template<typename T>
Quat< T > Crux::QuatNormalize (Quat< T > quat) noexcept
 Return normalized copy of quaternion.
template<typename T>
constexpr Quat< T > Crux::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 > Crux::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 > Crux::QuatFromAxisAngle (const Vector< T, 3 > &axis, T angleRadians) noexcept
 Construct quaternion from axis-angle representation.
template<typename T>
void Crux::QuatToAxisAngle (const Quat< T > &quat, Vector< T, 3 > &outAxis, T &outAngle) noexcept
 Decompose quaternion into axis-angle representation.
template<typename T>
Quat< T > Crux::QuatFromEuler (T roll, T pitch, T yaw) noexcept
 Construct quaternion from Euler angles (roll, pitch, yaw).
template<typename T>
void Crux::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 > Crux::QuatLerp (const Quat< T > &quatA, const Quat< T > &quatB, T t) noexcept
 Linear interpolation (LERP) between two quaternions.
template<typename T>
Quat< T > Crux::QuatNlerp (const Quat< T > &quatA, const Quat< T > &quatB, T t) noexcept
 Normalized linear interpolation (NLERP) between two quaternions.
template<typename T>
Quat< T > Crux::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 > Crux::QuatToMat3 (const Quat< T > &quatIn) noexcept
 Convert quaternion to 3x3 rotation matrix (row-major).
template<typename T>
Matrix< T, 4, 4 > Crux::ToMat4 (const Quat< T > &quat) noexcept
 Convert quaternion to 4x4 rotation matrix.
template<typename T>
Quat< T > Crux::QuatFromMat3 (const Matrix< T, 3, 3 > &mat) noexcept
 Convert a 3x3 rotation matrix to a quaternion.
template<typename T>
Quat< T > Crux::operator* (const Quat< T > &a, const Quat< T > &b) noexcept
 Quaternion multiplication operator (Hamilton product).
template<typename T>
Quat< T > Crux::operator* (T s, const Quat< T > &q) noexcept
 Scalar * quaternion multiplication (commutative for scalar).