Fix BLI_ASSERT_UNIT macro w/ non-finite numbers
This commit is contained in:
parent
70b705b5fe
commit
0e68751b8a
@ -200,24 +200,28 @@ double double_round(double x, int ndigits);
|
||||
* check the vector is unit length, or zero length (which can't be helped in some cases).
|
||||
*/
|
||||
#ifndef NDEBUG
|
||||
/* note: 0.0001 is too small becaues normals may be converted from short's: see [#34322] */
|
||||
/** \note 0.0001 is too small becaues normals may be converted from short's: see T34322. */
|
||||
# define BLI_ASSERT_UNIT_EPSILON 0.0002f
|
||||
/**
|
||||
* \note Checks are flipped so NAN doesn't assert. This is done because we're making sure the value was normalized
|
||||
* and in the case we don't want NAN to be raising asserts since there is nothing to be done in that case.
|
||||
*/
|
||||
# define BLI_ASSERT_UNIT_V3(v) { \
|
||||
const float _test_unit = len_squared_v3(v); \
|
||||
BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON) || \
|
||||
(fabsf(_test_unit) < BLI_ASSERT_UNIT_EPSILON)); \
|
||||
BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON) || \
|
||||
!(fabsf(_test_unit) >= BLI_ASSERT_UNIT_EPSILON)); \
|
||||
} (void)0
|
||||
|
||||
# define BLI_ASSERT_UNIT_V2(v) { \
|
||||
const float _test_unit = len_squared_v2(v); \
|
||||
BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON) || \
|
||||
(fabsf(_test_unit) < BLI_ASSERT_UNIT_EPSILON)); \
|
||||
BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON) || \
|
||||
!(fabsf(_test_unit) >= BLI_ASSERT_UNIT_EPSILON)); \
|
||||
} (void)0
|
||||
|
||||
# define BLI_ASSERT_UNIT_QUAT(q) { \
|
||||
const float _test_unit = dot_qtqt(q, q); \
|
||||
BLI_assert((fabsf(_test_unit - 1.0f) < BLI_ASSERT_UNIT_EPSILON * 10) || \
|
||||
(fabsf(_test_unit) < BLI_ASSERT_UNIT_EPSILON * 10)); \
|
||||
BLI_assert(!(fabsf(_test_unit - 1.0f) >= BLI_ASSERT_UNIT_EPSILON * 10) || \
|
||||
!(fabsf(_test_unit) >= BLI_ASSERT_UNIT_EPSILON * 10)); \
|
||||
} (void)0
|
||||
|
||||
# define BLI_ASSERT_ZERO_M3(m) { \
|
||||
|
Loading…
Reference in New Issue
Block a user