2 of the 3 places that check 2 edges share a vertex were incorrect (silly mistake)
authorCampbell Barton <ideasman42@gmail.com>
Mon, 28 Nov 2011 00:27:26 +0000 (00:27 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 28 Nov 2011 00:27:26 +0000 (00:27 +0000)
    so make into a function: BM_Edge_Share_Vert()

source/blender/bmesh/bmesh_queries.h
source/blender/bmesh/intern/bmesh_eulers.c
source/blender/bmesh/intern/bmesh_newcore.c
source/blender/bmesh/intern/bmesh_queries.c
source/blender/bmesh/operators/createops.c
source/blender/bmesh/operators/subdivideop.c
source/blender/editors/mesh/editbmesh_bvh.c

index 0db4a5f7e247d248ec8e92a49379d19283fa4632..6edd4f6b59e025000551707c1f727d78cbd8418a 100644 (file)
@@ -74,11 +74,14 @@ int BM_Face_Exists(BMesh *bm, BMVert **varr, int len, BMFace **existface);
 
 
 /*returns number of edges f1 and f2 share.*/
-int BM_Face_Sharededges(struct BMFace *f1, struct BMFace *f2);
+int BM_Face_Share_Edges(struct BMFace *f1, struct BMFace *f2);
 
 /*returns number of faces e1 and e2 share.*/
 int BM_Edge_Share_Faces(struct BMEdge *e1, struct BMEdge *e2);
 
+/*returns bool 1/0 if the edges share a vertex */
+int BM_Edge_Share_Vert(struct BMEdge *e1, struct BMEdge *e2);
+
 /*edge verts in winding order from face*/
 void BM_Edge_OrderedVerts(struct BMEdge *edge, struct BMVert **r_v1, struct BMVert **r_v2);
 
index 2caf2a09782e59dedf450489595ade2534add4a2..25d9d22b2ceb65f342c9a5fd32618a75a427f675 100644 (file)
@@ -977,7 +977,7 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
        if(bmesh_radial_find_face( ((f2loop->prev))->e,f1)) return NULL;
        
        /*validate only one shared edge*/
-       shared = BM_Face_Sharededges(f1,f2);
+       shared = BM_Face_Share_Edges(f1,f2);
        if(shared > 1) return NULL;
 
        /*validate no internal joins*/
index b339421118b0b215efb90ad1257290c73bc88bcc..3cfbb88ff52d46c43f9c4c47a81b7daa8e99111a 100644 (file)
@@ -1453,7 +1453,7 @@ BMFace *bmesh_jfke(BMesh *bm, BMFace *f1, BMFace *f2, BMEdge *e)
        if(bmesh_radial_find_face(f2loop->prev->e,f1)) return NULL;
        
        /*validate only one shared edge*/
-       shared = BM_Face_Sharededges(f1,f2);
+       shared = BM_Face_Share_Edges(f1,f2);
        if(shared > 1) return NULL;
 
        /*validate no internal joins*/
index 41c26f6d301b11cd22ecd0b0bc32447f6fdc0e08..a63fccffc6a5fc59989b5158160d8ffeb739cb97 100644 (file)
@@ -403,7 +403,7 @@ int BM_Boundary_Edge(BMEdge *e)
  *     Integer
  */
 
-int BM_Face_Sharededges(BMFace *f1, BMFace *f2)
+int BM_Face_Share_Edges(BMFace *f1, BMFace *f2)
 {
        BMLoop *l;
        int count = 0;
@@ -443,6 +443,22 @@ int BM_Edge_Share_Faces(BMEdge *e1, BMEdge *e2)
        return 0;
 }
 
+/**
+ *
+ *           BMESH EDGE SHARE A VERTEX
+ *
+ *     Tests to see if e1 shares a vertex with e2
+ *
+*/
+
+int BM_Edge_Share_Vert(struct BMEdge *e1, struct BMEdge *e2)
+{
+       return (e1->v1 == e2->v1 ||
+               e1->v1 == e2->v2 ||
+               e1->v2 == e2->v1 ||
+               e1->v2 == e2->v2);
+}
+
 /**
  *
  *           BMESH EDGE ORDERED VERTS
index 6cd1d0c27d71e4086a7849b79ab056c2cbe70887..e592611b935f834e12c07cf9288c8d04be604028 100644 (file)
@@ -1092,10 +1092,8 @@ void bmesh_edgenet_prepare(BMesh *bm, BMOperator *op)
                count++;
        }
 
-#define EDGECON(e1, e2) (e1->v1 == e2->v1 || e1->v2 == e2->v2 || e1->v1 == e2->v2)
-
-       if (edges1 && BLI_array_count(edges1) > 2 && EDGECON(edges1[0], edges1[BLI_array_count(edges1)-1])) {
-               if (edges2 && BLI_array_count(edges2) > 2 && EDGECON(edges2[0], edges2[BLI_array_count(edges2)-1])) {
+       if (edges1 && BLI_array_count(edges1) > 2 && BM_Edge_Share_Vert(edges1[0], edges1[BLI_array_count(edges1)-1])) {
+               if (edges2 && BLI_array_count(edges2) > 2 && BM_Edge_Share_Vert(edges2[0], edges2[BLI_array_count(edges2)-1])) {
                        BLI_array_free(edges1);
                        BLI_array_free(edges2);
                        return;
@@ -1105,7 +1103,7 @@ void bmesh_edgenet_prepare(BMesh *bm, BMOperator *op)
                }
        }
 
-       if (edges2 && BLI_array_count(edges2) > 2 && EDGECON(edges2[0], edges2[BLI_array_count(edges2)-1])) {
+       if (edges2 && BLI_array_count(edges2) > 2 && BM_Edge_Share_Vert(edges2[0], edges2[BLI_array_count(edges2)-1])) {
                edges2 = NULL;
        }
 
@@ -1175,8 +1173,6 @@ void bmesh_edgenet_prepare(BMesh *bm, BMOperator *op)
 
        BLI_array_free(edges1);
        BLI_array_free(edges2);
-
-#undef EDGECON
 }
 
 /*this is essentially new fkey*/
index ca1935bde93a5dfd2ab595e091a14be1d0a7db93..10a18addfebd9bcce71d015675a3c47d41c5a1ee 100644 (file)
@@ -878,8 +878,7 @@ void esubdivide_exec(BMesh *bmesh, BMOperator *op)
                }
 
                /*make sure the two edges have a valid angle to each other*/
-               if (totesel == 2 && (e1->v1 == e2->v1 || e1->v1 == e2->v2 
-                                    || e1->v2 == e2->v1 || e1->v2 == e2->v1)) {
+               if (totesel == 2 && BM_Edge_Share_Vert(e1, e2)) {
                        float angle;
 
                        sub_v3_v3v3(vec1, e1->v2->co, e1->v1->co);
index 7649550ba622f27d0d86a522bd9fe58e53dece1e..7515ba903ac0b6ccd665d0dc36ee7f56a450c02f 100644 (file)
@@ -399,8 +399,9 @@ static float topo_compare(BMesh *bm, BMVert *v1, BMVert *v2)
                BM_ITER(e2, &iter2, bm, BM_EDGES_OF_VERT, v2) {
                        float angle;
                        
-                       if (e1->v1 == e2->v1 || e1->v2 == e2->v2 || e1->v1 == e2->v2 || e1->v2 == e2->v1)
+                       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);