From a18f62e9fc0ff6f7fc1083c923a03137bc2bb8e5 Mon Sep 17 00:00:00 2001 From: annieversary Date: Wed, 18 Aug 2021 23:31:29 +0200 Subject: [PATCH] sketch #6 --- Cargo.lock | 8 +++++ crates/subtitled6/Cargo.toml | 8 +++++ crates/subtitled6/src/main.rs | 58 +++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 crates/subtitled6/Cargo.toml create mode 100644 crates/subtitled6/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 4cad3da..751b288 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2380,6 +2380,14 @@ dependencies = [ "utils", ] +[[package]] +name = "subtitled6" +version = "0.1.0" +dependencies = [ + "nannou", + "utils", +] + [[package]] name = "syn" version = "1.0.74" diff --git a/crates/subtitled6/Cargo.toml b/crates/subtitled6/Cargo.toml new file mode 100644 index 0000000..ddc0253 --- /dev/null +++ b/crates/subtitled6/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "subtitled6" +version = "0.1.0" +edition = "2018" + +[dependencies] +nannou = "0.17" +utils = { path = "../utils" } diff --git a/crates/subtitled6/src/main.rs b/crates/subtitled6/src/main.rs new file mode 100644 index 0000000..aa9da04 --- /dev/null +++ b/crates/subtitled6/src/main.rs @@ -0,0 +1,58 @@ +use nannou::prelude::*; +use utils::*; + +fn main() { + nannou::app(model).update(update).simple_window(view).run(); +} + +struct Model {} + +fn model(_app: &App) -> Model { + Model {} +} + +fn update(_app: &App, _model: &mut Model, _update: Update) {} + +const D: f32 = 300.0; + +fn view(app: &App, _model: &Model, frame: Frame) { + let t = frame.nth() as f32 / 60.0; + + let draw = app.draw(); + draw.background().color(SNOW); + + let div = map_cos(t, 2.0, 50.0).floor() as i32; + let offset = D / div as f32; + let resolution = map_cos(t, 5.0, 50.0).floor() * 2.0; + + for i in (0..=div).rev() { + let fi = i as f32; + draw.scissor(Rect::from_corners(vec2(-D, 0.0), vec2(D, D))) + .ellipse() + .resolution(resolution) + .w_h(offset * fi, offset * fi) + .x(offset * (div as f32 - fi) / 2.0) + .color(srgb( + i as f32 / div as f32, + 0.0, + (div - i + 1) as f32 / div as f32, + )); + } + for i in (0..=div).rev() { + let fi = i as f32; + draw.scissor(Rect::from_corners(vec2(D, 0.0), vec2(-D, -D))) + .ellipse() + .resolution(resolution) + .w_h(offset * fi, offset * fi) + .x(-offset * (div as f32 - fi) / 2.0) + .color(srgb( + (div - i + 1) as f32 / div as f32, + 0.0, + i as f32 / div as f32, + )); + } + + draw.to_frame(app, &frame).unwrap(); + + utils::record::record(app, &frame); +}