[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43435] branches/bmesh/blender/source/ blender/editors/mesh/editbmesh_bvh.c: remove unused function

Campbell Barton ideasman42 at gmail.com
Tue Jan 17 01:45:57 CET 2012


Revision: 43435
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43435
Author:   campbellbarton
Date:     2012-01-17 00:45:51 +0000 (Tue, 17 Jan 2012)
Log Message:
-----------
remove unused function 

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c

Modified: branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c	2012-01-16 23:45:44 UTC (rev 43434)
+++ branches/bmesh/blender/source/blender/editors/mesh/editbmesh_bvh.c	2012-01-17 00:45:51 UTC (rev 43435)
@@ -375,251 +375,6 @@
 	return 1;
 }
 
-static float topo_compare(BMesh *bm, BMVert *v1, BMVert *v2)
-{
-	BMIter iter1, iter2;
-	BMEdge *e1, *e2, *cure1 = NULL, *cure2 = NULL;
-	BMLoop *l1, *l2;
-	BMVert *lastv1, *lastv2;
-	GHash *gh;
-	walklist *stack1=NULL, *stack2=NULL;
-	BLI_array_declare(stack1);
-	BLI_array_declare(stack2);
-	float vec1[3], vec2[3], minangle=FLT_MAX, w;
-	int lvl=1;
-	static int maxlevel = 3;
-
-	/*ok.  see how similar v is to v2, based on topological similaritys in the local
-	  topological neighborhood*/
-
-	/*step 1: find two edges, one that contains v and one that contains v2, with the
-	  smallest angle between the two edges*/
-
-	BM_ITER(e1, &iter1, bm, BM_EDGES_OF_VERT, v1) {
-		BM_ITER(e2, &iter2, bm, BM_EDGES_OF_VERT, v2) {
-			float angle;
-			
-			if (BM_Edge_Share_Vert(e1, e2)) {
-				continue;
-			}
-
-			sub_v3_v3v3(vec1, BM_OtherEdgeVert(e1, v1)->co, v1->co);
-			sub_v3_v3v3(vec2, BM_OtherEdgeVert(e2, v2)->co, v2->co);
-
-			angle = fabs(angle_v3v3(vec1, vec2));
-
-			if (angle < minangle) {
-				minangle = angle;
-				cure1 = e1;
-				cure2 = e2;
-			}
-		}
-	}
-
-	if (!cure1 || !cure1->l || !cure2->l) {
-		/*just return 1.0 in this case*/
-		return 1.0f;
-	}
-
-	/*assumtions
-	
-	  we assume a 2-manifold mesh here.  if at any time this isn't the case,
-	  e.g. a hole or an edge with more then 2 faces around it, we um ignore
-	  that edge I guess, and try to make the algorithm go around as necassary.*/
-
-	l1 = cure1->l;
-	l2 = cure2->l;
-
-	lastv1 = l1->v == v1 ? l1->next->v : l1->prev->v;
-	lastv2 = l2->v == v2 ? l2->next->v : l2->prev->v;
-
-	/*we can only provide meaningful comparisons if v1 and v2 have the same valence*/
-	if (BM_Vert_EdgeCount(v1) != BM_Vert_EdgeCount(v2))
-		return 1.0f; /*full mismatch*/
-
-	gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh bvh");
-
-#define SPUSH(s, d, vt, lv, e)\
-	if (BLI_array_count(s) <= lvl) BLI_array_growone(s);\
-	memset((s+lvl), 0, sizeof(*s));\
-	s[lvl].depth = d;\
-	s[lvl].v = vt;\
-	s[lvl].cure = e;\
-	s[lvl].lastv = lv;\
-	s[lvl].valence = BM_Vert_EdgeCount(vt);\
-
-	lvl = 0;
-
-	SPUSH(stack1, 0, v1, lastv1, cure1);
-	SPUSH(stack2, 0, v2, lastv2, cure2);
-
-	BLI_srand( BLI_rand() ); /* random seed */
-
-	lvl = 1;
-	while (lvl) {
-		int term = 0;
-		walklist *s1 = stack1 + lvl - 1, *s2 = stack2 + lvl - 1;
-
-		/*pop from the stack*/
-		lvl--;
-
-		if (s1->curl && s1->curl->e == s1->cure)
-			term = 1;
-		if (s2->curl && s2->curl->e == s2->cure)
-			term = 1;
-
-		/*find next case to do*/
-		if (!s1->curl)
-			s1->curl = s1->cure->l;
-		if (!s2->curl) {
-			float no1[3], no2[3], angle;
-			int wind1, wind2;
-			
-			s2->curl = s2->cure->l;
-
-			/*find which of two possible faces to use*/
-			l1 = BM_OtherFaceLoop(s1->curl->e, s1->curl->f, s1->lastv);
-			l2 = BM_OtherFaceLoop(s2->curl->e, s2->curl->f, s2->lastv);
-
-			if (l1->v == s2->lastv) {
-				l1 = l1->next;
-				if (l1->v == s2->v)
-					l1 = l1->prev->prev;
-			} else if (l1->v == s2->v) {
-				l1 = l1->next;
-				if (l1->v == s2->lastv)
-					l1 = l1->prev->prev;
-			}
-
-			if (l2->v == s2->lastv) {
-				l2 = l2->next;
-				if (l2->v == s2->v)
-					l2 = l2->prev->prev;
-			} else if (l2->v == s2->v) {
-				l2 = l2->next;
-				if (l2->v == s2->lastv)
-					l2 = l2->prev->prev;
-			}
-
-			wind1 = winding(s1->v->co, s1->lastv->co, l1->v->co);
-
-			wind2 = winding(s2->v->co, s2->lastv->co, l2->v->co);
-			
-			/*if angle between the two adjacent faces is greater then 90 degrees,
-			  we need to flip wind2*/
-			l1 = l2;
-			l2 = s2->curl->radial_next;
-			l2 = BM_OtherFaceLoop(l2->e, l2->f, s2->lastv);
-			
-			if (l2->v == s2->lastv) {
-				l2 = l2->next;
-				if (l2->v == s2->v)
-					l2 = l2->prev->prev;
-			} else if (l2->v == s2->v) {
-				l2 = l2->next;
-				if (l2->v == s2->lastv)
-					l2 = l2->prev->prev;
-			}
-
-			normal_tri_v3(no1, s2->v->co, s2->lastv->co, l1->v->co);
-			normal_tri_v3(no2, s2->v->co, s2->lastv->co, l2->v->co);
-			
-			/*enforce identical winding as no1*/
-			negate_v3(no2);
-
-			angle = angle_v3v3(no1, no2);
-			if (angle > M_PI/2 - FLT_EPSILON*2)
-				wind2 = !wind2;
-
-			if (wind1 == wind2)
-				s2->curl = s2->curl->radial_next;
-		}
-
-		/*handle termination cases of having already looped through all child
-		  nodes, or the valence mismatching between v1 and v2, or we hit max
-		  recursion depth*/
-		term |= s1->valence != s2->valence || lvl+1 > maxlevel;
-		term |= s1->curl->radial_next == l1;
-		term |= s2->curl->radial_next == l2;
-
-		if (!term) {
-			lastv1 = s1->v;
-			lastv2 = s2->v;
-			v1 = BM_OtherEdgeVert(s1->curl->e, lastv1);
-			v2 = BM_OtherEdgeVert(s2->curl->e, lastv2);
-			
-			e1 = s1->curl->e;
-			e2 = s2->curl->e;
-
-			if (!BLI_ghash_haskey(gh, v1) && !BLI_ghash_haskey(gh, v2)) {
-				/*repush the current stack item*/
-				lvl++;
-				
-				//if (maxlevel % 2 == 0) {
-					BLI_ghash_insert(gh, v1, NULL);
-					BLI_ghash_insert(gh, v2, NULL);
-				//}
-
-				/*now push the child node*/
-				SPUSH(stack1, lvl, v1, lastv1, e1);
-				SPUSH(stack2, lvl, v2, lastv2, e2);
-
-				lvl++;
-
-				s1 = stack1 + lvl - 2;
-				s2 = stack2 + lvl - 2;
-			}
-
-			s1->curl = s1->curl->v == s1->v ? s1->curl->prev : s1->curl->next;
-			s2->curl = s2->curl->v == s2->v ? s2->curl->prev : s2->curl->next;
-		
-			s1->curl = s1->curl->radial_next;
-			s2->curl = s2->curl->radial_next;
-		}
-
-#define WADD(stack, s)\
-		if (lvl) {/*silly attempt to make this non-commutative: randomize\
-			      how much this particular weight adds to the total*/\
-			stack[lvl-1].r += r;\
-			s->w *= r;\
-			stack[lvl-1].totwalked++;\
-			stack[lvl-1].w += s->w;\
-		}
-
-		/*if no next case to do, update parent weight*/
-		if (term) {
-			float r = 0.8f + BLI_frand()*0.2f - FLT_EPSILON;
-
-			if (s1->totwalked) {
-				s1->w /= s1->r;
-			} else
-				s1->w = s1->valence == s2->valence ? 1.0f : 0.0f;
-
-			WADD(stack1, s1);
-
-			if (s2->totwalked) {
-				s2->w /= s2->r;
-			} else
-				s2->w = s1->valence == s2->valence ? 1.0f : 0.0f;
-			
-			WADD(stack2, s2);
-
-			/*apply additional penalty to weight mismatch*/
-			if (s2->w != s1->w)
-				s2->w *= 0.8f;
-		}
-	}
-
-	w = (stack1[0].w + stack2[0].w)*0.5f;
-
-	BLI_array_free(stack1);
-	BLI_array_free(stack2);
-
-	BLI_ghash_free(gh, NULL, NULL);
-
-	return 1.0f - w;
-}
-
 #if 0 //BMESH_TODO: not implemented yet
 int BMBVH_VertVisible(BMBVHTree *tree, BMEdge *e, RegionView3D *r3d)
 {



More information about the Bf-blender-cvs mailing list