Yves Florack
Module: 1.6180339
February 2009

Please uncollapse SectionTitles on the right to see more information ->

-Group Simulations

Graphic & Transformations

Graphic

box is the drawing used within the rest of the calculations:

box = {{10,0},{10,20},{0,40},{10,40},{15,30},{20,40},{50,40},{47.5,35},{27.5,35},{25,30},{45,30},{40,20},{20,20},{20,0},{10,0}};
(* box2= {{-20,20},{-17.5,20},{-17.5,17.5},{-15,17.5},{-15,22.5},{-10,22.5},{-10,20},{0,20}}; *)
Graphics[{Black,Line[box]}]

Transformations

angle is the rotation in degrees. nrit is the number of translation iterations. translatex and translatey are the translation coordinates:

nrith=5;
nritv=5;
translatex = 100;
translatey=100;
angle=15;

trnsv[{x_,y_}]:={x,y}+{0,translatey};
Trnsv[fg_]:=trnsv /@ fg;

trnsh[{x_,y_}]:={x,y}+{translatex,0};
Trnsh[fg_]:=trnsh /@ fg;

dangle=angle Degree;
rot[xy_]:={{Cos[dangle],-Sin[dangle]},{Sin[dangle],Cos[dangle]}}.xy;
Rot[xylist_]:=rot/@xylist;

mirrorh [xy_]:={{-1,0},{0,1}}.xy;
Mirrh[xylist_]:=mirrorh/@xylist;

mirrorv[xy_]:={{1,0},{0,-1}}.xy;
Mirrv[xylist_]:=mirrorv/@xylist;

WW:=Table[Line[Nest[Trnsh,Nest[Mirrv,Nest[Mirrh,Nest[Rot,box,i],j],k],l]],{i,0,1},{j,0,1},{k,0,1},{l,0,nrith}];
WW2:=Table[Line[Nest[Trnsv,Nest[Trnsh,Nest[Mirrv,Nest[Mirrh,Nest[Rot,box,i],j],k],l],m]],{i,0,1},{j,0,1},{k,0,1},{l,0,nrith},{m,0,nritv}];

Graphics[{Red,WW,Black,Line[Rot[box]],Green,Line[Mirrh[box]],Blue,Line[Mirrv[box]]}]

Frieze Group Simulation

Here the transformations can be selected and used to create a Frieze Group:

Graphics[{Red,WW}]

Wallpaper Group Simulation

Here the transformations can be selected and used to create a Wallpaper Group:

Graphics[{Green,WW2}]

-Ludens Simulations

(similar to epa:kato designed by www.studioludens.com)

Graphic & Transformations

Graphic

box is the drawing used within the rest of the calculations:

(* box2 = {{10,0},{10,20},{0,40},{10,40},{15,30},{20,40},{50,40},{47.5,35},{27.5,35},{25,30},{45,30},{40,20},{20,20},{20,0},{10,0}}; *)box= {{-20,20},{-17.5,20},{-15,17.5},{-15,22.5},{-10,22.5},{-10,20},{0,20}};
Graphics[{Black,Line[box]}]

Transformations

angle is the rotation in degrees. nrit is the number of translation iterations. translatex and translatey are the translation coordinates:

nrith=5;
nritv=5;
translatex = 40;
translatey=40;
inttransy=-40;
inttransg = 80;
inttransgh=80;
angle=90;
rangle=-90;

trnsv[{x_,y_}]:={x,y}+{0,translatey};
Trnsv[fg_]:=trnsv /@ fg;

trnsh[{x_,y_}]:={x,y}+{translatex,0};
Trnsh[fg_]:=trnsh /@ fg;

inttrnsh[{x_,y_}]:={x,y}+{0,inttransy};
Trns20[fg_]:=inttrnsh /@ fg;

inttrnshf[{x_,y_}]:={x,y}+{inttransg,0};
Trnsh80[fg_]:=inttrnshf /@ fg;

inttrnshfg[{x_,y_}]:={x,y}+{0,inttransgh};
Trnsv80[fg_]:=inttrnshfg /@ fg;

dangle=angle Degree;
rot[xy_]:={{Cos[dangle],-Sin[dangle]},{Sin[dangle],Cos[dangle]}}.xy;
Rot[xylist_]:=rot/@xylist;

