[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57788] trunk/blender/source/blender/bmesh /intern/bmesh_polygon.c: avoid calling axis_dominant_v3_to_m3 twice from BM_face_legal_splits

Campbell Barton ideasman42 at gmail.com
Wed Jun 26 23:17:10 CEST 2013


Revision: 57788
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57788
Author:   campbellbarton
Date:     2013-06-26 21:17:10 +0000 (Wed, 26 Jun 2013)
Log Message:
-----------
avoid calling axis_dominant_v3_to_m3 twice from BM_face_legal_splits

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-06-26 20:51:41 UTC (rev 57787)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-06-26 21:17:10 UTC (rev 57788)
@@ -1027,11 +1027,13 @@
  */
 void BM_face_legal_splits(BMFace *f, BMLoop *(*loops)[2], int len)
 {
+	const int len2 = len * 2;
 	BMLoop *l;
 	float v1[3], v2[3], v3[3] /*, v4[3 */, no[3], mid[3], *p1, *p2, *p3, *p4;
 	float out[3] = {-FLT_MAX, -FLT_MAX, 0.0f};
+	float axis_mat[3][3];
 	float (*projverts)[3] = BLI_array_alloca(projverts, f->len);
-	float (*edgeverts)[3] = BLI_array_alloca(edgeverts, len * 2);
+	float (*edgeverts)[3] = BLI_array_alloca(edgeverts, len2);
 	float fac1 = 1.0000001f, fac2 = 0.9f; //9999f; //0.999f;
 	int i, j, a = 0, clen;
 	
@@ -1053,9 +1055,16 @@
 	}
 	
 	calc_poly_normal(no, projverts, f->len);
-	poly_rotate_plane(no, projverts, f->len);
-	poly_rotate_plane(no, edgeverts, len * 2);
+	if (axis_dominant_v3_to_m3(axis_mat, no)) {
+		for (i = 0; i < f->len; i++) {
+			mul_m3_v3(axis_mat, projverts[i]);
+		}
 
+		for (i = 0; i < len2; i++) {
+			mul_m3_v3(axis_mat, edgeverts[i]);
+		}
+	}
+
 	for (i = 0, l = BM_FACE_FIRST_LOOP(f); i < f->len; i++, l = l->next) {
 		p1 = projverts[i];
 		out[0] = max_ff(out[0], p1[0]);




More information about the Bf-blender-cvs mailing list