demo-crop.rs

885 B · rust · 24 lines

1use mrlycore::colors::{shades, ORANGE};2use mrlycore::errors::Result;3use mrlyfig::{iso, save, Board};4use mrlymath::shape::{self, Frac, Region};5use mrlymath::three::{designs, Cell3d};67fn main() -> Result<()> {8    let mut board = Board::square();9    let frame = board.frame(0.08);10    let sponge = designs::create(23, 3, 3, 2)?;11    assert_eq!(sponge.width(), 27);12    assert_eq!(sponge.types().sum(), 8000);13    let cut = shape::named("octahedron", 3, Frac::new(1, 2))?;14    let tally = shape::census(&cut, sponge.types());15    let kept = Cell3d::new(shape::crop(sponge.types(), &cut, true));16    assert_eq!(17        kept.types().sum() as usize,18        tally.filled[Region::In as usize] + tally.filled[Region::Cut as usize]19    );20    assert!(kept.types().sum() < 8000);21    iso::draw(&mut board, frame, &kept, shades(ORANGE), None);22    save("demo-crop", &board)?;23    Ok(())24}