d=60;
dv=16;
sct = 1.3; (* ScaleFactor: Speed in which shape changes *)
scb = 1.9; (* ScaleFactor: Speed in which shape changes *)
ab[a_] :=Table[{i ,6+(((Abs[i-30])/3)+(((a/4)) sct (Sin[(i/30)π])))},{i,0,30}]; (* Formula for upper part of shape*)
ad2[a_] :={{0,0},{6,6 +(((4.8/(0.5π)))ArcTan[(a/2)])},{13,2+(((0.6/(0.5π)))ArcTan[(a/2)])},{17,4+(((0.6/(0.5π)))ArcTan[(a/2)])},{24,0-(((4.8/(0.5π)))ArcTan[(a/2)])},{30,6}};(* Formula for lower part of shape*)

rot[a_]:=(({{Cos[a], -Sin[a]}, {Sin[a], Cos[a]}}));

mirHor := (({{1, 0}, {0, -1}})); (* Matrix for horzontal mirroring*)

t1[xy_]:=xy+{d,0};
T1[xylist_]:=t1/@xylist;
t2[xy_]:=xy+{0,dv};
T2[xylist_]:=t2/@xylist;

Clear[bc];
Bc[xy_]:= (mirHor.xy)+{-30,22} ;
bc[a_] := Bc /@ ab[a];

Clear[cd]
Cd[xy_]:= (mirHor.xy)+{-30,6};
cd[a_] := Cd /@ ad2[a];

NN=8; (* number of figures in horizontal direction*)
NN2 = 12; (* number of figures in vertical direction*)
AB:=Table[Line[Nest[T2,Nest[T1,ab[(i-((NN/2)))+(j-((NN2/2)))],i],j]],{i,0,NN}, {j, 0, NN2}]; (* line A-B *)
AD:=Table[Line[Nest[T2,Nest[T1,ad2[(i-((NN/2)))+(j-((NN2/2)))],i],j]],{i,0,NN}, {j, 0, NN2}]; (* line A-D *)
BC:=Table[Line[Nest[T2,Nest[T1,bc[(i-((NN/2)))+(j-((NN2/2)))],i],j]],{i,0,NN}, {j, 0, NN2}];(* line B-C *)
 CD:=Table[Line[Nest[T2,Nest[T1,cd[(i-((NN/2)))+(j-((NN2/2)))],i],j]],{i,0,NN}, {j, 0, NN2}]; (* line C-D *)
(* Change "(i-((NN/2)))+(j-((NN2/2)))" by a number to create a tesilation without changing shapes *)
Show[Graphics[{Black,AB,Black,AD, Black, CD, Black , BC}]]

Export["d:\Test.eps",Graphics[{Black,AB,Black,AD, Black, CD, Black , BC}]]

Plot[2.4+(((2.4/(0.5π)))ArcTan[(i/2)]), {i, -10, 10}]