[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