aboutsummaryrefslogtreecommitdiff
path: root/src/pattern.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/pattern.rs')
-rw-r--r--src/pattern.rs7
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)