demo-sponge.rs
1.1 kB · rust · 43 lines
1use mrlycore::colors::{shades, GREEN};2use mrlycore::errors::Result;3use mrlyfig::{ink, iso, save, Board, Color, Frame};4use mrlymath::three::designs;56const CODE: u128 = 127;7const NUMBER: usize = 2;8const LEVEL: usize = 4;910fn shade() -> [Color; 3] {11 shades(GREEN)12}1314fn corner(frame: Frame, size: f64, right: bool) -> Frame {15 let side = frame.w * size;16 let (x, y) = if right {17 (frame.x + frame.w - side, frame.y + frame.h - side)18 } else {19 (frame.x, frame.y)20 };21 Frame::new(x, y, side, side)22}2324fn main() -> Result<()> {25 let seed = designs::create(CODE, NUMBER, 1, 2)?;26 let solid = designs::create(CODE, NUMBER, LEVEL, 2)?;27 assert_eq!(seed.types().sum(), 7);28 assert_eq!(solid.types().sum(), 7u64.pow(LEVEL as u32));29 assert_eq!(solid.types().shape, vec![16, 16, 16]);3031 let mut board = Board::square();32 let frame = board.frame(0.08);33 iso::draw(34 &mut board,35 corner(frame, 0.4, false),36 &seed,37 shade(),38 Some(ink::ground()),39 );40 iso::draw(&mut board, corner(frame, 0.64, true), &solid, shade(), None);41 save("demo-sponge", &board)?;42 Ok(())43}