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}