dangle=rangle Degree;
rot[xy_]:={{Cos[dangle],-Sin[dangle]},{Sin[dangle],Cos[dangle]}}.xy;
Rot90[xylist_]:=rot/@xylist;

mirrorh [xy_]:={{-1,0},{0,1}}.xy;
Mirrh[xylist_]:=mirrorh/@xylist;

mirrorv[xy_]:={{1,0},{0,-1}}.xy;
Mirrv[xylist_]:=mirrorv/@xylist;

Mirrvh[st_]:=Mirrv[Mirrh[st]];
Ldns[hs_]:=Trnsv[Mirrvh[hs]];
Mirrot[jp_]:=Rot90[Trns20[jp]];
Ldns2[gs_]:=Trnsh[Rot[gs]];

YY:=Table[Line[Nest[Rot,Nest[Ldns,box,i],j]],{i,0,1},{j,0,3}];
YY2:=Table[Line[Nest[Trnsh,Nest[Rot,Nest[Ldns,box,i],j],k]],{i,0,1},{j,0,3},{k,0,nrith}];
YY3:=Table[Line[Nest[Trnsv,Nest[Trnsh,Nest[Rot,Nest[Ldns,box,i],j],k],l]],{i,0,1},{j,0,3},{k,0,nrith},{l,0,nritv}];
XX:=Table[Line[Nest[Mirrh,Nest[Mirrv,Nest[Mirrot,box,i],j],k]],{i,0,1},{j,0,1},{k,0,1}];
XX2:=Table[Line[Nest[Trnsh80,Nest[Ldns2,Nest[Mirrh,Nest[Mirrv,Nest[Mirrot,box,i],j],k],l],m]],{i,0,1},{j,0,1},{k,0,1},{l,0,3},{m,0,nrith}];
XX3:=Table[Line[Nest[Trnsv80,Nest[Trnsh80,Nest[Ldns2,Nest[Mirrh,Nest[Mirrv,Nest[Mirrot,box,i],j],k],l],m],n]],{i,0,1},{j,0,1},{k,0,1},{l,0,3},{m,0,nrith},{n,0,nritv}];

Graphics[{Red,XX}]
Graphics[{Red,YY}]

Ludens Horizontal Simulation

Here the transformations can be selected and used to create a Frieze Group:

Graphics[{Red,XX2}]
Graphics[{Red,YY2}]

Ludens Wallpaper Simulation

Here the transformations can be selected and used to create a Wallpaper Group:

Graphics[{Blue,XX3}]
Graphics[{Blue,YY3}]

-Birdy Tesselation Simulation

(*
Changeable Variables: rotarc*=rotation of line-segment;
length*=length of line-segment; size*=amplitude size of line-segment;
res=curve resolution (length of curve divided by this number of points);
*)
res=40;
rotarcaa=-15/4;
rotarcab =3/4;
rotarcac=-5 Degree;
rotarcad=15Degree;
rotarcae=-1Degree;
rotarcaf=12Degree;
rotarcag=0Degree;
rotarcah=15Degree;
rotarcai=0Degree;
rotarcaj=15Degree;
rotarcak=2Degree;
rotarcal=20Degree;
rotarcam=5Degree;
rotarcan=45Degree;
rotarcba = -97Degree;
lengthbeaka=15;
lengthbeakb=15;
lengthbeakc=3.5;
lengthbeakd=6;
lengthbeake=7;
lengthbeakf=9;
lengthbeakg=8;
lengthbeakh=9;
lengthbeaki=6.5;
lengthbeakj=6.5;
lengthbeakk=5;
lengthbeakl=5;
lengthbeakm=3.5;
lengthbeakn=3.25;
lengthtaila=15;
sizea=3.5;
sizeb=-1;
sizec=.1;
sized=.25;
sizee=.25;
sizef=.5;
sizeg=.5;
sizeh=.5;
sizei=.5;
sizej=.5;
sizek=.5;
sizel=.5;
sizem=.5;
sizen=.5;
sizetail=-2;


(*
Calculating the x and y distances of each line within the coordinate space;
recalculating the maximum x and y values from the line-formulas
*)
beakx =Cos[ArcTan[rotarcaa]]*lengthbeaka;
beaky=Sin[ArcTan[rotarcaa]]*lengthbeaka;

