|
template<FloatingPointType T> |
constexpr bool | IsNaNImpl (T val) noexcept |
|
template<FloatingPointType T> |
constexpr bool | IsInfImpl (T val) noexcept |
|
template<FloatingPointType T> |
constexpr T | AbsImpl (T val) noexcept |
|
template<FloatingPointType T> |
constexpr bool | SignBitImpl (T val) noexcept |
|
template<FloatingPointType T> |
constexpr T | CopySignImpl (T magnitudeVal, T signVal) noexcept |
| Returns a value with the magnitude of magnitudeVal and the sign of signVal.
|
|
template<FloatingPointType T> |
constexpr T | LerpImpl (T a, T b, T t) noexcept |
|
template<FloatingPointType T> |
constexpr T | MaxImpl (T x, T y) |
|
template<FloatingPointType T> |
constexpr T | MinImpl (T x, T y) |
|
constexpr double | Exp10Impl (double x) noexcept |
|
constexpr float | Exp10Impl (float x) noexcept |
|
template<typename FloatT >
requires IsFloatingPoint<FloatT> |
constexpr CompensatedFloat< FloatT > | InnerProduct (FloatT a, FloatT b) |
|
template<typename FloatT , typename... T>
requires IsFloatingPoint<FloatT> |
constexpr CompensatedFloat< FloatT > | InnerProduct (FloatT a, FloatT b, T... terms) |
|
constexpr float | HalfToFloat (const UInt16 value) |
|
constexpr UInt16 | FloatToHalf (float value) |
|
template<SimdType T> |
constexpr T::SIMDType | ToSimd (const T &v) noexcept |
|
template<TupleType T> |
T::SIMDType | ToSimd (const T &v) noexcept |
|
template<SimdType T> |
constexpr const T & | ToSimdType (const T &v) noexcept |
|
template<TupleType T> |
T::Simd | ToSimdType (const T &v) noexcept |
|
template<SimdType S, SimdType T, SimdType U>
requires IsCompatible<S, T, U> |
S | ClampLengthImpl (const S &v, const T &lengthMin, const U &lengthMax) noexcept |
|
template<SimdType S, SimdType T>
requires IsCompatible<S, T> |
S | ReflectImpl (const S &incident, const T &normal) noexcept |
| Reflects an incident vector across a normal vector.
|
|
template<SimdType S, SimdType T, SimdType U>
requires IsCompatible<S, T, U> |
S | RefractImpl (const S &incident, const T &normal, const U &refractionIndex) noexcept |
| Refracts an incident vector across a normal vector.
|
|
template<SimdType T> |
T | ModAnglesImpl (const T &angles) |
| Calculates the angle modulo 2PI.
|
|
template<SimdType T, SimdType U>
requires IsCompatible<T, U> |
T | AddAnglesImpl (const T &v1, const U &v2) noexcept |
| Adds the angles in the corresponding elements of v1 and v2. The argument angles must be in the range [-PI,PI), and the computed angles will be in the range [-PI,PI)
|
|
template<SimdType T, SimdType U>
requires IsCompatible<T, U> |
T | SubtractAnglesImpl (const T &v1, const U &v2) noexcept |
| Subtracts the angles in v2 from the corresponding elements of v1. The argument angles must be in the range [-PI,PI), and the computed angles will be in the range [-PI,PI)
|
|
template<SimdType T, SimdType U, SimdType V, SimdType W>
requires IsCompatible<T, U, V, W> |
T | HermiteImpl (const T &firstPosition, const U &firstTangent, const V &secondPosition, const W &secondTangent, typename T::value_type t) noexcept |
| Calculates the Hermite spline interpolation, using the specified arguments.
|
|
template<SimdType S, SimdType T, SimdType U, SimdType V, SimdType W>
requires IsCompatible<S, T, U, V, W> |
S | BaryCentricImpl (const S &p1, const T &p2, const U &p3, const V &f, const W &g) noexcept |
| Calculates a point in Barycentric coordinates, using the specified triangle. https://en.wikipedia.org/wiki/Barycentric_coordinate_system.
|
|
template<SimdType S, SimdType T, SimdType U, SimdType V, SimdType W>
requires IsCompatible<S, T, U, V, W> |
S | CatmullRomImpl (const S &p1, const T &p2, const U &p3, const V &p4, const W &t) noexcept |
| Calculates the Catmull-Rom interpolation, using the specified positions.
|
|
template<SimdType S, SimdType T, SimdType U, SimdType V>
requires IsCompatible<S, T, U, V> |
S | CatmullRomImpl (const S &p1, const T &p2, const U &p3, const V &p4, const typename S::value_type t) noexcept |
| Calculates the Catmull-Rom interpolation, using the specified positions.
|
|
template<typename FloatT , size_t N> |
constexpr size_t | MinIndex (const std::array< FloatT, N > &values, size_t first, size_t second) |
|
template<typename FloatT , size_t N> |
constexpr size_t | MaxIndex (const std::array< FloatT, N > &values, size_t first, size_t second) |
|
template<VectorSimdType S, VectorSimdType T>
requires IsCompatible<S, T> |
S | AngleBetweenImpl (const S &v1, const T &v2) noexcept |
| Calculates the angle in radians between two vectors.
|
|
template<VectorSimdType S, VectorSimdType T>
requires IsCompatible<S, T> |
S | AngleBetweenNormalizedImpl (const S &v1, const T &v2) noexcept |
| Calculates the angle in radians between two normalized vectors.
|
|
template<PointSimdType S, PointSimdType T, PointSimdType U>
requires IsCompatible<S, T>&& IsCompatible<S, U> |
S | LinePointDistanceImpl (const S &linePoint1, const T &linePoint2, const U &point) noexcept |
| Calculates the minimum distance between a line and a point.
|
|
template<QuaternionSimdType T> |
constexpr const T::SIMDType | ToSimd (const T &q) noexcept |
|
template<QuaternionType T> |
const T::Simd | ToSimdType (const T &q) noexcept |
|
template<QuaternionSimdType T> |
T | InverseImpl (const T &q) noexcept |
| Calculates the inverse of a quaternion.
|
|
template<QuaternionSimdType T> |
T | LogImpl (const T &q1) noexcept |
| Calculates the natural logarithm of a unit quaternion.
|
|
template<SimdType S, QuaternionSimdType T>
requires ( S::Size == 3 ) |
S | RotateImpl (const S &v, const T &rotationQuaternion) |
| Rotates a vector using a quaternion.
|
|
template<SimdType S, QuaternionSimdType T>
requires ( S::Size == 3 ) |
S | InverseRotateImpl (const S &v, const T &rotationQuaternion) |
| Rotates a vector using the inverse of a quaternion.
|
|
template<size_t N, size_t... I, typename FloatT , typename... Args> |
constexpr void | InitMatrix (std::index_sequence< I... >, std::array< std::array< FloatT, N >, N > &dest, Args... args) |
|
template<size_t N, size_t... I, typename FloatT , typename... Args> |
constexpr void | InitDiagonalMatrix (std::index_sequence< I... >, std::array< std::array< FloatT, N >, N > &dest, Args... args) |
|
template<SquareMatrixSimdType T> |
const auto & | ToSimd (const T &m) |
|
template<SquareMatrixType T> |
auto | ToSimd (const T &m) |
|
template<SquareMatrixSimdType T> |
const auto & | ToSimdType (const T &m) |
|
template<SquareMatrixType T> |
auto | ToSimdType (const T &m) |
|
template<SquareMatrixSimdType T1, SquareMatrixSimdType T2>
requires IsCompatibleMatrix<T1, T2> |
T1 | AddImpl (const T1 &m1, const T2 &m2) noexcept |
|
template<SquareMatrixSimdType T1, SquareMatrixSimdType T2>
requires IsCompatibleMatrix<T1, T2> |
T1 | SubImpl (const T1 &m1, const T2 &m2) noexcept |
|
template<SquareMatrixSimdType T1, ArithmeticType T2> |
T1 | MulImpl (const T1 &m, const T2 value) noexcept |
|
template<SquareMatrixSimdType T1, ArithmeticType T2> |
T1 | DivImpl (const T1 &m, const T2 value) noexcept |
|
SquareMatrix< float, 4 >::Simd | TransformationMatrixImpl (const Point3f::Simd &scalingOrigin, const Quaternion< float >::Simd &scalingOrientationQuaternion, const Vector< float, 3 >::Simd &scaling, const Point3f::Simd &rotationOrigin, const Quaternion< float >::Simd &rotationQuaternion, const Vector< float, 3 >::Simd &translation) noexcept |
| Creates a transformation matrix.
|
|
template<SimdType S, SimdType T, typename U , SimdType W>
requires ( S::Size > 2 ) && ( T::Size > 2 ) && ( W::Size > 2 ) && IsFloatingPoint<U>&& std::is_same_v<typename S::value_type, U>&& std::is_same_v<typename T::value_type, U>&& std::is_same_v<typename W::value_type, U> |
SquareMatrix< U, 4 >::Simd | AffineTransformationMatrixImpl (const S &scaling, const T &rotationOrigin, const QuaternionSimd< Quaternion< U > > &rotationQuaternion, const W &translation) noexcept |
| Creates an affine transformation matrix.
|
|
template<SimdType S, SimdType T, SimdType U>
requires IsCompatible<S, T, U> && ( S::Size == 3 ) |
SquareMatrix< typenameS::value_type, 4 >::Simd | LookToImpl (const S &cameraPosition, const T &cameraDirection, const U &upDirection) noexcept |
| Creates a view matrix using the left-handed coordinate system for the provided camera position, camera direction, and up direction.
|
|
template<FloatingPointType T> |
void | RankDecompose (T x, T y, T z, size_t &a, size_t &b, size_t &c) |
|