designs.rs
1.1 kB · rust · 34 lines
1use super::geometry::{cut, iso, pro};2use super::models::Cell6d;3use crate::bang::universe::Code;4use crate::three;5use mrlycore::errors::Result;67/// Builds the coded 3d design and projects it isometrically.8pub fn iso_design(code: Code, number: usize, level: usize, base: usize) -> Result<Cell6d> {9 iso(&three::create(code, number, level, base)?)10}1112/// Builds the coded 3d design and projects its facing sides.13pub fn pro_design(code: Code, number: usize, level: usize, base: usize) -> Result<Cell6d> {14 pro(&three::create(code, number, level, base)?)15}1617/// Builds the coded 3d design and slices its central hexagon.18pub fn cut_design(code: Code, number: usize, level: usize, base: usize) -> Result<Cell6d> {19 cut(&three::create(code, number, level, base)?)20}2122#[cfg(test)]23mod tests {24 use super::*;25 #[test]26 fn menger_projections_build() {27 let i = iso_design(23, 3, 1, 2).unwrap();28 let p = pro_design(23, 3, 1, 2).unwrap();29 let c = cut_design(23, 3, 1, 2).unwrap();30 assert!(i.cell.types().sum() > 0);31 assert!(p.cell.types().sum() > 0);32 assert!(c.cell.types().sum() > 0);33 }34}