functional language for computing with geometry
DEF CrossWall = (T:1:-1 ~ R:<1,2>: (0.2*arcAngle) ~ S:3:(hw4/8) ~ CUBOID): <1.5,r3 - r2,5>;
DEF SingleWall = (R:<1,2>: (2.5*arcAngle) ~ T:2:r2):CrossWall;
DEF DoubleWall = STRUCT:< SingleWall, S:1:-1, SingleWall >;
DEF CrossWalls = (STRUCT ~ ##:4): <DoubleWall, R:<1,2>:(PI/2)>;
DEF HalfTetto = MKPOL: <<<0,r2,8>, <8,r2,5>,<8,r3,5>,<0,r3,8>>,<1..4>,<<1>>>;
DEF CurvedHalfTetto = (cylMap ~ S:<1,3>: <2.5*arcAngle/8,hw4/8>):HalfTetto;
DEF DoubleHalfTetto = STRUCT: <CurvedHalfTetto, S:1:-1:CurvedHalfTetto >;
DEF FullTetto = (STRUCT ~ ##:4): <DoubleHalfTetto, R:<1,2>:(PI/-2)>;