<<Tessellate.m


(* Set options for drawing hyperbolic polygons *)

SetOptions[DrawHypPolygons, Trailer -> {DisplayFunction -> Identity, 
	AspectRatio -> Automatic, PlotRange -> {{-1.1,1.1},{-1.1,1.1}}}];

SetOptions[DrawHypPolygons, Prolog -> {AbsoluteThickness[0.2]}];


(* Graphics objects *)

g1 = Graphics[{AbsoluteThickness[0.2], Line[{{-1,0},{1,0}}], 
Line[{{0,-1},{0,1}}], AbsoluteDashing[{3,3}], Line[{{1,0},{2,0}}]}];

p2 = Table[RotatePoint[{1,2},i*2*Pi/5], {i,0,4}];
g2 = DrawHypPolygons[p2, Trailer -> {DisplayFunction -> Identity, 
	AspectRatio -> Automatic, PlotRange -> {{-2,2},{-2,2}}}]

p3 = RegularPolygon[8, Pi/4, Pi/8];
g3 = DrawHypPolygons[p3];

p4 = RegularPolygon[5, Pi/5, Pi/5];
g4 = DrawHypPolygons[p4];

p5a = RegularPolygon[5, Pi/5, Pi/5];
p5b = RegularPolygon[10, 2*Pi/5];
p5 = {p5a, p5b};
g5 = DrawHypPolygons[p5];

p6 = RegularPolygon[10,2*Pi/5];
g6 = DrawHypPolygons[p6];

p7a = RegularPolygon[6,Pi/3, Pi/6];
vert = Drop[N[TriFromAngles[2*Pi/12,Pi/3,Pi/6], 16],1];
p7b = Flatten[Table[RotatePoint[vert,i*Pi/3], {i,0,5}], 1];
g7 = DrawHypPolygons[{p7a,p7b}];

p8a = RegularPolygon[18,2*Pi/3];
p8b = RegularPolygon[18,2*Pi/9,Pi/18];
g8a = DrawHypPolygons[p8a, Diagonals -> False,
        Prolog -> {AbsoluteThickness[0.2]}];
g8b = DrawHypPolygons[p8b, Diagonals -> True,
        Prolog -> {AbsoluteThickness[0.2]}];
g8 = Show[{g8a, g8b}, DisplayFunction -> Identity];

p9 = RegularPolygon[8, Pi/2, Pi/8];
tess = PolygonInvGroup[p9, 1];
g9 = DrawHypPolygons[tess, Diagonals -> True];


graf = GraphicsArray[{{g1, g2, g3}, {g4, g5, g6}, {g7, g8, g9}}];
Show[graf, DisplayFunction -> $DisplayFunction];



