diff options
author | Erik Reckase <e.reckase@gmail.com> | 2010-04-24 03:41:22 +0000 |
---|---|---|
committer | Scott Draves <spot@draves.org> | 2015-02-15 12:20:12 -0500 |
commit | be7f6fd741737db47eaee10aa4064104e20e4ec5 (patch) | |
tree | 685f4367a6aacd6dc95fc3dc827f4395701ead80 /src/flam3.c | |
parent | 9e40cff938a30a62dd386d5df977ad32d19d96f2 (diff) | |
download | pucket-be7f6fd741737db47eaee10aa4064104e20e4ec5.tar.gz pucket-be7f6fd741737db47eaee10aa4064104e20e4ec5.tar.bz2 pucket-be7f6fd741737db47eaee10aa4064104e20e4ec5.zip |
changed flam3_colorhist to take a random context as an argument rather than creating a new one each time. Also optimized the loop to only generate the precalc flags once and create the xform distrib array once.
git-svn-id: https://flam3.googlecode.com/svn/trunk@6 77852712-ef1d-11de-8684-7d64432d61a3
Diffstat (limited to 'src/flam3.c')
-rw-r--r-- | src/flam3.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/flam3.c b/src/flam3.c index 088eb61..9324d29 100644 --- a/src/flam3.c +++ b/src/flam3.c @@ -343,41 +343,34 @@ int flam3_xform_preview(flam3_genome *cp, int xi, double range, int numvals, int return(0); } -int flam3_colorhist(flam3_genome *cp, int num_batches, double *hist) { +int flam3_colorhist(flam3_genome *cp, int num_batches, randctx *rc, double *hist) { int lp,plp; int mycolor; long int default_isaac_seed = (long int)time(0); - randctx rc; unsigned short *xform_distrib; int sbs = 10000; double sub_batch[4*10000]; - /* Set up the isaac rng */ - for (lp = 0; lp < RANDSIZ; lp++) - rc.randrsl[lp] = default_isaac_seed; - - irandinit(&rc,1); - memset(hist,0,256*sizeof(double)); + // get into the attractor + if (prepare_precalc_flags(cp)) + return(1); + + xform_distrib = flam3_create_xform_distrib(cp); + for (lp=0;lp<num_batches;lp++) { - sub_batch[0] = flam3_random_isaac_11(&rc); - sub_batch[1] = flam3_random_isaac_11(&rc); + sub_batch[0] = flam3_random_isaac_11(rc); + sub_batch[1] = flam3_random_isaac_11(rc); sub_batch[2] = 0; sub_batch[3] = 0; - // get into the attractor - if (prepare_precalc_flags(cp)) - return(1); - - xform_distrib = flam3_create_xform_distrib(cp); if (xform_distrib==NULL) return(1); - flam3_iterate(cp, sbs, 20, sub_batch, xform_distrib, &rc); - free(xform_distrib); + flam3_iterate(cp, sbs, 20, sub_batch, xform_distrib, rc); // histogram the colors in the sub_batch array for (plp=0;plp<4*sbs;plp+=4) { @@ -389,6 +382,7 @@ int flam3_colorhist(flam3_genome *cp, int num_batches, double *hist) { } } + free(xform_distrib); for (plp=0;plp<256;plp++) hist[plp] /= (float)(num_batches*sbs); |