[Bf-blender-cvs] [c2c4e02] master: Fix T45620: Coplanar faces w/ flipped normals not selected

Campbell Barton noreply at git.blender.org
Mon Aug 3 12:53:36 CEST 2015


Commit: c2c4e02d4188347aafb5be173be482a21c17b5f2
Author: Campbell Barton
Date:   Mon Aug 3 20:44:41 2015 +1000
Branches: master
https://developer.blender.org/rBc2c4e02d4188347aafb5be173be482a21c17b5f2

Fix T45620: Coplanar faces w/ flipped normals not selected

===================================================================

M	source/blender/bmesh/operators/bmo_similar.c

===================================================================

diff --git a/source/blender/bmesh/operators/bmo_similar.c b/source/blender/bmesh/operators/bmo_similar.c
index 825a158..708d57a 100644
--- a/source/blender/bmesh/operators/bmo_similar.c
+++ b/source/blender/bmesh/operators/bmo_similar.c
@@ -207,16 +207,23 @@ void bmo_similar_faces_exec(BMesh *bm, BMOperator *op)
 						break;
 
 					case SIMFACE_COPLANAR:
+					{
+						float sign = 1.0f;
 						angle = angle_normalized_v3v3(fs->no, fm->no); /* angle -> 0 */
+						/* allow for normal pointing in either direction (just check the plane) */
+						if (angle > (float)M_PI * 0.5f) {
+							angle = (float)M_PI - angle;
+							sign = -1.0f;
+						}
 						if (angle <= thresh_radians) { /* and dot product difference -> 0 */
-							delta_fl = f_ext[i].d - f_ext[indices[idx]].d;
+							delta_fl = f_ext[i].d - (f_ext[indices[idx]].d * sign);
 							if (bm_sel_similar_cmp_fl(delta_fl, thresh, compare)) {
 								BMO_elem_flag_enable(bm, fm, FACE_MARK);
 								cont = false;
 							}
 						}
 						break;
-
+					}
 					case SIMFACE_AREA:
 						delta_fl = f_ext[i].area - f_ext[indices[idx]].area;
 						if (bm_sel_similar_cmp_fl(delta_fl, thresh, compare)) {




More information about the Bf-blender-cvs mailing list