DEF CourtWall (d1,d2::IsRealPos) (n1,n2::IsIntPos) = LeftWall OP TripleHole OP RightWall WHERE op = ALIGN:<<1,MAX,MIN>,<2,MIN,MIN>>, LeftWall = ((QUOTE ~ #:n1):(d1/n1)) * CUBOID:<1,h>, RightWall = ((QUOTE ~ #:n2):(d2/n2)) * CUBOID:<1,h>, h = SIZE:3:TripleHole, TripleHole = STRUCT:<column:<w,2>, T:1:(2+w), column:<w,2>> TOP Xarc:<2,2>:1, w = 0.7 END;
DEF MyCourtWall = CourtWall: <12,12>: <9,9>;
DEF sizxCourtWall = SIZE:1:MyCourtWall;
DEF CurvedCourtWall = (optimize ~ R:<1,2>:(-2.5*arcAngle) ~ mapping ~ T:2:((r3+r2)/2)): MyCourtWall;
DEF mapping = (cylMap ~ S:<1,3>: <(7.25*PI/24)*(1/sizxCourtWall),hw4/8>);
DEF CrossCourtWall = (STRUCT ~ ##:4):<CurvedCourtWall, R:<1,2>:(PI/2)>;
DEF TopCourtWall2D = MKPOL: <<<0,3.333>,<10,3.333>,<10,4.333>,<5,6.333>,<0,4.333>>, <1..5>,<<1>>> & (QUOTE:(#:10:1) * QUOTE:<8>);
DEF TopCourtWall = R:<2,3>:(PI/2): (TopCourtWall2D * QUOTE:<1>);
DEF MyTopCourtWall = TopCourtWall RIGHT TopCourtWall RIGHT TopCourtWall;
DEF CurvedTopCourtWall = ( R:<1,2>:(-2.5*arcAngle) ~ mapping ~ T:2: ((r3+r2+2)/2)): MyTopCourtWall;
DEF FullTopCourtWall = (STRUCT ~ ##:4):<CurvedTopCourtWall, R:<1,2>: (PI/2)>;DEF RotWall = 2.5*arcAngle;
DEF CourTetto = MKPOL: <<<0,(r3+r2+2)/2,3.333>,<10,(r3+r2+2)/2,3.333>,<10,r2,4.333>,<0,r2,4.333>, <0,(r3+r2+2)/2,3.433>,<10,(r3+r2+2)/2,3.433>, <10,r2,4.433>,<0,r2,4.433> >, <1..8>,<<1>>> & (QUOTE:(#:10:1) * QUOTE:<(r3+r2+2)/2> * QUOTE:<5>);
DEF MyCourTetto = CourTetto RIGHT CourTetto RIGHT CourTetto;
DEF CurvedCourTetto = (R:<1,2>:(-:RotWall) ~ mapping): MyCourTetto;
DEF FullCourTetto = (STRUCT ~ ##:4):<CurvedCourTetto, R:<1,2>:(PI/2)>;