tailaxx=Cos[rotarcba]*lengthtaila;
tailayy=Sin[rotarcba]*lengthtaila;
beaknxx=Cos[rotarcan]*lengthbeakn;
beaknyy=Sin[rotarcan]*lengthbeakn;
beakmxx=Cos[rotarcam]*lengthbeakm;
beakmyy=Sin[rotarcam]*lengthbeakm;
beaklxx=Cos[rotarcal]*lengthbeakl;
beaklyy=Sin[rotarcal]*lengthbeakl;
beakkxx=Cos[rotarcak]*lengthbeakk;
beakkyy=Sin[rotarcak]*lengthbeakk;
beakjxx=Cos[rotarcaj]*lengthbeakj;
beakjyy=Sin[rotarcaj]*lengthbeakj;
beakixx=Cos[rotarcai]*lengthbeaki;
beakiyy=Sin[rotarcai]*lengthbeaki;
beakhxx=Cos[rotarcah]*lengthbeakh;
beakhyy=Sin[rotarcah]*lengthbeakh;
beakgxx=Cos[rotarcag]*lengthbeakg;
beakgyy=Sin[rotarcag]*lengthbeakg;
beakfxx=Cos[rotarcaf]*lengthbeakf;
beakfyy=Sin[rotarcaf]*lengthbeakf;
beakexx=Cos[rotarcae]*lengthbeake;
beakeyy=Sin[rotarcae]*lengthbeake;
beakdxx=Cos[rotarcad]*lengthbeakd;
beakdyy=Sin[rotarcad]*lengthbeakd;
beakcxx=Cos[rotarcac]*lengthbeakc;
beakcyy=Sin[rotarcac]*lengthbeakc;

beakcx=(Cos[180Degree]*beakcxx)-(Sin[180Degree]*beakcyy);
beakcy=(Sin[180Degree]*beakcxx)+(Cos[180Degree]*beakcyy);
beakdx =(Cos[180Degree]*beakdxx)-(Sin[180Degree]*beakdyy)-beakcx;
beakdy=(Sin[180Degree]*beakdxx)+(Cos[180Degree]*beakdyy)-beakcy;
beakex=(Cos[180Degree]*beakexx)-(Sin[180Degree]*beakeyy);
beakey=(Sin[180Degree]*beakexx)+(Cos[180Degree]*beakeyy);
beakfx=(Cos[180Degree]*beakfxx)-(Sin[180Degree]*beakfyy);
beakfy=(Sin[180Degree]*beakfxx)+(Cos[180Degree]*beakfyy);
beakgx=(Cos[180Degree]*beakgxx)-(Sin[180Degree]*beakgyy);
beakgy=(Sin[180Degree]*beakgxx)+(Cos[180Degree]*beakgyy);
beakhx=(Cos[180Degree]*beakhxx)-(Sin[180Degree]*beakhyy);
beakhy=(Sin[180Degree]*beakhxx)+(Cos[180Degree]*beakhyy);
beakix=(Cos[180Degree]*beakixx)-(Sin[180Degree]*beakiyy);
beakiy=(Sin[180Degree]*beakixx)+(Cos[180Degree]*beakiyy);
beakjx=(Cos[180Degree]*beakjxx)-(Sin[180Degree]*beakjyy);
beakjy=(Sin[180Degree]*beakjxx)+(Cos[180Degree]*beakjyy);
beakkx=(Cos[180Degree]*beakkxx)-(Sin[180Degree]*beakkyy);
beakky=(Sin[180Degree]*beakkxx)+(Cos[180Degree]*beakkyy);
beaklx=(Cos[180Degree]*beaklxx)-(Sin[180Degree]*beaklyy);
beakly=(Sin[180Degree]*beaklxx)+(Cos[180Degree]*beaklyy);
beakmx=(Cos[180Degree]*beakmxx)-(Sin[180Degree]*beakmyy);
beakmy=(Sin[180Degree]*beakmxx)+(Cos[180Degree]*beakmyy);
beaknx=(Cos[180Degree]*beaknxx)-(Sin[180Degree]*beaknyy);
beakny=(Sin[180Degree]*beaknxx)+(Cos[180Degree]*beaknyy);
tailax=-tailaxx;
tailay=tailayy;

beakbx=Cos[ArcTan[rotarcab]]*lengthbeakb;
beakby=Sin[ArcTan[rotarcab]]*lengthbeakb;


