diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-03-06 19:18:10 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2020-03-09 16:47:59 +0300 |
commit | 598ab525da3df3fef2033c159c570688c7282a8f (patch) | |
tree | ba2bd0b8fc6ee5d264512bf655def1a6ee5d7b31 /source/blender/blenkernel/intern/collision.c | |
parent | ee5d7bc16b243f309c84bce5deddf3a86b7f4c14 (diff) |
Cleanup: Replace ABS/SQUARE/CUBE with function calls
While it might be handy to have type-less functionality which is
similar to how C++ math is implemented it can not be easily achieved
with just preprocessor in a way which does not have side-effects on
wrong usage.
There macros where often used on a non-trivial expression, and there
was at least one usage where it was causing an actual side effect/bug
on Windows (see change around square_f(sh[index++]) in studiolight.c).
For such cases it is handy to have a function which is guaranteed to
have zero side-effects. The motivation behind actually removing the
macros is that there is already a way to do similar calculation. Also,
not having such macros is a way to guarantee that its usage is not
changed in a way which have side-effects and that it's not used as an
inspiration for cases where it should not be used.
Differential Revision: https://developer.blender.org/D7051
Diffstat (limited to 'source/blender/blenkernel/intern/collision.c')
-rw-r--r-- | source/blender/blenkernel/intern/collision.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c index 987791db101..62ad361570c 100644 --- a/source/blender/blenkernel/intern/collision.c +++ b/source/blender/blenkernel/intern/collision.c @@ -625,7 +625,7 @@ static void collision_compute_barycentric(const float pv[3], d = (a * c - b * b); - if (ABS(d) < (double)ALMOST_ZERO) { + if (fabs(d) < (double)ALMOST_ZERO) { *w1 = *w2 = *w3 = 1.0 / 3.0; return; } @@ -856,18 +856,18 @@ static int cloth_collision_response_static(ClothModifierData *clmd, for (int j = 0; j < 3; j++) { if (cloth1->verts[collpair->ap1].impulse_count > 0 && - ABS(cloth1->verts[collpair->ap1].impulse[j]) < ABS(i1[j])) { + fabsf(cloth1->verts[collpair->ap1].impulse[j]) < fabsf(i1[j])) { cloth1->verts[collpair->ap1].impulse[j] = i1[j]; } if (cloth1->verts[collpair->ap2].impulse_count > 0 && - ABS(cloth1->verts[collpair->ap2].impulse[j]) < ABS(i2[j])) { + fabsf(cloth1->verts[collpair->ap2].impulse[j]) < fabsf(i2[j])) { cloth1->verts[collpair->ap2].impulse[j] = i2[j]; } if (!is_hair) { if (cloth1->verts[collpair->ap3].impulse_count > 0 && - ABS(cloth1->verts[collpair->ap3].impulse[j]) < ABS(i3[j])) { + fabsf(cloth1->verts[collpair->ap3].impulse[j]) < fabsf(i3[j])) { cloth1->verts[collpair->ap3].impulse[j] = i3[j]; } } @@ -888,15 +888,15 @@ static void cloth_selfcollision_impulse_vert(const float clamp_sq, return; } - if (ABS(vert->impulse[0]) < ABS(impulse[0])) { + if (fabsf(vert->impulse[0]) < fabsf(impulse[0])) { vert->impulse[0] = impulse[0]; } - if (ABS(vert->impulse[1]) < ABS(impulse[1])) { + if (fabsf(vert->impulse[1]) < fabsf(impulse[1])) { vert->impulse[1] = impulse[1]; } - if (ABS(vert->impulse[2]) < ABS(impulse[2])) { + if (fabsf(vert->impulse[2]) < fabsf(impulse[2])) { vert->impulse[2] = impulse[2]; } |