Revision: 15574
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15574
Author:   theeth
Date:     2008-07-14 22:30:23 +0200 (Mon, 14 Jul 2008)

Log Message:
-----------
Subgraph joins to non-terminal nodes

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-07-14 
19:05:25 UTC (rev 15573)
+++ branches/harmonic-skeleton/source/blender/src/reeb.c        2008-07-14 
20:30:23 UTC (rev 15574)
@@ -1073,6 +1073,8 @@
        arc->tail->weight = start_weight + delta_weight;
        
        reweightBuckets(arc);
+       resizeArcBuckets(arc);
+       fillArcEmptyBuckets(arc);
        
        /* recurse here */
 } 
@@ -1093,15 +1095,17 @@
        
        for (subgraph = 1; subgraph <= nb_subgraphs; subgraph++)
        {
-               ReebNode *start_node, *end_node;
+               ReebNode *start_node, *end_node, *next_node;
                
-               for (start_node = rg->nodes.first; start_node; start_node = 
start_node->next)
+               for (start_node = rg->nodes.first; start_node; start_node = 
next_node)
                {
+                       next_node = start_node->next;
+                       
                        if (start_node->flag == subgraph && start_node->degree 
== 1)
                        {
                                for (end_node = rg->nodes.first; end_node; 
end_node = end_node->next)
                                {
-                                       if (end_node->flag != subgraph && 
end_node->degree == 1 && VecLenf(start_node->p, end_node->p) < threshold)
+                                       if (end_node->flag != subgraph && 
VecLenf(start_node->p, end_node->p) < threshold)
                                        {
                                                break;
                                        }
@@ -1119,7 +1123,7 @@
                                        {
                                                reweightSubgraph(rg, end_node, 
start_node->weight);
                                                
-                                               end_arc->head = start_node;
+                                               start_arc->tail = end_node;
                                                
                                                merging = 1;
                                        }
@@ -1127,7 +1131,7 @@
                                        {
                                                reweightSubgraph(rg, 
start_node, end_node->weight);
 
-                                               end_arc->tail = start_node;
+                                               start_arc->head = end_node;
 
                                                merging = 1;
                                        }
@@ -1135,12 +1139,12 @@
 
                                        if (merging)
                                        {                                       
-                                               resizeArcBuckets(end_arc);
-                                               fillArcEmptyBuckets(end_arc);
+                                               resizeArcBuckets(start_arc);
+                                               fillArcEmptyBuckets(start_arc);
                                                
-                                               NodeDegreeIncrement(rg, 
start_node);
+                                               NodeDegreeIncrement(rg, 
end_node);
                                                
-                                               BLI_removeNode((BGraph*)rg, 
(BNode*)end_node);
+                                               BLI_removeNode((BGraph*)rg, 
(BNode*)start_node);
                                        }
                                        
                                        joined = 1;


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

Reply via email to