This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

1use itertools::Itertools; 2use rand::{Rng, SeedableRng}; 3use shapemaker::*; 4 5fn artwork() -> Canvas { 6 let mut rng = rand::rngs::StdRng::seed_from_u64(42); 7 let mut canvas = Canvas::with_colors(ColorMapping { 8 black: "#000000".into(), 9 white: "#ffffff".into(), 10 red: "#cf0a2b".into(), 11 green: "#22e753".into(), 12 blue: "#2734e6".into(), 13 yellow: "#f8e21e".into(), 14 orange: "#f05811".into(), 15 purple: "#6a24ec".into(), 16 brown: "#a05634".into(), 17 pink: "#e92e76".into(), 18 gray: "#81a0a8".into(), 19 cyan: "#4fecec".into(), 20 }); 21 canvas.set_grid_size(16, 9); 22 canvas.set_background(Black); 23 24 let draw_in = canvas.world_region.resized(-2, -2); 25 26 // Strands 27 28 let strands_in = 29 Region::from_bottomleft(draw_in.bottomleft().translated(2, -1), (3, 3)) 30 .unwrap(); 31 32 let strands = 33 canvas.n_random_curves_within(&mut rng, &strands_in, 30, "strands"); 34 35 canvas.add_layer(strands); 36 37 for (i, (_key, obj)) in canvas 38 .layer_unchecked("strands") 39 .objects 40 .iter_mut() 41 .sorted_by_key(|(k, _)| *k) 42 .enumerate() 43 { 44 obj.recolor(if i % 2 == 0 { Cyan } else { Pink }); 45 obj.filter(Filter::glow(4.0)); 46 } 47 48 // Red dot 49 50 let red_dot = Shape::BigCircle( 51 Region::from_topright(draw_in.topright().translated(-3, 1), (4, 3)) 52 .unwrap() 53 .random_point(&mut rng), 54 ) 55 .colored(Red) 56 .filtered(Filter::glow(5.0)); 57 58 canvas.new_layer("red dot").add_anon(red_dot.clone()); 59 60 // Hatched circles & squares 61 62 let hatches = canvas.new_layer("hatches"); 63 64 for (i, point) in draw_in.except(&strands_in).enumerate() { 65 if red_dot.region().contains(&point) { 66 continue; 67 } 68 if rng.random() { 69 Shape::BigCircle(point) 70 } else { 71 Shape::Rectangle(point, point) 72 } 73 .filled(White.hatches( 74 Angle::from_degrees(45.0), 75 (i + 5) as f32 / 10.0, 76 0.25, 77 )) 78 .add_to(hatches); 79 } 80 81 canvas 82} 83 84pub fn main() { 85 artwork() 86 .render_to_png("dna-analysis-machine.png", 480) 87 .unwrap(); 88} 89 90#[test] 91fn test_artwork() { 92 use insta; 93 insta::assert_snapshot! { artwork().render_to_svg_string().unwrap() } 94}