<<Tessellate.m

(* Drawing of a regular polygon with normals, center, a circle etc. *)

MakeCompletePolygon[vert_List] :=
   Block[{center, vertices, middlepoints, normals, verticearcs,
                arcs, graf1, graf2, graf3, graf4, len = Length[vert]},
        center = HypCenterOfPolygon[vert];
        vertices = Table[ vert[[ 1+Mod[{i-1,i},len] ]], {i, 1, len}];
        middlepoints = Map[HypMiddleOfArc, vertices];
        normals = Table[{center, middlepoints[[i]]}, {i, 1, len}];
        verticearcs = Table[{center, vert[[i]]}, {i, 1, len}];
        arcs = Join[normals, verticearcs];
        $DisplayFunction = Identity;  (* Don't draw on display yet *)
        graf1 = DrawCirclesAroundPolygons[{vert}, Colored -> False,
                Prolog ->{AbsoluteThickness[0.5]}];
        graf2 = DrawHypPolygons[{vert}, Prolog -> {AbsoluteThickness[0.5]}];
        graf3 = Show[Graphics[{AbsoluteThickness[0.2],
                        Map[MakeGeodArc, arcs]}]];
        graf4 = DrawPoints[Join[{center}, middlepoints],
                        Prolog -> {AbsolutePointSize[3]}];
	(* Make ready for drawing on display: *)
        $DisplayFunction = Display[$Display, #1]&;  
        Show[graf1, graf2, graf3, graf4]
   ];

(* 
poly = {0.6+0.4*I, -0.1-0.8*I, -0.85+0.2I}; 
poly = RegularPolygon[8];
*)

poly = {0.6+0.4*I, -0.1-0.8*I, -0.85+0.2I}; 
graf = MakeCompletePolygon[poly]

(* For saving the picture as PostScript: *)
(* Display["picture",graf] *)

