Blender  V3.3
Classes | Namespaces | Macros | Functions
BLI_math_vector.hh File Reference
#include <cmath>
#include <type_traits>
#include "BLI_math_base.hh"
#include "BLI_math_vec_types.hh"
#include "BLI_span.hh"
#include "BLI_utildefines.h"

Go to the source code of this file.

Classes

struct  blender::math::isect_result< T >
 

Namespaces

 blender
 
 blender::math
 

Macros

#define BLI_ASSERT_UNIT(v)
 

Functions

template<typename T , int Size>
bool blender::math::is_zero (const vec_base< T, Size > &a)
 
template<typename T , int Size>
bool blender::math::is_any_zero (const vec_base< T, Size > &a)
 
template<typename T , int Size>
bool blender::math::almost_equal_relative (const vec_base< T, Size > &a, const vec_base< T, Size > &b, const T &epsilon_factor)
 
template<typename T , int Size>
vec_base< T, Size > blender::math::abs (const vec_base< T, Size > &a)
 
template<typename T , int Size>
vec_base< T, Size > blender::math::min (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size>
vec_base< T, Size > blender::math::max (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size>
vec_base< T, Size > blender::math::clamp (const vec_base< T, Size > &a, const vec_base< T, Size > &min, const vec_base< T, Size > &max)
 
template<typename T , int Size>
vec_base< T, Size > blender::math::clamp (const vec_base< T, Size > &a, const T &min, const T &max)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::mod (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::mod (const vec_base< T, Size > &a, const T &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::safe_mod (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::safe_mod (const vec_base< T, Size > &a, const T &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_integral_type< T >)) >
vec_base< T, Size > blender::math::ceil_to_multiple (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_integral_type< T >)) >
vec_base< T, Size > blender::math::divide_ceil (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size>
void blender::math::min_max (const vec_base< T, Size > &vector, vec_base< T, Size > &min, vec_base< T, Size > &max)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::safe_divide (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::safe_divide (const vec_base< T, Size > &a, const T &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::floor (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::ceil (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::fract (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::dot (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size>
T blender::math::length_manhattan (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::length_squared (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::length (const vec_base< T, Size > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::distance_manhattan (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::distance_squared (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
T blender::math::distance (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::reflect (const vec_base< T, Size > &incident, const vec_base< T, Size > &normal)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::refract (const vec_base< T, Size > &incident, const vec_base< T, Size > &normal, const T &eta)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::project (const vec_base< T, Size > &p, const vec_base< T, Size > &v_proj)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::normalize_and_get_length (const vec_base< T, Size > &v, T &out_length)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::normalize (const vec_base< T, Size > &v)
 
template<typename T , BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, 3 > blender::math::cross (const vec_base< T, 3 > &a, const vec_base< T, 3 > &b)
 
vec_base< float, 3 > blender::math::cross_high_precision (const vec_base< float, 3 > &a, const vec_base< float, 3 > &b)
 
template<typename T , BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, 3 > blender::math::cross_poly (Span< vec_base< T, 3 >> poly)
 
template<typename T , typename FactorT , int Size, BLI_ENABLE_IF((is_math_float_type< FactorT >)) >
vec_base< T, Size > blender::math::interpolate (const vec_base< T, Size > &a, const vec_base< T, Size > &b, const FactorT &t)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::midpoint (const vec_base< T, Size > &a, const vec_base< T, Size > &b)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
vec_base< T, Size > blender::math::faceforward (const vec_base< T, Size > &vector, const vec_base< T, Size > &incident, const vec_base< T, Size > &reference)
 
template<typename T >
int blender::math::dominant_axis (const vec_base< T, 3 > &a)
 
template<typename T , int Size, BLI_ENABLE_IF((is_math_float_type< T >)) >
isect_result< vec_base< T, Size > > blender::math::isect_seg_seg (const vec_base< T, Size > &v1, const vec_base< T, Size > &v2, const vec_base< T, Size > &v3, const vec_base< T, Size > &v4)
 

Macro Definition Documentation

◆ BLI_ASSERT_UNIT

#define BLI_ASSERT_UNIT (   v)
Value:
{ \
const float _test_unit = length_squared(v); \
BLI_assert(!(std::abs(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON) || \
!(std::abs(_test_unit) >= BLI_ASSERT_UNIT_EPSILON)); \
} \
(void)0
#define BLI_ASSERT_UNIT_EPSILON
ATTR_WARN_UNUSED_RESULT const BMVert * v
SyclQueue void void size_t num_bytes void
vec_base< T, Size > abs(const vec_base< T, Size > &a)
T length_squared(const vec_base< T, Size > &a)

Definition at line 21 of file BLI_math_vector.hh.