|
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | sum (U first, Args... args) noexcept |
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | sub (U first, Args... args) noexcept |
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | mul (U first, Args... args) noexcept |
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | div (U first, Args... args) noexcept |
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | max_of (U first, Args... args) noexcept |
template<typename T = void, typename U, typename... Args>
requires concepts::is_arithmetic<U, Args...> |
| constexpr auto | min_of (U first, Args... args) noexcept |
| constexpr auto | operator""_deg (long double value) noexcept -> ice::math::deg64 |
| template<StrongScalarType ScalarType, SimpleNumberType NumberType> |
| constexpr auto | operator* (ScalarType left, NumberType right) noexcept -> ScalarType |
| template<StrongScalarType ScalarType, SimpleNumberType NumberType> |
| constexpr auto | operator/ (ScalarType left, NumberType right) noexcept -> ScalarType |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | to_arr (arr_t< Size, U > arr_val) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | to_arr (vec< Size, U > vec_val) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T> |
| constexpr auto | to_arr (vec< Size, T > vec_val) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T> |
| constexpr auto | to_vec (vec< Size, T > vec_val) noexcept -> vec< Size, T > |
| template<u32 Size, typename T> |
| constexpr auto | to_vec (arr_t< Size, T > arr_val) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | max (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | min (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | add (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | add (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | sub (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | sub (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | mul (arr_t< Size, T > left, U right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | mul (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | mul (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | div (arr_t< Size, T > left, U right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | div (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | div (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T> |
| constexpr auto | operator- (arr_t< Size, T > left) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator+ (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator+ (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator- (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator- (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator* (arr_t< Size, T > left, U right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator* (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator* (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator/ (arr_t< Size, T > left, U right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator/ (arr_t< Size, T > left, arr_t< Size, U > right) noexcept -> arr_t< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator/ (vec< Size, T > left, arr_t< Size, U > right) noexcept -> vec< Size, T > |
| constexpr auto | radians (deg degrees) noexcept -> rad |
| constexpr auto | degrees (rad radians) noexcept -> deg |
| constexpr auto | sqrt (f32 val) noexcept -> f32 |
| constexpr auto | sin (rad radians) noexcept -> f32 |
| constexpr auto | cos (rad radians) noexcept -> f32 |
| constexpr auto | tan (rad radians) noexcept -> f32 |
| auto | atan (rad x) noexcept -> f32 |
| auto | atan2 (f32 x, f32 y) noexcept -> f32 |
| constexpr auto | clamp (f32 val, f32 min, f32 max) noexcept -> f32 |
| constexpr auto | radians (deg64 degrees) noexcept -> rad64 |
| constexpr auto | degrees (rad64 radians) noexcept -> deg64 |
| constexpr auto | sgn (f32 val) noexcept -> f32 |
| constexpr auto | abs (f32 val) noexcept -> f32 |
| auto | pow (f32 base, f32 exp) noexcept -> f32 |
| constexpr auto | cbrt (f32 val) noexcept -> f32 |
| constexpr auto | factorial (u32 n) noexcept -> u32 |
| constexpr auto | sin (rad64 angle) noexcept -> f64 |
| constexpr auto | cos (rad64 angle) noexcept -> f64 |
| constexpr auto | tan (rad64 radians) noexcept -> f64 |
| auto | atan (rad64 angle) noexcept -> f64 |
| auto | atan2 (f64 x, f64 y) noexcept -> f64 |
| template<typename T> |
| constexpr void | decompose (mat< 4, 4, T > matrix, vec3f *pos, vec3f *scale, vec< 3, rad > *angle) noexcept |
| auto | lookat (vec< 3, f32 > pos, vec< 3, f32 > target, vec< 3, f32 > up) noexcept -> mat< 4, 4, f32 > |
| template<typename Mat> |
| constexpr auto | identity () noexcept |
| template<u32 Rows1, u32 Cols1, u32 Rows2, u32 Cols2, typename T, typename U = T> |
| constexpr auto | mul (mat< Rows1, Cols1, T > left, mat< Rows2, Cols2, U > right) noexcept -> mat< Rows1, Cols2, T > |
| template<u32 Rows, u32 Cols, typename T> |
| constexpr auto | transpose (mat< Rows, Cols, T > matrix) noexcept -> mat< Cols, Rows, T > |
| template<u32 Rows, u32 Cols, typename T> |
| constexpr bool | inverse_insitu (mat< Rows, Cols, T > &m) noexcept |
| template<typename T> |
| constexpr auto | ortho_normalize (mat< 4, 4, T > matrix) noexcept -> mat< 4, 4, T > |
| template<u32 Rows1, u32 Cols1, u32 Rows2, u32 Cols2, typename T, typename U = T> |
| constexpr auto | operator* (mat< Rows1, Cols1, T > left, mat< Rows2, Cols2, U > right) noexcept -> mat< Rows1, Cols2, T > |
| auto | perspective_fovx (rad field_of_view_horizontal, f32 aspect_ratio, f32 near_plane, f32 far_plane) noexcept -> mat< 4, 4, f32 > |
| auto | perspective_fovy (rad field_of_view_vertical, f32 aspect_ratio, f32 near_plane, f32 far_plane) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | orthographic (f32 left, f32 right, f32 bottom, f32 top, f32 near_plane, f32 far_plane) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | orthographic (vec< 2, f32 > left_right, vec< 2, f32 > bottom_top, vec< 2, f32 > near_far) noexcept -> mat< 4, 4, f32 > |
| auto | rotate2d (radrad radrad) noexcept -> mat< 2, 2, f32 > |
| auto | rotate (radrad radrad, vec< 3, f32 > v) noexcept -> mat< 4, 4, f32 > |
| auto | rotate2d (mat< 2, 2, f32 > left, radrad radrad) noexcept -> mat< 2, 2, f32 > |
| auto | rotate (mat< 4, 4, f32 > left, radrad radrad, vec< 3, f32 > v) noexcept -> mat< 4, 4, f32 > |
| auto | rotation (mat< 4, 4, f32 > const &matrix) noexcept -> vec< 3, rad > |
| constexpr auto | scale2d (vec< 2, f32 > v) noexcept -> mat< 2, 2, f32 > |
| constexpr auto | scale (vec< 3, f32 > v) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | scale2d (mat< 2, 2, f32 > left, vec< 2, f32 > right) noexcept -> mat< 2, 2, f32 > |
| constexpr auto | scale (mat< 4, 4, f32 > left, vec< 3, f32 > right) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | scale (mat< 4, 4, f32 > const &matrix) noexcept -> vec< 3, f32 > |
| template<u32 Size, typename T, u8... Components> |
| constexpr auto | operator| (mat< Size, 1, T > vecvec, detail_math::swizzle< Components... >) noexcept -> mat< sizeof...(Components), 1, T > |
| constexpr auto | translate (vec< 2, f32 > displacement) noexcept -> mat< 3, 3, f32 > |
| constexpr auto | translate (vec< 3, f32 > displacement) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | translate (mat< 3, 3, f32 > left, vec< 2, f32 > right) noexcept -> mat< 3, 3, f32 > |
| constexpr auto | translate (mat< 4, 4, f32 > left, vec< 3, f32 > right) noexcept -> mat< 4, 4, f32 > |
| constexpr auto | translation (mat< 3, 3, f32 > const &matrix) noexcept -> vec< 2, f32 > |
| constexpr auto | translation (mat< 4, 4, f32 > const &matrix) noexcept -> vec< 3, f32 > |
| template<u32 Size, typename T> |
| | mat (T(&)[Size]) -> mat< Size, 1, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | add (vec< Size, T > left, vec< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | sub (vec< Size, T > left, vec< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | mul (vec< Size, T > left, U right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | div (vec< Size, T > left, U right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T> |
| constexpr auto | length (vec< Size, T > left) noexcept -> T |
| template<u32 Size, typename T> |
| constexpr auto | length2 (vec< Size, T > left) noexcept -> T |
| constexpr auto | cross (vec< 3, f32 > left, vec< 3, f32 > right) noexcept -> vec< 3, f32 > |
| constexpr auto | dot (vec< 3, f32 > left, vec< 3, f32 > right) noexcept -> f32 |
| auto | atan2 (vec< 2, f32 > point) noexcept -> rad |
template<u32 Size, typename T>
requires (Size > 1) |
| auto | normalize (vec< Size, T > value) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | apply (vec< Size, T > left, U(*fn)(T) noexcept) noexcept -> vec< Size, U > |
| template<u32 Size, typename T> |
| constexpr auto | operator- (vec< Size, T > left) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator+ (vec< Size, T > left, vec< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator- (vec< Size, T > left, vec< Size, U > right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator* (vec< Size, T > left, U right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U = T> |
| constexpr auto | operator/ (vec< Size, T > left, U right) noexcept -> vec< Size, T > |
| template<u32 Size, typename T, typename U> |
| constexpr auto | operator+= (vec< Size, T > &left, vec< Size, U > right) noexcept -> vec< Size, T > & |
| template<u32 Size, typename T, typename U> |
| constexpr auto | operator-= (vec< Size, T > &left, vec< Size, U > right) noexcept -> vec< Size, T > & |