[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