(*
All the transformations used: for some rotations ArcTan[] is used,
for most a Degree value also from the variable list above;
rot*=rotation of each individual line-segment;
mirrh and mirrv=mirroring functions; T*=translations
*)
rot180[xy_]:=(({{-1, 0}, {0, -1}})).xy;
Rot180[xylist_]:=rot180/@xylist;
ROT180[xylistlist_]:=Rot180/@xylistlist;

rot90[xy_]:=(({{0, -1}, {1, 0}})).xy;
Rot90[xylist_]:=rot90/@xylist;
ROT90[xylistlist_]:=Rot90/@xylistlist;

rotbeaka[xy_]:=(({{Cos[ArcTan[rotarcaa]], -Sin[ArcTan[rotarcaa]]}, {Sin[ArcTan[rotarcaa]], Cos[ArcTan[rotarcaa]]}})).xy;
RotAA[xylist_]:=rotbeaka/@xylist;
ROTAA[xylistlist_]:=RotAA/@xylistlist;

rotbeakb[xy_]:=(({{Cos[ArcTan[rotarcab]], -Sin[ArcTan[rotarcab]]}, {Sin[ArcTan[rotarcab]], Cos[ArcTan[rotarcab]]}})).xy;
RotAB[xylist_]:=rotbeakb/@xylist;
ROTAB[xylistlist_]:=RotAB/@xylistlist;

rotbeakc[xy_]:=(({{Cos[rotarcac], -Sin[rotarcac]}, {Sin[rotarcac], Cos[rotarcac]}})).xy;
RotAC[xylist_]:=rotbeakc/@xylist;
ROTAC[xylistlist_]:=RotAC/@xylistlist;

rotbeakd[xy_]:=(({{Cos[rotarcad], -Sin[rotarcad]}, {Sin[rotarcad], Cos[rotarcad]}})).xy;
RotAD[xylist_]:=rotbeakd/@xylist;
ROTAD[xylistlist_]:=RotAD/@xylistlist;

rotbeake[xy_]:=(({{Cos[rotarcae], -Sin[rotarcae]}, {Sin[rotarcae], Cos[rotarcae]}})).xy;
RotAE[xylist_]:=rotbeake/@xylist;
ROTAE[xylistlist_]:=RotAE/@xylistlist;

rotbeakf[xy_]:=(({{Cos[rotarcaf], -Sin[rotarcaf]}, {Sin[rotarcaf], Cos[rotarcaf]}})).xy;
RotAF[xylist_]:=rotbeakf/@xylist;
ROTAF[xylistlist_]:=RotAF/@xylistlist;

rotbeakg[xy_]:=(({{Cos[rotarcag], -Sin[rotarcag]}, {Sin[rotarcag], Cos[rotarcag]}})).xy;
RotAG[xylist_]:=rotbeakg/@xylist;
ROTAG[xylistlist_]:=RotAG/@xylistlist;

rotbeakh[xy_]:=(({{Cos[rotarcah], -Sin[rotarcah]}, {Sin[rotarcah], Cos[rotarcah]}})).xy;
RotAH[xylist_]:=rotbeakh/@xylist;
ROTAH[xylistlist_]:=RotAH/@xylistlist;

rotbeaki[xy_]:=(({{Cos[rotarcai], -Sin[rotarcai]}, {Sin[rotarcai], Cos[rotarcai]}})).xy;
RotAI[xylist_]:=rotbeaki/@xylist;
ROTAI[xylistlist_]:=RotAI/@xylistlist;

rotbeakj[xy_]:=(({{Cos[rotarcaj], -Sin[rotarcaj]}, {Sin[rotarcaj], Cos[rotarcaj]}})).xy;
RotAJ[xylist_]:=rotbeakj/@xylist;
ROTAJ[xylistlist_]:=RotAJ/@xylistlist;

rotbeakk[xy_]:=(({{Cos[rotarcak], -Sin[rotarcak]}, {Sin[rotarcak], Cos[rotarcak]}})).xy;
RotAK[xylist_]:=rotbeakk/@xylist;
ROTAK[xylistlist_]:=RotAK/@xylistlist;

rotbeakl[xy_]:=(({{Cos[rotarcal], -Sin[rotarcal]}, {Sin[rotarcal], Cos[rotarcal]}})).xy;
RotAL[xylist_]:=rotbeakl/@xylist;
ROTAL[xylistlist_]:=RotAL/@xylistlist;

