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