summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-12-06 15:39:31 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-12-06 15:39:31 +0000
commit52fcab2607d499c642bd9d382e21685b795fd5c5 (patch)
treeedd258b3d317c7a9f53a98fc74a44b054c5d7a46
parent2da2153c77c9a61828ab3c2fd3f346bad1182fe5 (diff)
Fixed 'Fractal' demo. Tree's were not random at all.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7961 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--test/fractals.cxx17
1 files changed, 8 insertions, 9 deletions
diff --git a/test/fractals.cxx b/test/fractals.cxx
index 4892d6180..2bf32ca44 100644
--- a/test/fractals.cxx
+++ b/test/fractals.cxx
@@ -312,7 +312,7 @@ long TreeSeed; /* for srand48 - remember so we can build "same tree"
/*
* recursive tree drawing thing, fleshed out from class notes pseudocode
*/
-void FractalTree(int level)
+void FractalTree(int level, long level_seed)
{
long savedseed; /* need to save seeds while building tree too */
@@ -328,26 +328,25 @@ void FractalTree(int level)
glTranslatef(0, 1, 0);
glScalef(0.7, 0.7, 0.7);
- savedseed = (long)((ulong)drand48()*ULONG_MAX);
+ srand48(level_seed+1);
glPushMatrix();
glRotatef(110 + drand48()*40, 0, 1, 0);
glRotatef(30 + drand48()*20, 0, 0, 1);
- FractalTree(level + 1);
+ FractalTree(level + 1, level_seed+4);
glPopMatrix();
- srand48(savedseed);
- savedseed = (long)((ulong)drand48()*ULONG_MAX);
+ srand48(level_seed+2);
glPushMatrix();
glRotatef(-130 + drand48()*40, 0, 1, 0);
glRotatef(30 + drand48()*20, 0, 0, 1);
- FractalTree(level + 1);
+ FractalTree(level + 1, level_seed+5);
glPopMatrix();
- srand48(savedseed);
+ srand48(level_seed+3);
glPushMatrix();
glRotatef(-20 + drand48()*40, 0, 1, 0);
glRotatef(30 + drand48()*20, 0, 0, 1);
- FractalTree(level + 1);
+ FractalTree(level + 1, level_seed+6);
glPopMatrix();
glPopMatrix();
@@ -421,7 +420,7 @@ void CreateTree(void)
glPushAttrib(GL_LIGHTING_BIT);
glCallList(TREE_MAT);
glTranslatef(0, -1, 0);
- FractalTree(0);
+ FractalTree(0, TreeSeed);
glPopAttrib();
glPopMatrix();
glEndList();