% cubicstructures.mp % L. Nobre G. % 2011 input featpost3Dplus2D; prologues := 1; f := 2*(5,3,3.5); Spread := 20; beginfig(1); numeric csr, ind; color xv, yv, zv, Ve[]; path p[]; csr := sqrt(3)*0.5; xv := (csr,0,0); yv := (0,csr,0); zv := (0,0,csr); Ve1 := (-1,-1,-1); Ve2 := (-1,1,-1); Ve3 := (1,-1,-1); Ve4 := (1,1,-1); Ve5 := (-1,-1,1); Ve6 := (-1,1,1); Ve7 := (1,-1,1); Ve8 := (1,1,1); Ve9 := (0,0,0); for ind=1 upto 9: p[ind] := rigorousfearpath( Ve[ind], csr ); endfor; unfill p1; draw p1; draw rp(Ve1+yv)--rp(Ve2-yv); draw rp(Ve1+xv)--rp(Ve3-xv); unfill p2; draw p2; draw rp(Ve1+zv)--rp(Ve5-zv); unfill p5; draw p5; draw rp(Ve5+yv)--rp(Ve6-yv); draw rp(Ve5+xv)--rp(Ve7-xv); unfill p9; draw p9; unfill p3; draw p3; draw rp(Ve4-yv)--rp(Ve3+yv); draw rp(Ve4-xv)--rp(Ve2+xv); unfill p4; draw p4; draw rp(Ve2+zv)--rp(Ve6-zv); draw rp(Ve3+zv)--rp(Ve7-zv); draw rp(Ve4+zv)--rp(Ve8-zv); unfill p6; draw p6; unfill p7; draw p7; draw rp(Ve8-yv)--rp(Ve7+yv); draw rp(Ve8-xv)--rp(Ve6+xv); unfill p8; draw p8; endfig; beginfig(2); numeric csr, ind; color xv, yv, zv, Ve[]; path p[]; csr := 1; xv := (csr,0,0); yv := (0,csr,0); zv := (0,0,csr); Ve1 := (-1,-1,-1); Ve2 := (-1,1,-1); Ve3 := (1,-1,-1); Ve4 := (1,1,-1); Ve5 := (-1,-1,1); Ve6 := (-1,1,1); Ve7 := (1,-1,1); Ve8 := (1,1,1); for ind=1 upto 8: p[ind] := rigorousfearpath( Ve[ind], csr ); endfor; unfill p1; draw p1; draw rp(Ve1+yv)--rp(Ve2-yv); draw rp(Ve1+xv)--rp(Ve3-xv); unfill p2; draw p2; draw rp(Ve1+zv)--rp(Ve5-zv); unfill p5; draw p5; draw rp(Ve5+yv)--rp(Ve6-yv); draw rp(Ve5+xv)--rp(Ve7-xv); unfill p3; draw p3; draw rp(Ve4-yv)--rp(Ve3+yv); draw rp(Ve4-xv)--rp(Ve2+xv); unfill p4; draw p4; draw rp(Ve2+zv)--rp(Ve6-zv); draw rp(Ve3+zv)--rp(Ve7-zv); draw rp(Ve4+zv)--rp(Ve8-zv); unfill p6; draw p6; unfill p7; draw p7; draw rp(Ve8-yv)--rp(Ve7+yv); draw rp(Ve8-xv)--rp(Ve6+xv); unfill p8; draw p8; endfig; beginfig(3); numeric csr, ind; color xv, yv, zv, Ve[]; path p[]; csr := sqrt(2)*0.5; xv := (csr,0,0); yv := (0,csr,0); zv := (0,0,csr); Ve1 := (-1,-1,-1); Ve2 := (-1,1,-1); Ve3 := (1,-1,-1); Ve4 := (1,1,-1); Ve5 := (-1,-1,1); Ve6 := (-1,1,1); Ve7 := (1,-1,1); Ve8 := (1,1,1); Ve9 := (-1,0,0); Ve10 := (0,0,-1); Ve11 := (0,0,1); Ve12 := (0,1,0); Ve13 := (0,-1,0); Ve14 := (1,0,0); for ind=1 upto 14: p[ind] := rigorousfearpath( Ve[ind], csr ); endfor; unfill p1; draw p1; draw rp(Ve1+yv)--rp(Ve2-yv); draw rp(Ve1+xv)--rp(Ve3-xv); unfill p2; draw p2; draw rp(Ve1+zv)--rp(Ve5-zv); unfill p9; draw p9; unfill p5; draw p5; draw rp(Ve2+zv)--rp(Ve6-zv); draw rp(Ve5+yv)--rp(Ve6-yv); unfill p6; draw p6; unfill p10; draw p10; draw rp(Ve5+xv)--rp(Ve7-xv); unfill p13; draw p13; unfill p3; draw p3; draw rp(Ve4-yv)--rp(Ve3+yv); draw rp(Ve4-xv)--rp(Ve2+xv); unfill p4; draw p4; unfill p11; draw p11; draw rp(Ve3+zv)--rp(Ve7-zv); unfill p12; draw p12; unfill p14; draw p14; unfill p7; draw p7; draw rp(Ve8-yv)--rp(Ve7+yv); draw rp(Ve8-xv)--rp(Ve6+xv); draw rp(Ve4+zv)--rp(Ve8-zv); unfill p8; draw p8; endfig; beginfig(4); numeric csr, ind; color xv, yv, zv, Ve[]; path p[]; csr := 0.21; xv := (csr,0,0); yv := (0,csr,0); zv := (0,0,csr); Ve1 := (-1,-1,-1); Ve2 := (-1,1,-1); Ve3 := (1,-1,-1); Ve4 := (1,1,-1); Ve5 := (-1,-1,1); Ve6 := (-1,1,1); Ve7 := (1,-1,1); Ve8 := (1,1,1); Ve21:= (0,0,0); Ve9 := (-1,-0.5,0); Ve15 := (-1,0.5,0); Ve10 := (-0.5,0,-1);Ve16 := (0.5,0,-1); Ve11 := (-0.5,0,1); Ve17 := (0.5,0,1); Ve12 := (0,1,-0.5); Ve18 := (0,1,0.5); Ve13 := (0,-1,-0.5);Ve19 := (0,-1,0.5); Ve14 := (1,-0.5,0); Ve20 := (1,0.5,0); for ind=1 upto 21: p[ind] := rigorousfearpath( Ve[ind], csr ); endfor; unfill p1; draw p1; draw rp(Ve1+yv)--rp(Ve2-yv); draw rp(Ve1+xv)--rp(Ve3-xv); unfill p2; draw p2; draw rp(Ve1+zv)--rp(Ve5-zv); unfill p9; draw p9; draw rp(Ve9+yv)--rp(Ve15-yv); unfill p15; draw p15; unfill p5; draw p5; draw rp(Ve2+zv)--rp(Ve6-zv); draw rp(Ve5+yv)--rp(Ve6-yv); unfill p6; draw p6; unfill p10; draw p10; draw rp(Ve10+xv)--rp(Ve16-xv); unfill p16; draw p16; draw rp(Ve5+xv)--rp(Ve7-xv); unfill p13; draw p13; draw rp(Ve13+zv)--rp(Ve19-zv); unfill p19; draw p19; unfill p21; draw p21; unfill p3; draw p3; draw rp(Ve4-yv)--rp(Ve3+yv); draw rp(Ve4-xv)--rp(Ve2+xv); unfill p4; draw p4; unfill p11; draw p11; draw rp(Ve11+xv)--rp(Ve17-xv); unfill p17; draw p17; draw rp(Ve3+zv)--rp(Ve7-zv); unfill p12; draw p12; draw rp(Ve12+zv)--rp(Ve18-zv); unfill p18; draw p18; unfill p14; draw p14; draw rp(Ve14+yv)--rp(Ve20-yv); unfill p20; draw p20; unfill p7; draw p7; draw rp(Ve8-yv)--rp(Ve7+yv); draw rp(Ve8-xv)--rp(Ve6+xv); draw rp(Ve4+zv)--rp(Ve8-zv); unfill p8; draw p8; endfig; beginfig(5); color Ve[], violet, va, vb, vc, vu; numeric i, j, k, e[]p[]; string comm, comn, como, a, b, col[]; violet = red+blue; col1 = "violet"; col2 = "red"; col3 = "green"; col4 = "blue"; Ve1 = (2,1,-1); Ve2 = (0,1,-1); Ve3 = (-2,1,-1); Ve4 = (-2,-1,-1); Ve5 = (0,-1,-1); Ve6 = (2,-1,-1); Ve7 = (1,1,0); Ve8 = (-1,1,0); Ve9 = (-2,0,0); Ve10 = (-1,-1,0); Ve11 = (1,-1,0); Ve12 = (2,0,0); Ve13 = (2,1,1); Ve14 = (0,1,1); Ve15 = (-2,1,1); Ve16 = (-2,-1,1); Ve17 = (0,-1,1); Ve18 = (2,-1,1); Ve19 = (1,0,1); Ve20 = (0,0,0); Ve21 = (-1,0,1); Ve22 = (1,0,-1); Ve23 = (-1,0,-1); for i=1 upto 23: comm := "unfill rigorousfearpath(" & cstr(Ve[i]) & ",0.08);"; comn := "draw rigorousfearpath(" & cstr(Ve[i]) & ",0.08);"; getready( comm & comn, Ve[i] ); endfor; e1p1 = 1; e2p1 = 2; e3p1 = 3; e4p1 = 4; e5p1 = 5; e6p1 = 6; e1p2 = 2; e2p2 = 3; e3p2 = 4; e4p2 = 5; e5p2 = 6; e6p2 = 1; e7p1 = 13; e8p1 = 14; e9p1 = 15; e10p1 = 16; e11p1 = 17; e12p1 = 18; e7p2 = 14; e8p2 = 15; e9p2 = 16; e10p2 = 17; e11p2 = 18; e12p2 = 13; e13p1 = 1; e14p1 = 2; e15p1 = 3; e16p1 = 4; e17p1 = 5; e18p1 = 6; e13p2 = 13; e14p2 = 14; e15p2 = 15; e16p2 = 16; e17p2 = 17; e18p2 = 18; e19p1 = 2; e19p2 = 5; e20p1 = 14; e20p2 = 17; e101p1 = 22; e201p1 = 10; e301p1 = 5; e401p1 = 5; e101p2 = 2; e201p2 = 17; e301p2 = 23; e401p2 = 22; e102p1 = 2; e202p1 = 17; e302p1 = 23; e402p1 = 22; e102p2 = 8; e202p2 = 19; e302p2 = 8; e402p2 = 7; e103p1 = 8; e203p1 = 19; e303p1 = 8; e403p1 = 7; e103p2 = 21; e203p2 = 7; e303p2 = 14; e403p2 = 14; e104p1 = 21; e204p1 = 7; e304p1 = 14; e404p1 = 14; e104p2 = 17; e204p2 = 2; e304p2 = 19; e404p2 = 21; e105p1 = 17; e205p1 = 2; e305p1 = 19; e405p1 = 21; e105p2 = 11; e205p2 = 23; e305p2 = 11; e405p2 = 10; e106p1 = 11; e206p1 = 23; e306p1 = 11; e406p1 = 10; e106p2 = 22; e206p2 = 10; e306p2 = 5; e406p2 = 5; for i=1 upto 20: vc := Ve[e[i]p2]-Ve[e[i]p1]; vu := N(vc); va := Ve[e[i]p1]+0.2*vu; vb := Ve[e[i]p2]-0.2*vu; a := cstr( va ); b := cstr( vb-va ); comm := "rigorousdisc( 0, true," & a & ",0.08," & b & ");"; getready( comm, 0.5[va,vb] ); endfor; for j=1 upto 4: for i=1 upto 6: k := 100*j+i; vc := Ve[e[k]p2]-Ve[e[k]p1]; vu := N(vc); va := Ve[e[k]p1]+0.2*vu; vb := Ve[e[k]p2]-0.2*vu; a := cstr( va ); b := cstr( vb-va ); comm := "rigorousdisc( 0, true," & a & ",0.08," & b & ");"; comn := "drawoptions( withcolor " & col[j] & " );"; como := "drawoptions();"; getready( comn & comm & como, 0.5[va,vb] ); endfor; endfor; doitnow; endfig; Nobjects := 0; beginfig(6); numeric i, j, k, c, Mx, My, Mz, is; string comm, comn, this; boolean jisodd, kisodd; color there, ref, aux, Ve[]; path pa, pb, pc, pd; Mx = 3; My = 3; Mz = 3; kisodd = false; c = 0.5*sqrt(2); ref = -0.5*c*(Mx,My,Mz); aux = ref-0.5*(1,1,1); Ve0 = aux; Ve1 = (-X(aux),Y(aux),Z(aux)); Ve2 = (X(aux),-Y(aux),Z(aux)); Ve3 = (X(aux),Y(aux),-Z(aux)); Ve4 = (X(aux),-Y(aux),-Z(aux)); Ve5 = (-X(aux),Y(aux),-Z(aux)); Ve6 = (-X(aux),-Y(aux),Z(aux)); Ve7 = (-X(aux),-Y(aux),-Z(aux)); pa = rp(Ve0)--rp(Ve1)--rp(Ve6)--rp(Ve2)--cycle; pb = rp(Ve0)--rp(Ve2)--rp(Ve4)--rp(Ve3)--cycle; pc = rp(Ve0)--rp(Ve3)--rp(Ve5)--rp(Ve1)--cycle; pd = rp(Ve7)--rp(Ve4)--rp(Ve2)--rp(Ve6)--cycle; unfill pa; draw pa; unfill pb; draw pb; unfill pc; draw pc; for k=0 upto Mz: if kisodd: jisodd := true; else: jisodd := false; fi; for j=0 upto My: if jisodd: is := 1; else: is := 0; fi; for i=is step 2 until Mx: there := c*(i,j,k)+ref; this := "rigorousfearpath(" & cstr(there); comm := "unfill " & this & ",0.5);"; comn := "draw " & this & ",0.5);"; getready( comm & comn, there ); endfor; jisodd := not jisodd; endfor; kisodd := not kisodd; endfor; doitnow; unfill pd; draw pd; endfig; end;