rotbeakm[xy_]:=(({{Cos[rotarcam], -Sin[rotarcam]}, {Sin[rotarcam], Cos[rotarcam]}})).xy;
RotAM[xylist_]:=rotbeakm/@xylist;
ROTAM[xylistlist_]:=RotAM/@xylistlist;

rotbeakn[xy_]:=(({{Cos[rotarcan], -Sin[rotarcan]}, {Sin[rotarcan], Cos[rotarcan]}})).xy;
RotAN[xylist_]:=rotbeakn/@xylist;
ROTAN[xylistlist_]:=RotAN/@xylistlist;


rottaila[xy_]:=(({{Cos[rotarcba], -Sin[rotarcba]}, {Sin[rotarcba], Cos[rotarcba]}})).xy;
RotBA[xylist_]:=rottaila/@xylist;
ROTBA[xylistlist_]:=RotBA/@xylistlist;

mirrv[xy_]:=(({{1, 0}, {0, -1}})).xy;
Mirrv[xylist_]:=mirrv/@xylist;
MIRRV[xylistlist_]:=Mirrv/@xylistlist;

mirrh[xy_]:=(({{-1, 0}, {0, 1}})).xy;
Mirrh[xylist_]:=mirrh/@xylist;
MIRRH[xylistlist_]:=Mirrh/@xylistlist;

tbeak[{x_,y_}]:={x,y}+{2beakx,2beaky};
tbeakk[{x_,y_}]:={x,y}+{2beakx+beakbx+beakdx-beakex,2beaky-beakby+beakdy-beakey};
tbeakk2[{x_,y_}]:={x,y}+{2beakbx+2(beakdx-beakex),2(2beaky-beakby+beakdy-beakey)};
tbeakk3[{x_,y_}]:={x,y}+{2beakbx+2(beakdx-beakex),0};

Tbeak[fg_]:=tbeak /@ fg;
Tbeakk[fg_]:=tbeakk /@ fg;
Tbeakk2[fg_]:=tbeakk2 /@ fg;
Tbeakk3[fg_]:=tbeakk3 /@ fg;

TBEAK[fglist_]:=Tbeak/@fglist;
TBEAKK[fglist_]:=Tbeakk/@fglist;
TBEAKK2[fglist_]:=Tbeakk2/@fglist;
TBEAKK3[fglist_]:=Tbeakk3/@fglist;

(*
Combined Transformations
*)
TRNSBK[fglist_]:=TBEAK[ROT180[fglist]];
TRNSBKK[fglist_]:=TBEAKK[MIRRH[fglist]];

