diff options
author | Campbell Barton <ideasman42@gmail.com> | 2017-09-26 05:14:46 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2017-09-26 05:14:46 +0300 |
commit | e40e29cd38afdfd3e5e60712f97c4c3f92874058 (patch) | |
tree | f610095166ddf06729265c592ee51c2657749b2c /source | |
parent | 293dc4e084ebd248b85e0ce11bf42c307669d80f (diff) |
Fix T52871: beauty fill error
Only lock tri's facing different directions.
Needed because scanfill creates zero area faces.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenlib/intern/polyfill2d_beautify.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source/blender/blenlib/intern/polyfill2d_beautify.c b/source/blender/blenlib/intern/polyfill2d_beautify.c index 287fe3c817e..b563e286a48 100644 --- a/source/blender/blenlib/intern/polyfill2d_beautify.c +++ b/source/blender/blenlib/intern/polyfill2d_beautify.c @@ -149,16 +149,15 @@ float BLI_polyfill_beautify_quad_rotate_calc_ex( * - Area sign flipping to check faces aren't going to point in opposite directions. * - Area epsilon check that the one of the faces won't be zero area. */ - if (((area_2x_123 >= 0.0f) != (area_2x_134 >= 0.0f)) || - (fabsf(area_2x_123) <= FLT_EPSILON) || (fabsf(area_2x_134) <= FLT_EPSILON)) - { + if ((area_2x_123 >= 0.0f) != (area_2x_134 >= 0.0f)) { + break; + } + else if ((fabsf(area_2x_123) <= FLT_EPSILON) || (fabsf(area_2x_134) <= FLT_EPSILON)) { break; } /* Test for unusable (2-4) state (same as above). */ - if (((area_2x_234 >= 0.0f) != (area_2x_241 >= 0.0f)) || - ((fabsf(area_2x_234) <= FLT_EPSILON) || (fabsf(area_2x_241) <= FLT_EPSILON))) - { + if ((area_2x_234 >= 0.0f) != (area_2x_241 >= 0.0f)) { if (lock_degenerate) { break; } @@ -166,6 +165,9 @@ float BLI_polyfill_beautify_quad_rotate_calc_ex( return -FLT_MAX; /* always rotate */ } } + else if ((fabsf(area_2x_234) <= FLT_EPSILON) || (fabsf(area_2x_241) <= FLT_EPSILON)) { + return -FLT_MAX; /* always rotate */ + } { /* testing rule: the area divided by the perimeter, |