Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenlib/BLI_math_vector.hh
| Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Lines | template<typename T, int Size> inline bool is_any_zero(const vec_base<T, Size> &a) | ||||
| for (int i = 0; i < Size; i++) { | for (int i = 0; i < Size; i++) { | ||||
| if (a[i] == T(0)) { | if (a[i] == T(0)) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| template<typename T, int Size> | |||||
| inline bool almost_equal_relative(const vec_base<T, Size> &a, | |||||
| const vec_base<T, Size> &b, | |||||
| const T &epsilon_factor) | |||||
| { | |||||
| for (int i = 0; i < Size; i++) { | |||||
| const float epsilon = epsilon_factor * math::abs(a[i]); | |||||
| if (math::distance(a[i], b[i]) > epsilon) { | |||||
| return false; | |||||
| } | |||||
| } | |||||
| return true; | |||||
| } | |||||
| template<typename T, int Size> inline vec_base<T, Size> abs(const vec_base<T, Size> &a) | template<typename T, int Size> inline vec_base<T, Size> abs(const vec_base<T, Size> &a) | ||||
| { | { | ||||
| vec_base<T, Size> result; | vec_base<T, Size> result; | ||||
| for (int i = 0; i < Size; i++) { | for (int i = 0; i < Size; i++) { | ||||
| result[i] = a[i] >= 0 ? a[i] : -a[i]; | result[i] = a[i] >= 0 ? a[i] : -a[i]; | ||||
| } | } | ||||
| return result; | return result; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 329 Lines • Show Last 20 Lines | |||||