diff options
Diffstat (limited to 'src/pattern.rs')
-rw-r--r-- | src/pattern.rs | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/pattern.rs b/src/pattern.rs index ba9899e..042d0be 100644 --- a/src/pattern.rs +++ b/src/pattern.rs @@ -16,16 +16,15 @@ impl Sample for Rainbow { pub struct Sequence(pub Vec<Color>); impl Sample for Sequence { fn sample(&mut self, x: f64, _y: f64) -> Color { - self.0[(x * self.0.len() as f64).floor() as usize % self.0.len()] + self.0[x.rem_euclid(self.0.len() as f64) as usize] } } pub struct Gradient(pub Vec<Color>); impl Sample for Gradient { fn sample(&mut self, x: f64, _y: f64) -> Color { - let index = x * self.0.len() as f64; - let index_int = index.floor() as usize; - let index_error = index % 1.0; + let index_int = x.floor() as usize; + let index_error = x % 1.0; let a = self.0[index_int % self.0.len()]; let b = self.0[(index_int + 1) % self.0.len()]; Color::mix(a, b, index_error) |