(*
Line-segments
*)
beaka=N[Table[rotbeaka[{(lengthbeaka/res)i,sizea*Sin[(i/40)π]}]+{0,0},{i,0,res}]];
beakb= N[Table[rotbeakb[{(lengthbeakb/res)i,sizeb*Sin[i(π/(res/2))]}]+{0,0},{i,0,res}]];
beakc=N[Table[rot180[rotbeakc[{(lengthbeakc/res)i,sizec*Sin[(i/40)π]}]]+{0,0},{i,0,res}]];
beakd=N[Table[rot180[rotbeakd[{(lengthbeakd/res)i,sized*Sin[(i/40)π]}]]+{-beakdx,-beakdy},{i,0,res}]];
beake=N[Table[rot180[rotbeake[{(lengthbeake/res)i,sizee*Sin[(i/40)π]}]]+{-beakdx,-beakdy},{i,0,res}]];
beakf=N[Table[rot180[rotbeakf[{(lengthbeakf/res)i,sizef*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx,-beakdy+beakey-beakfy},{i,0,res}]];
beakg=N[Table[rot180[rotbeakg[{(lengthbeakg/res)i,sizeg*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx,-beakdy+beakey-beakfy},{i,0,res}]];
beakh=N[Table[rot180[rotbeakh[{(lengthbeakh/res)i,sizeh*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx,-beakdy+beakey-beakfy+beakgy-beakhy},{i,0,res}]];
beaki=N[Table[rot180[rotbeaki[{(lengthbeaki/res)i,sizei*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx,-beakdy+beakey-beakfy+beakgy-beakhy},{i,0,res}]];
beakj=N[Table[rot180[rotbeakj[{(lengthbeakj/res)i,sizej*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy},{i,0,res}]];
beakk=N[Table[rot180[rotbeakk[{(lengthbeakk/res)i,sizek*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy},{i,0,res}]];
beakl=N[Table[rot180[rotbeakl[{(lengthbeakl/res)i,sizel*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx+beakkx-beaklx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy+beakky-beakly},{i,0,res}]];
beakm=N[Table[rot180[rotbeakm[{(lengthbeakm/res)i,sizem*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx+beakkx-beaklx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy+beakky-beakly},{i,0,res}]];
beakn=N[Table[rot180[rotbeakn[{(lengthbeakn/res)i,sizen*Sin[(i/40)π]}]]+{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx+beakkx-beaklx+beakmx-beaknx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy+beakky-beakly+beakmy-beakny},{i,0,res}]];
taila=N[Table[rottaila[{(lengthtaila/res)i,sizetail*Sin[(i/40)π]}]+{beakx,-beaky+beakby-beakdy+beakey},{i,0,res}]];
beaktail={{beakx-tailax,-beaky+beakby-beakdy+beakey+tailay},{-beakdx+beakex-beakfx+beakgx-beakhx+beakix-beakjx+beakkx-beaklx+beakmx-beaknx,-beakdy+beakey-beakfy+beakgy-beakhy+beakiy-beakjy+beakky-beakly+beakmy-beakny}};
eye=N[Table[.75{Cos[i(π/(res/2))],Sin[i(π/(res/2
))]}+{.75beakbx,beakby/9},{i,0,res}]];
(*
Show all line-segments
*)
Graphics[{Black,Line[beaka]}]
Graphics[{Black,Line[beakb]}]
Graphics[{Black,Line[beakc]}]
Graphics[{Black,Line[beakd]}]
Graphics[{Black,Line[beake]}]
Graphics[{Black,Line[beakf]}]
Graphics[{Black,Line[beakg]}]
Graphics[{Black,Line[beakh]}]
Graphics[{Black,Line[beaki]}]
Graphics[{Black,Line[beakj]}]
Graphics[{Black,Line[beakk]}]
Graphics[{Black,Line[beakl]}]
Graphics[{Black,Line[beakm]}]
Graphics[{Black,Line[beakn]}]
Graphics[{Black,Line[taila]}]
Graphics[{Black,Line[beaktail]}]
Graphics[{Black,Line[eye]}]

(*
nritv=number of vertical iterations
nrith=number of horizontal iterations
*)
nritv = 2;
nrith=5;

(*
cutting and engraving sets
*)
cut={beaka,beakb,beakc,beakd,beake,beakf,beakg,beakh,beaki,beakj,beakk,beakl,beakm,beakn,taila,beaktail};
engrave={eye};

Graphics[{Red,Line[cut],Black,Line[eye]}]

E1:=Table[Line[Nest[TRNSBK,engrave,i]],{i,0,1}];
C1:=Table[Line[Nest[TRNSBK,cut,i]],{i,0,1}];

E2:=Table[Line[Nest[TRNSBKK,Nest[TRNSBK,engrave,i],j]],{i,0,1},{j,0,1}];
C2:=Table[Line[Nest[TRNSBKK,Nest[TRNSBK,cut,i],j]],{i,0,1},{j,0,1}];

E3:=Table[Line[Nest[TBEAKK2,Nest[TRNSBKK,Nest[TRNSBK,engrave,i],j],k]],{i,0,1},{j,0,1},{k,0,nritv}];
C3:=Table[Line[Nest[TBEAKK2,Nest[TRNSBKK,Nest[TRNSBK,cut,i],j],k]],{i,0,1},{j,0,1},{k,0,nritv}];

EE:=Table[Line[Nest[TBEAKK3,Nest[TBEAKK2,Nest[TRNSBKK,Nest[TRNSBK,engrave,i],j],k],l]],{i,0,1},{j,0,1},{k,0,nritv},{l,0,nrith}];
CC:=Table[Line[Nest[TBEAKK3,Nest[TBEAKK2,Nest[TRNSBKK,Nest[TRNSBK,cut,i],j],k],l]],{i,0,1},{j,0,1},{k,0,nritv},{l,0,nrith}];

Graphics[{Red,C1,Black,E1}]
Graphics[{Red,C2,Black,E2}]
Graphics[{Red,C3,Black,E3}]
Graphics[{Red,CC,Black,EE}]
(* Export["Florack-Yves_Birdy.eps",Graphics[{Red,CC,Black,EE}]] *)