[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40182] branches/bmesh/blender/source/ blender/bmesh/operators/edgesplitop.c: some edits to make the split code easier to read, replace "j ? (i+1) % f-> len : i" with a variable since its re-used so much, no functional change.

Campbell Barton ideasman42 at gmail.com
Tue Sep 13 14:42:05 CEST 2011


Revision: 40182
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40182
Author:   campbellbarton
Date:     2011-09-13 12:42:04 +0000 (Tue, 13 Sep 2011)
Log Message:
-----------
some edits to make the split code easier to read, replace "j ? (i+1) % f->len : i" with a variable since its re-used so much, no functional change.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c

Modified: branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c	2011-09-13 10:05:30 UTC (rev 40181)
+++ branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c	2011-09-13 12:42:04 UTC (rev 40182)
@@ -282,18 +282,19 @@
 			prevl = l->prev;
 			
 			for (j=0; j<2; j++) {
+				/* correct as long as i & j dont change during the loop */
+				const int fv_index= j ? (i+1) % f->len : i; /* face vert index */
 				l2 = j ? nextl : prevl;
 				v = j ? l2->v : l->v;
 
 				if (BMO_TestFlag(bm, l2->e, EDGE_SEAM)) {
-					if (!verts[j ? (i+1) % f->len : i]) {
+					if (verts[fv_index] == NULL) {
 						/*make unique vert here for this face only*/
 						v2 = BM_Make_Vert(bm, v->co, v);
-
-						verts[j ? (i+1) % f->len : i] = v2;
+						verts[fv_index] = v2;
 					}
 					else {
-						v2 = verts[j ? (i+1) % f->len : i];
+						v2 = verts[fv_index];
 					}
 				}
 				else {
@@ -340,10 +341,10 @@
 							v2 = ETV(et, v, l2);
 						}
 
-						verts[j ? (i+1) % f->len : i] = v2;
+						verts[fv_index] = v2;
 					}
 					else {
-						verts[j ? (i+1) % f->len : i] = v;
+						verts[fv_index] = v;
 					}
 				}
 			}
@@ -351,7 +352,31 @@
 			i++;
 		}
 
-		f2 = remake_face(bm, etags, f, verts);
+		/* debugging code, quick way to find the face/vert combination
+		 * which is failing assuming quads start planer - campbell */
+#if 0
+		if(f->len == 4) {
+			float no1[3];
+			float no2[3];
+			float angle_error;
+			printf(" ** found QUAD\n");
+			normal_tri_v3(no1, verts[0]->co, verts[1]->co, verts[2]->co);
+			normal_tri_v3(no2, verts[0]->co, verts[2]->co, verts[3]->co);
+			if((angle_error= angle_v3v3(no1, no2)) > 0.05) {
+				printf("     ERROR %.4f\n", angle_error);
+				print_v3("0", verts[0]->co);
+				print_v3("1", verts[1]->co);
+				print_v3("2", verts[2]->co);
+				print_v3("3", verts[3]->co);
+
+			}
+		}
+		else {
+			printf(" ** fount %d len face\n", f->len);
+		}
+#endif
+
+		f2 = remake_face(bm, etags, f, verts); /* clobbers 'verts', */
 		if (!f2) {
 			continue;
 		}
@@ -362,8 +387,8 @@
 	
 	BMO_CallOpf(bm, "del geom=%ff context=%i", FACE_DEL, DEL_ONLYFACES);
 
-	/*test EDGE_MARK'd edges if we need to delete them, EDGE_MARK
-	  is set in remake_face*/
+	/* test EDGE_MARK'd edges if we need to delete them, EDGE_MARK
+	 * is set in remake_face */
 	BM_ITER(e, &iter, bm, BM_EDGES_OF_MESH, NULL) {
 		if (BMO_TestFlag(bm, e, EDGE_MARK)) {
 			if (!e->l) {




More information about the Bf-blender-cvs mailing list