mirror of
https://github.com/ricoriedel/wipe.git
synced 2025-04-07 00:08:23 +00:00
35 lines
695 B
Rust
35 lines
695 B
Rust
use crate::FillMode;
|
|
use crate::vec::Vector;
|
|
|
|
const INTERVAL: f32 = 4.0;
|
|
|
|
pub struct StripesFillMode {
|
|
interval: f32
|
|
}
|
|
|
|
impl StripesFillMode {
|
|
pub fn new(size: Vector) -> Self {
|
|
Self {
|
|
interval: size.smaller() / INTERVAL
|
|
}
|
|
}
|
|
}
|
|
|
|
impl FillMode for StripesFillMode {
|
|
fn sample(&self, _: f32, pos: Vector) -> f32 {
|
|
(pos.sum() % self.interval) / self.interval
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn sample() {
|
|
let mode = StripesFillMode::new(Vector::new(8.0, 4.0));
|
|
|
|
assert_eq!(0.25, mode.sample(0.0, Vector::new(1.5, 0.75)));
|
|
assert_eq!(0.5, mode.sample(0.0, Vector::new(4.0, 2.5)));
|
|
}
|
|
} |