Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2007-11-21 01:25:25 +0300
committerMartin Poirier <theeth@yahoo.com>2007-11-21 01:25:25 +0300
commit11fc4432b96263965bb0ec47f4a0eb133d5efc6c (patch)
tree530f99bfa77f20246d9c2c2f82e5afde158abe32 /source/blender/src/reeb.c
parent45e14ed270c1d64c46a4f5423184d07e995a2e44 (diff)
Adding subdivisions by correlation.
This is much nicer than subdivision by angle but is somewhat less intuitive for users. Added Bucket arc iterator, removing a lot of weird duplicated code in skeleton generator.
Diffstat (limited to 'source/blender/src/reeb.c')
-rw-r--r--source/blender/src/reeb.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/source/blender/src/reeb.c b/source/blender/src/reeb.c
index d836b4ca25e..54b56065d06 100644
--- a/source/blender/src/reeb.c
+++ b/source/blender/src/reeb.c
@@ -1922,6 +1922,62 @@ void weightToVCol(EditMesh *em)
}
}
+/****************************************** BUCKET ITERATOR **************************************************/
+
+void initArcIterator(ReebArcIterator *iter, ReebArc *arc, ReebNode *head)
+{
+ iter->arc = arc;
+
+ if (head == arc->v1)
+ {
+ iter->start = 0;
+ iter->end = arc->bcount - 1;
+ iter->stride = 1;
+ }
+ else
+ {
+ iter->start = arc->bcount - 1;
+ iter->end = 0;
+ iter->stride = -1;
+ }
+
+ iter->index = iter->start - iter->stride;
+}
+
+void initArcIterator2(ReebArcIterator *iter, ReebArc *arc, int start, int end)
+{
+ iter->arc = arc;
+
+ iter->start = start;
+ iter->end = end;
+
+ if (end > start)
+ {
+ iter->stride = 1;
+ }
+ else
+ {
+ iter->stride = -1;
+ }
+
+ iter->index = iter->start - iter->stride;
+}
+
+EmbedBucket * nextBucket(ReebArcIterator *iter)
+{
+ EmbedBucket *result = NULL;
+
+ if (iter->index != iter->end)
+ {
+ iter->index += iter->stride;
+ result = &(iter->arc->buckets[iter->index]);
+ }
+
+ return result;
+}
+
+/****************************************** MAIN EDIT METHOD **************************************************/
+
void generateSkeleton(void)
{
EditMesh *em = G.editMesh;