From 0a91d155a4ecc5530c45478f7f6e93dbda9a9342 Mon Sep 17 00:00:00 2001 From: Marcus Hughes Date: Sat, 13 Jan 2024 11:51:32 -0700 Subject: [PATCH] adds randomize, updates version --- Cargo.toml | 2 +- src/ifs.rs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 97dbb70..dc22e13 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "barnsley" -version = "0.2.1" +version = "0.2.2" edition = "2021" authors = ["Marcus Hughes "] license = "MIT OR Apache-2.0" diff --git a/src/ifs.rs b/src/ifs.rs index fa5a383..e90f654 100644 --- a/src/ifs.rs +++ b/src/ifs.rs @@ -2,6 +2,7 @@ use rand::prelude::*; use rand::distributions::WeightedIndex; use rand_distr::Distribution; +use crate::transform; use crate::util::*; use crate::transform::*; use crate::image::*; @@ -28,6 +29,13 @@ impl IFS{ distribution: WeightedIndex::new([1.]).unwrap()} } + /// Update the IFS to new random weights and random parameters for each transform + pub fn randomize(&mut self) { + self.transforms = self.transforms.iter().map(|t| transform_from_str(t.get_name())).collect(); + self.distribution = WeightedIndex::new(self.transforms.iter().map(|t| t.get_weight())).unwrap(); + self.total_weight = self.transforms.iter().map(|t| t.get_weight()).sum(); + } + pub fn len(&self) -> usize { self.num_transforms } @@ -84,7 +92,6 @@ impl IFS{ fn choose_transform(&self) -> &Transform { let mut rng = thread_rng(); self.transforms.get(self.distribution.sample(&mut rng)).unwrap() - //self.transforms.get(self.distribution.sample(&mut rng)).unwrap() } /// Evaluate a transform