|
Not Enough Math
Lightweight zero-dependency C++ math library
|
#include "config.hpp"#include "utils.hpp"#include "vec.hpp"#include "power.hpp"#include <concepts>Go to the source code of this file.
Namespaces | |
| namespace | nem |
Functions | |
| template<typename T , size_t N> | |
| bool | nem::is_zero (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| bool | nem::is_zero (const nem::vec< T, N > &&v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::is_infinite (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::is_nan (const nem::vec< T, N > &v) |
| template<std::floating_point T, size_t N> | |
| constexpr nem::vec< T, N > | nem::copysign (const nem::vec< T, N > &to, const nem::vec< T, N > &from) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::sign (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::abs (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr bool | nem::is_zero_or_neg (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr bool | nem::equal (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::get_max (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::get_min (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::average (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::pow2 (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::pow3 (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::pow4 (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::sqr (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::cube (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::truncate (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::floor (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::ceil (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::mod (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<std::floating_point T, size_t N> | |
| constexpr nem::vec< T, N > | nem::frac (const nem::vec< T, N > &v) |
| template<std::floating_point T, size_t N> | |
| constexpr nem::vec< T, N > | nem::round (const nem::vec< T, N > &v) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::floor (const nem::vec< T, N > &v, const nem::vec< T, N > &step) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::ceil (const nem::vec< T, N > &v, const nem::vec< T, N > &step) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::round (const nem::vec< T, N > &v, const nem::vec< T, N > &step) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::repeat (const nem::vec< T, N > &value, const nem::vec< T, N > &lengthExcl) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::repeat (const nem::vec< T, N > &value, const nem::vec< T, N > &minIncl, const nem::vec< T, N > &maxExcl) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::pingpong (const nem::vec< T, N > &value, const nem::vec< T, N > &length) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::pingpong (const nem::vec< T, N > &value, const nem::vec< T, N > &minIncl, const nem::vec< T, N > &maxExcl) |
| template<std::totally_ordered T, size_t N> | |
| constexpr nem::vec< T, N > | nem::clamp (const nem::vec< T, N > &value, const nem::vec< T, N > &minIncl, const nem::vec< T, N > &maxIncl) |
| template<std::totally_ordered T, size_t N> | |
| constexpr nem::vec< T, N > | nem::clamp01 (const nem::vec< T, N > &value) |
| template<typename T , size_t N> | |
| constexpr nem::vec< T, N > | nem::smoothstep (const nem::vec< T, N > &edge0, const nem::vec< T, N > &edge1, const nem::vec< T, N > &x) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::remap (const nem::vec< T, N > &value, const nem::vec< T, N > &fromMin, const nem::vec< T, N > &fromMax, const nem::vec< T, N > &toMin, const nem::vec< T, N > &toMax) |
| template<nem::scalar_type T, size_t N> | |
| constexpr nem::vec< T, N > | nem::is_whole (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| T | nem::dot (const nem::vec< T, N > &a, const nem::vec< T, N > &b) |
| template<typename T > | |
| nem::vec< T, 3 > | nem::cross (const nem::vec< T, 3 > &a, const nem::vec< T, 3 > &b) |
| template<typename T , size_t N> | |
| T | nem::horizontal_sum (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| T | nem::horizontal_mul (const nem::vec< T, N > &v) |
| template<typename T , size_t N> | |
| nem::vec< T, N > | nem::reflect (const nem::vec< T, N > &vector, const nem::vec< T, N > &normal) |
| template<typename T , size_t N> | |
| static constexpr nem::vec< T, N > | nem::lerp (const nem::vec< T, N > &a, const nem::vec< T, N > &b, float t) |
| template<typename T , size_t N> | |
| constexpr T | nem::sqr_length (const nem::vec< T, N > &vec) |
| template<typename T , size_t N> | |
| T | nem::length (const nem::vec< T, N > &vec) |
| template<typename T , size_t N> | |
| nem::vec< T, N > | nem::normalize (const nem::vec< T, N > &vec) |
| template<typename T > | |
| bool | nem::orthogonal_3d_basis (const nem::vec< T, 3 > &vector, nem::vec< T, 3 > &b1, nem::vec< T, 3 > &b2) |