[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15574] branches/harmonic-skeleton/source/ blender/src/reeb.c: Subgraph joins to non-terminal nodes

Martin Poirier theeth at yahoo.com
Mon Jul 14 22:30:25 CEST 2008


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;





More information about the Bf-blender-cvs mailing list