Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2017-09-26 05:14:46 +0300
committerCampbell Barton <ideasman42@gmail.com>2017-09-26 05:14:46 +0300
commite40e29cd38afdfd3e5e60712f97c4c3f92874058 (patch)
treef610095166ddf06729265c592ee51c2657749b2c /source
parent293dc4e084ebd248b85e0ce11bf42c307669d80f (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.c14
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,