Revision: 16209
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16209
Author:   theeth
Date:     2008-08-21 20:12:36 +0200 (Thu, 21 Aug 2008)

Log Message:
-----------
Vertice outside of faces would create zero degree nodes and mess up later.

Do a single pass to remove those after reeb graph creation (but before 
filtering).

Modified Paths:
--------------
    branches/harmonic-skeleton/source/blender/src/reeb.c

Modified: branches/harmonic-skeleton/source/blender/src/reeb.c
===================================================================
--- branches/harmonic-skeleton/source/blender/src/reeb.c        2008-08-21 
17:28:58 UTC (rev 16208)
+++ branches/harmonic-skeleton/source/blender/src/reeb.c        2008-08-21 
18:12:36 UTC (rev 16209)
@@ -1296,7 +1296,6 @@
                                merging = 2;
                        }
                        
-
                        if (merging)
                        {
                                BLI_ReflagSubgraph((BGraph*)rg, end_node->flag, 
subgraph);
@@ -1978,22 +1977,22 @@
 
 /***************************************** MAIN ALGORITHM 
**********************************************/
 
-ReebArc * findConnectedArc(ReebGraph *rg, ReebArc *arc, ReebNode *v)
+/* edges alone will create zero degree nodes, use this function to remove them 
*/
+void removeZeroNodes(ReebGraph *rg)
 {
-       ReebArc *nextArc = arc->next;
+       ReebNode *node, *next_node;
        
-       for(nextArc = rg->arcs.first; nextArc; nextArc = nextArc->next)
+       for (node = rg->nodes.first; node; node = next_node)
        {
-               if (arc != nextArc && (nextArc->head == v || nextArc->tail == 
v))
+               next_node = node->next;
+               
+               if (node->degree == 0)
                {
-                       break;
+                       BLI_removeNode((BGraph*)rg, (BNode*)node);
                }
        }
-       
-       return nextArc;
 }
 
-
 void removeNormalNodes(ReebGraph *rg)
 {
        ReebArc *arc, *nextArc;
@@ -2539,9 +2538,10 @@
        
        printf("\n");
        
-       
        BLI_listbase_from_dlist(dlist, &rg->nodes);
        
+       removeZeroNodes(rg);
+       
        removeNormalNodes(rg);
        
        return rg;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to