(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 224461, 6464]*) (*NotebookOutlinePosition[ 264368, 7815]*) (* CellTagsIndexPosition[ 263973, 7802]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[{ "MATHEMATICA IN ACTION ", StyleBox["for issue 9-2 of ", FontColor->RGBColor[1, 0, 0]], StyleBox["Mathematica in Education and Research", FontSlant->"Italic", FontColor->RGBColor[1, 0, 0]] }], "Text", TextAlignment->Center, FontSize->16], Cell[CellGroupData[{ Cell["Random Polygons", "Title", Evaluatable->False, AspectRatioFixed->True], Cell["A robust algorithm to connect the dots.", "Subtitle", Evaluatable->False, TextAlignment->Left, AspectRatioFixed->True, FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False}], Cell["by Stan Wagon", "Subtitle", CellMargins->{{Inherited, Inherited}, {18, Inherited}}, Evaluatable->False, TextAlignment->Left, AspectRatioFixed->True, FontFamily->"Helvetica"], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". Introduction" }], "Section"], Cell[TextData[{ "The problem of generating random polygons has generated a lot of interest \ in the computational geometry community. In this column we will describe and \ implement the Auer\[Dash]Held steady-growth heuristic for generating \ random-looking polygons. The project is a nice vehicle for demonstrating some \ of the basic tools of computational geometry, and also for discussing \ techniques to speed up a numerically heavy program. While the algorithm is a \ little slow for large numbers of points, it has several virtues:\n\n1. It is \ acceptably fast for generating ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-gons where ", Cell[BoxData[ \(TraditionalForm\`n \[LessEqual] 50\)]], ".\n\n2. It is a method for getting a polygon through any set of points. \ Thus, to get an ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-gon, one can just generate ", Cell[BoxData[ \(TraditionalForm\`n\)]], " random points and then apply the steady-growth method.\n\n3. It is \ intuitively very easy to understand: start with two points and splice in the \ unused points in an order that guarantees one will never get stuck.\n\nOne \ approach to the problem of defining a random polygon is to fix the vertex-set \ ", Cell[BoxData[ \(TraditionalForm\`S\)]], " and define a method to be random if the probability of generating any \ particular polygon on ", Cell[BoxData[ \(TraditionalForm\`S\)]], " is ", Cell[BoxData[ \(TraditionalForm\`1\/k\)]], ", where ", Cell[BoxData[ \(TraditionalForm\`k\)]], " is the number of polygons on ", Cell[BoxData[ \(TraditionalForm\`S\)]], ". This should not be taken as a definitive definition, but it is useful. A \ method that respects this definition is the one that simply generates random \ permutations of ", Cell[BoxData[ \(TraditionalForm\`S\)]], ", stopping as soon as a good permutation \[LongDash] one that yields a \ simple polygon \[LongDash] is found. This will yield the desired uniform \ distribution, but it is too slow, since, when ", Cell[BoxData[ \(TraditionalForm\`S\)]], " has 20 or more points, the search for a good permutation can take a very \ long time. The steady-growth heuristic fails to have this uniformity, since \ there are some polygons (the smallest has 11 vertices) that steady growth \ will never generate [Auer 1996].\n\nMy interest in this subject was inspired \ by Will Carver and Peter Wiringa, students in an algorithms class at \ Macalester College who successfully implemented the ", "steady-", "growth algorithm in ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". The Steady-Growth Algorithm" }], "Section"], Cell[TextData[{ "Here are the steps of the Auer\[Dash]Held steady-growth algorithm [Auer \ and Held 1996]. Assume that ", Cell[BoxData[ \(TraditionalForm\`n\)]], " points in the plane are given and let CH denote convex hull. The \ following procedure will connect the points so that they form a polygon \ \[ScriptCapitalP]." }], "Text"], Cell[TextData[{ "1. Let \[ScriptCapitalP] consist of two random points in the set; call the \ rest ", StyleBox["unused", FontSlant->"Italic"], ".\n\n2. Do ", Cell[BoxData[ \(TraditionalForm\`n - 2\)]], " times:\n\n 2a. Find an unused point ", Cell[BoxData[ \(TraditionalForm\`x\)]], " so that ", Cell[BoxData[ \(TraditionalForm\`CH(\[ScriptCapitalP] \[Union] {x})\)]], " contains none of the other unused points.\n\n 2b. With ", Cell[BoxData[ \(TraditionalForm\`x\)]], " as in step 2a, find an edge in \[ScriptCapitalP] so that ", Cell[BoxData[ \(TraditionalForm\`x\)]], " can see the entire edge. Extend \[ScriptCapitalP] to include ", Cell[BoxData[ \(TraditionalForm\`x\)]], " by splicing it in: delete the visible edge and introduce two new edges \ from the ends of the visible edge to ", Cell[BoxData[ \(TraditionalForm\`x\)]], "." }], "Text"], Cell[TextData[{ "These ideas are quite simple, but there is an important subtlety: Given a \ polygon \[ScriptCapitalP] and a point ", Cell[BoxData[ \(TraditionalForm\`x\)]], " outside it, it is not necessarily true that ", Cell[BoxData[ \(TraditionalForm\`x\)]], " can see an edge of \[ScriptCapitalP]. A counterexample is shown in Figure \ ", CounterBox["NumberedFigure", "No Visible Edge Example"], ". However, if ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is outside ", Cell[BoxData[ \(TraditionalForm\`CH(\[ScriptCapitalP])\)]], ", then there must be a visible edge. The proof is not difficult [Auer and \ Held 1996]: given ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", look at the chain facing ", Cell[BoxData[ \(TraditionalForm\`x\)]], " from the leftmost to the rightmost vertex of \[ScriptCapitalP] that it \ can see (the existence of such a chain uses the convex hull hypothesis). If \ the leftmost edge in this chain is visible we are done; if not, consider the \ blocking edges and look at the first blocking edge whose leftmost vertex is \ visible to ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". If the edge is entirely visible, we are done. If not, look at the \ blocking edges for this one, and continue until a visible edge is found." }], "Text"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .86603 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 0.381845 0.570477 0.381845 [ [ 0 0 0 0 ] [ 1 .86603 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath .7 g .5 .11226 m .89683 .79958 L .27501 .79958 L .38095 .63921 L .79537 .70794 L .61905 .63921 L .47136 .29555 L .5 .43301 L .21773 .79958 L F 0 g .02 w .5 .11226 Mdot .89683 .79958 Mdot .27501 .79958 Mdot .38095 .63921 Mdot .79537 .70794 Mdot .61905 .63921 Mdot .47136 .29555 Mdot .5 .43301 Mdot .21773 .79958 Mdot .5 Mabswid [ ] 0 setdash .5 .11226 m .89683 .79958 L .27501 .79958 L .38095 .63921 L .79537 .70794 L .61905 .63921 L .47136 .29555 L .5 .43301 L .21773 .79958 L .5 .11226 L s [ .01 .01 ] 0 setdash .5 .57048 m .5 .02062 L s .5 .57048 m .97619 .84541 L s .5 .57048 m .02381 .84541 L s .5 g .02 w .5 .57048 Mdot 0 0 m 1 0 L 1 .86603 L 0 .86603 L closepath clip newpath % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{154, 133.25}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgWoo 0010Ool00`00F]IJeP05F]H20002F]H00`00F]IJeP0>F]H00`00Oomoo`0jOol0041oo`03001JeU[F 00EJeP80009JeP03001JeU[F00mJeP03001oogoo03Uoo`00?goo00<005[FF]H01e[F00@005[FF]H0 015JeP03001oogoo03Uoo`00?goo00<005[FF]H01e[F0P0000=JeP00F]H04E[F00<007ooOol0>7oo 000nOol00`00F]IJeP08F]H200000e[F001JeP0AF]H00`00Oomoo`0hOol003ioo`03001JeU[F00QJ eP04001oo`00000CF]H00`00Oomoo`0gOol003eoo`03001JeU[F00UJeP04001oo`00000DF]H00`00 Oomoo`0fOol003eoo`03001JeU[F00YJeP03001oo`0001AJeP03001oogoo03Ioo`00?Goo00<005[F F]H02U[F00<007oo00005E[F00<007ooOol0=Goo000lOol00`00F]IJeP0;F]H00`00Ool0000EF]H0 0`00Oomoo`0eOol003aoo`03001JeU[F00]JeP04001oo`00000EF]H00`00Oomoo`0dOol003]oo`03 001JeU[F00aJeP04001oo`00000FF]H00`00Oomoo`0cOol003]oo`03001JeU[F00eJeP800003Ool0 05[F01AJeP03001oogoo03=oo`00>goo00<005[FF]H03E[F0P0000=oo`00F]H05E[F00<007ooOol0 F]H200000goo001JeP0EF]H00`00Oomoo`0bOol003Yoo`03001JeU[F 00iJeP80009oo`03001JeU[F01AJeP03001oogoo035oo`00>Goo00<005[FF]H03e[F0P000Woo00<0 05[FF]H055[F00<007ooOol07oo00<005[FF]H045[F0`00 0goo00<005[FF]H05E[F00<007ooOol0;Woo000gOol00`00F]IJeP0AF]H20004Ool00`00F]IJeP0E F]H00`00Oomoo`0^Ool003Moo`03001JeU[F011JeP03001oo`0000Eoo`03001JeU[F01EJeP03001o ogoo02eoo`00=Woo00<005[FF]H045[F00<007ooOol01Woo00<005[FF]H05U[F00<007ooOol0;7oo 000fOol00`00F]IJeP0@F]H01000Oomoo`001Woo00<005[FF]H05E[F00<007ooOol0;7oo000fOol0 0`00F]IJeP0?F]H01@00Oomoogoo00001Woo00<005[FF]H05U[F00<007ooOol0:goo000eOol00`00 F]IJeP0?F]H00`00Oomoo`09Ool00`00F]IJeP0FF]H00`00Oomoo`0[Ool003Eoo`03001JeU[F00iJ eP03001oogoo00=oo`03001oogoo00Eoo`03001JeU[F01IJeP03001oogoo02Yoo`00=7oo00<005[F F]H03U[F00<007ooOol017oo00<007ooOol01Goo00<005[FF]H05U[F00<007ooOol0:Woo000dOol0 0`00F]IJeP0>F]H00`00Oomoo`0=Ool00`00F]IJeP0FF]H00`00Oomoo`0YOol003Aoo`03001JeU[F 00eJeP03001oogoo00Eoo`03001oogoo00Ioo`03001JeU[F01MJeP03001oogoo02Qoo`00"], ImageRangeCache->{{{0, 153}, {132.25, 0}} -> {-1.31195, -1.49401, \ 0.0171496, 0.0171496}}], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": A polygon \[ScriptCapitalP] with an exterior point \[LongDash] the \ central gray point \[LongDash] so that no edge of \[ScriptCapitalP] is fully \ visible to the point." }], "NumberedFigure", FontWeight->"Bold", CellTags->"No Visible Edge Example"], Cell[TextData[{ "The basic ideas of the ", "steady-", "growth algorithm are simple, but getting an acceptably fast implementation \ requires several refinements. For example, it is tempting to use the ", StyleBox["ConvexHull", "Input"], " routine in the ", StyleBox["DiscreteMath`ComputationalGeometry", "Input"], " package, but that would be wasteful since it is possible to implement \ step 2a without using a convex hull routine." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". Computational Geometry Basics" }], "Section"], Cell[TextData[{ "Almost any problem in computational geometry requires fast routines to do \ certain basic things. The real workhorse is a routine that determines the \ orientation of a triangle ", Cell[BoxData[ FormBox[ StyleBox["ABC", FontSlant->"Italic"], TraditionalForm]]], " (which is taken to be ", Cell[BoxData[ \(TraditionalForm\`\(+1\)\)]], " if the order is counterclockwise, ", Cell[BoxData[ \(TraditionalForm\`\(-1\)\)]], " if clockwise, and 0 if the points are collinear). We will not prove it \ here (see [O\[CloseCurlyQuote]Rourke 1998]), but there is a very simple \ formula for the orientation in terms of the coordinates of the points: it is \ the sign of the determinant of ", Cell[BoxData[ FormBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {\(x\_1\), \(y\_1\), "1"}, {\(x\_2\), \(y\_2\), "1"}, {\(x\_3\), \(y\_3\), "1"} }], "\[NoBreak]", ")"}], TraditionalForm]]], ". In fact, half of this determinant gives the signed area of the \ triangle. We use ", StyleBox["Chop", "Input"], " so that three points that are collinear are properly interpreted as being \ so." }], "Text"], Cell[BoxData[ \(Orientation[{{x1_, y1_}, {x2_, y2_}, {x3_, y3_}}] := \ Sign[Chop[\(-x2\)\ y1 + x3\ y1 + x1\ y2 - x3\ y2 - x1\ y3 + x2\ y3]]\)], "Input", AutoIndent->False], Cell[TextData[{ "This routine is a real workhorse, since it underlies so many others. For \ example, to decide if point ", Cell[BoxData[ \(TraditionalForm\`R\)]], " is left of the directed line form ", Cell[BoxData[ \(TraditionalForm\`P\)]], " to ", Cell[BoxData[ \(TraditionalForm\`Q\)]], ", one need only look at the orientation of ", Cell[BoxData[ FormBox[ StyleBox["PQR", FontSlant->"Italic"], TraditionalForm]]], "." }], "Text"], Cell[BoxData[ \(LeftOf[p_, q_, r_]\ := \ Orientation[{p, q, r}] > 0\)], "Input", AutoIndent->False], Cell[TextData[{ "And now we can decide if two line segments intersect in their interior by \ checking various ", StyleBox["LeftOf", "Input"], "s as follows." }], "Text"], Cell[BoxData[ \(IntersectInteriorQ[{a_, b_}, {c_, d_}] := \n\t Xor[LeftOf[a, b, c], LeftOf[a, b, d]] && \n\t Xor[LeftOf[c, d, a], LeftOf[c, d, b]] && \n\t Intersection[{a, b}, {c, d}] \[Equal] {}\)], "Input", AutoIndent->False], Cell[TextData[{ "These ideas also lead to a quick way of determining whether a point ", Cell[BoxData[ \(TraditionalForm\`x\)]], " lies inside ", Cell[BoxData[ FormBox[ StyleBox[ RowBox[{"\[CapitalDelta]", StyleBox["pqr", FontSlant->"Italic"]}]], TraditionalForm]]], ". It suffices to check that the three orientations from ", Cell[BoxData[ \(TraditionalForm\`x\)]], " to the edges are the same." }], "Text"], Cell[BoxData[ \(InsideTriangleQ[{p_, q_, r_}, x_] := \ 3 \[Equal] Abs[\n\tOrientation[{p, q, x}] + Orientation[{q, r, x}] + \n\ \ \ \ \ \ \ \ \ \ \ Orientation[{r, p, x}]]\)], "Input", AutoIndent->False], Cell[TextData[{ "All these routines can be made faster by compiling, and I have done so in \ the ", StyleBox["RandomPolygon", "Input"], " package that accompanies this column. A final interesting general problem \ is to find the maximum and/or minimum of a set ", Cell[BoxData[ \(TraditionalForm\`S\)]], " of points based on some function on ", Cell[BoxData[ \(TraditionalForm\`S\)]], ". The ", StyleBox["Sort", "Input"], " command allows a second argument that specifies a sorting function: ", Cell[BoxData[ StyleBox[\(Sort[s, f[#1] < f[#2] &]\), FontWeight->"Bold"]]], ". This works for the problem at hand but is a little slow since the \ function is evaluated at each sorting step. It is quite a bit faster to form \ the ", Cell[BoxData[ \(TraditionalForm\`f\)]], "-values of the elements of ", Cell[BoxData[ \(TraditionalForm\`S\)]], ", take the max (or min) of the result, find its position in the set of ", Cell[BoxData[ \(TraditionalForm\`f\)]], "-values, and then get the corresponding element of ", Cell[BoxData[ \(TraditionalForm\`S\)]], ". Here is a routine that finds both the min and max. A cute trick is the \ use of ", Cell[BoxData[ \(Position[s, m, 1, 1]\)], FontWeight->"Bold"], "; the fourth 1 indicates that the search should stop when 1 is found. The \ third argument, 1, is a level specification that is necessary here only as a \ placeholder, so that we can use a fourth argument." }], "Text"], Cell[BoxData[ \(\(MinAndMax[s_, f_] := \((s\[LeftDoubleBracket]{\n\ \ \ \ \ \ \ \(Position[#, Min[#], 1, 1]\)\[LeftDoubleBracket]1, 1\[RightDoubleBracket], \n\ \ \ \ \ \ \ \(Position[#, Max[#], 1, 1]\)\[LeftDoubleBracket]1, 1\[RightDoubleBracket]}\[RightDoubleBracket] &)\)[ f /@ s];\)\)], "Input", AutoIndent->False], Cell[CellGroupData[{ Cell[BoxData[ \(MinAndMax[{\(-2\), \(-3\), 1, \(-5\), 0, 8, \(-6\)}, #\^2 &]\)], "Input",\ AutoIndent->False], Cell[BoxData[ \({0, 8}\)], "Output"] }, Open ]], Cell[TextData[{ "A final geometric routine we need is one that computes the angle formed at \ ", Cell[BoxData[ \(TraditionalForm\`x\)]], " by the points ", Cell[BoxData[ \(TraditionalForm\`p\)]], " and ", Cell[BoxData[ \(TraditionalForm\`q\)]], ". It is convenient to think in terms of two vectors ", Cell[BoxData[ \(TraditionalForm\`v\)]], " and ", Cell[BoxData[ \(TraditionalForm\`w\)]], "; we want signed angles and use the sign of an orientation to get it. Of \ course, the formula underlying this is the familiar ", Cell[BoxData[ \(TraditionalForm\`v\[CenterDot] w = \(\(\[VerticalSeparator]\)\(v\)\(\[VerticalSeparator]\)\(\ \[VerticalSeparator]\)\(w\)\(\[VerticalSeparator]\)\(\ \)\(cos\ \ \[Theta]\)\)\)]], "." }], "Text"], Cell[BoxData[ \(\(angle[v_, w_] := Sign[v\[LeftDoubleBracket]1\[RightDoubleBracket]\ w\ \[LeftDoubleBracket]2\[RightDoubleBracket] - v\[LeftDoubleBracket]2\[RightDoubleBracket]\ w\ \[LeftDoubleBracket]1\[RightDoubleBracket]]\ ArcCos[ v . w\/\@\(v . v\ \ w . w\)];\)\)], "Input", AutoIndent->False], Cell["\<\ And we need a utility to add the first element of a set to the end.\ \ \>", "Text"], Cell[BoxData[ \(extend[s_] := Append[s, s\[LeftDoubleBracket]1\[RightDoubleBracket]]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". The Main Routines" }], "Section"], Cell[TextData[{ "Now we can turn our attention to efficient ways of implementing the main \ steps (2a and 2b) of the ", "steady-", "growth algorithm. Here is one observation that allows us to find the new \ point quickly, without computing any convex hulls. If \[ScriptCapitalP] is \ the current polygon, and ", Cell[BoxData[ \(TraditionalForm\`x\)]], " one of the unused points, we first identify the two supporting vertices \ of \[ScriptCapitalP] (the two vertices at the extreme ends of ", Cell[BoxData[ \(TraditionalForm\`x\)]], "\[CloseCurlyQuote]s vision). This is done by choosing an arbitrary point \ of \[ScriptCapitalP] (", StyleBox["poly\[LeftDoubleBracket]1\[RightDoubleBracket]", "Input"], " in the code that follows) and taking the max and min of the directed \ angles formed by ", Cell[BoxData[ \(TraditionalForm\`x\)]], ", the special point, and the other points of the polygon." }], "Text"], Cell[BoxData[ \(\(AdditionalTriangle[poly_, x_] := MinAndMax[\n\ \ \ \ \ Range[Length[poly]], angle[poly\[LeftDoubleBracket]1\[RightDoubleBracket] - x, poly\[LeftDoubleBracket]#\[RightDoubleBracket] - x] &];\)\)], "Input", AutoIndent->False], Cell[CellGroupData[{ Cell[BoxData[{ \(\(samplepoly = {{0, 0}, {10, 0}, {5, 3}, {20, 6}, {5, 7}, {10, 9}, {0, 10}, {2, 2}};\)\), "\n", \(\(x = {15, 14};\)\), "\n", \(AdditionalTriangle[samplepoly, x]\)}], "Input", AutoIndent->False], Cell[BoxData[ \({7, 4}\)], "Output"] }, Open ]], Cell[TextData[{ "This output indicates that the fourth and second vertices are the two \ supporting vertices (see Figure ", CounterBox["NumberedFigure", "Finding Visible Edge"], "). The reason this is called ", StyleBox["AdditionalTriangle", "Input"], " is that the triangle formed by these two vertices and the point ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is the new part of the convex hull of ", Cell[BoxData[ \(TraditionalForm\`\[ScriptCapitalP] \[Union] {x}\)]], ". Since no unused points lie in the convex hull of \[ScriptCapitalP], it \ is sufficient to check only this new triangle to see if it contains any other \ unused points. If it does not, then ", Cell[BoxData[ \(TraditionalForm\`x\)]], " is the new point. But if it contains only ", StyleBox["one", FontSlant->"Italic"], " of the unused elements, then we are also done, since we may choose that \ one element to be the new point! This case is handled by the ", StyleBox["If", "Input"], " statement in the code. The routine that follows accepts a pair ", Cell[BoxData[ \(TraditionalForm\`{\[ScriptCapitalP], unused}\)]], " and returns the pair: ", Cell[BoxData[ \(TraditionalForm\`{\[ScriptCapitalP]\ \[Union] \ {x}, \ unused\ points\ less\ x}\)]], ". Note how a third argument to ", StyleBox["Select", "Input"], " is always used \[LongDash] it is 1 or 2 \[LongDash] so that the search \ stops as soon as the necessary information is obtained. This setup allows us \ to quickly get the entire order of the selection of the unused points by \ simply iterating the ", StyleBox["NewPoint", "Input"], " function ", Cell[BoxData[ \(TraditionalForm\`n - 2\)]], " times, where ", Cell[BoxData[ \(TraditionalForm\`n\)]], " is the size of the initial point set." }], "Text"], Cell[BoxData[ \(\(NewPoint[{poly_, unused_}] := Module[{\n\tp, tri, inside}, \n\t p = First[ Select[unused, \n\t\t\((tri = Append[poly\[LeftDoubleBracket] AdditionalTriangle[ poly, #]\[RightDoubleBracket], #]; \n\t\tLength[ inside = Select[ DeleteCases[ unused, #], \n\t\t\tInsideTriangleQ[tri, #] &, 2]] < 2)\) &, 1]]; \n\t If[Length[inside] == 1, p = inside\[LeftDoubleBracket]1\[RightDoubleBracket]]; \n\t\ {Append[poly, p], DeleteCases[unused, p]}];\)\)], "Input", AutoIndent->False], Cell[CellGroupData[{ Cell[BoxData[{ \(\(n = 12;\)\), "\[IndentingNewLine]", \(\(pts = Array[Random[] &, \ {n, 2}];\)\), "\n", \(Flatten[\(Position[pts, #] &\)\ /@ \ \[IndentingNewLine]First[ Nest[NewPoint, {Take[pts, 2], \ Drop[pts, 2]}, n - 2]]]\)}], "Input"], Cell[BoxData[ \({1, 2, 8, 3, 4, 5, 10, 6, 7, 9, 11, 12}\)], "Output"] }, Open ]], Cell[TextData[{ "Now we turn to the problem of finding a visible edge. The ", StyleBox["VisibleEdge", "Input"], " routine relies on the ", StyleBox["visibleQ", "Input"], " subroutine. The former looks at the edges of the polygon and sorts them \ in order of their angle around ", Cell[BoxData[ \(TraditionalForm\`x\)]], ". Then it looks for the first edge that is visible. This sorting, \ suggested by Auer and Held, speeds up the search for a visible edge. The ", StyleBox["visibleQ", "Input"], " routine accepts ", StyleBox["blockers", "Input"], " (the set of potential blocking edges), ", StyleBox["{p,q}", "Input"], " (the edge in question), and ", StyleBox["x", "Input"], " (the new point), and returns ", StyleBox["True", "Input"], " if the edge is not blocked by any of the blockers. Here I use some \ knowledge about the blockers to speed up the check; this is a bottleneck of \ the program, so such optimization is a good idea. First note that the \ blockers are defined in the same order around the polygon as the edge ", Cell[BoxData[ \(TraditionalForm\`p\[InvisibleSpace]q\)]], ". So if the edge ", Cell[BoxData[ \(TraditionalForm\`p\[InvisibleSpace]q\)]], " is blocked by a blocker, then one of the following must hold:" }], "Text"], Cell[TextData[{ "(1) the second vertex of the blocker is inside ", Cell[BoxData[ FormBox[ StyleBox[ RowBox[{"\[CapitalDelta]", StyleBox["pqx", FontSlant->"Italic"]}]], TraditionalForm]]], ";\n(2) the blocker intersects the segment ", StyleBox["xp;", FontSlant->"Italic"], "\n(3) the blocker has the form ", Cell[BoxData[ FormBox[ StyleBox["rp", FontSlant->"Italic"], TraditionalForm]]], " and the blocker intersects ", Cell[BoxData[ FormBox[ StyleBox["xq", FontSlant->"Italic"], TraditionalForm]]], "." }], "Text"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .65 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0670996 0.04329 0.0154762 0.04329 [ [.75108 .63452 -4.125 -5.5 ] [.75108 .63452 4.125 5.5 ] [.02381 .01548 -4.6875 -5.5 ] [.02381 .01548 4.6875 5.5 ] [.54329 .01548 -4.6875 -5.5 ] [.54329 .01548 4.6875 5.5 ] [.28355 .18864 -4.6875 -5.5 ] [.28355 .18864 4.6875 5.5 ] [.97619 .27522 -4.6875 -5.5 ] [.97619 .27522 4.6875 5.5 ] [.24026 .31851 -4.6875 -5.5 ] [.24026 .31851 4.6875 5.5 ] [.54329 .40509 -4.6875 -5.5 ] [.54329 .40509 4.6875 5.5 ] [.0671 .49167 -4.6875 -5.5 ] [.0671 .49167 4.6875 5.5 ] [.11039 .10206 -4.6875 -5.5 ] [.11039 .10206 4.6875 5.5 ] [ 0 -0.00102 0 0 ] [ 1 .65 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g gsave .75108 .63452 -65.125 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.250 12.000 moveto %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (x) show 67.250 12.000 moveto %%IncludeResource: font Times-Italic %%IncludeFont: Times-Italic /Times-Italic findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .02381 .01548 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (1) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .54329 .01548 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (2) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .28355 .18864 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (3) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .97619 .27522 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (4) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .24026 .31851 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (5) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .54329 .40509 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (6) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .0671 .49167 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (7) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .11039 .10206 -65.6875 -9.5 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 19 translate 1 -1 scale 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (8) show 68.375 12.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 9.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .002 w [ ] 0 setdash .0671 .01548 m .5 .01548 L .28355 .14535 L .9329 .27522 L .28355 .31851 L .5 .40509 L .0671 .44838 L .15368 .10206 L .0671 .01548 L s .033 w .71645 .62154 Mdot .0671 .01548 Mdot .5 .01548 Mdot .28355 .14535 Mdot .9329 .27522 Mdot .28355 .31851 Mdot .5 .40509 Mdot .0671 .44838 Mdot .15368 .10206 Mdot .5 Mabswid [ .005 .02 ] 0 setdash .0671 .44838 m .71645 .62154 L .9329 .27522 L s .017 w [ ] 0 setdash .5 .40509 m .0671 .44838 L s 0 0 m 1 0 L 1 .65 L 0 .65 L closepath clip newpath % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{197, 128}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgWoo0P00KWoo000IOol00`00Oomoo`0gOol2001`Ool0 01Yoo`03001oogoo03Eoo`03001oogoo071oo`006goo00<007ooOol0Goo1@00CWoo000LOol00`00 Oomoo`1HOol50019Ool001]oo`03001oogoo05ioo`D004Aoo`006goo00<007ooOol0Hgoo1@00?goo 000KOol00`00Oomoo`1XOol5000jOol001]oo`03001oogoo06eoo`@003Ioo`006Woo00<007ooOol0 LWoo1@00goo0`00L7oo000DOol00`00Oomoo`0nOol2001^Ool001=oo`03001oogoo045oo`<004ao o`03001oogoo01aoo`004goo00<007ooOol0A7oo0`00J7oo000COol00`00Oomoo`17Ool200000goo 00000002001QOol0019oo`03001oogoo04Moo`T000=oo`8005]oo`004Woo00<007ooOol0?Goo4`00 0Woo00@007ooOol003Qoo`80021oo`004Woo00<007ooOol0Ool8002_Ool000ioo`H0009oo`03001oogoo0:aoo`003goo 10001Woo0P00ZWoo000NOol2001lOol00`00Oomoo`0VOol0029oo`800:5oo`009goo0P00W7oo000? Ool00`00Oomoo`0JOol00`00Oomoo`1[Ool00`00Oomoo`0XOol000moo`03001oogoo01Yoo`03001o ogoo06Yoo`03001oogoo02Uoo`0047oo00<007ooOol07Goo0P00Tgoo000@Ool00`00Oomoo`0ROol0 0`00Oomoo`2=Ool000ioo`04001oogoo000WOol2001LOol00`00Oomoo`0[Ool000ioo`@002aoo`80 05Moo`03001oogoo02]oo`00@Woo00<007ooOol0P7oo0013Ool00`00Oomoo`1oOol004Moo`8004ao o`03001oogoo02eoo`00Bgoo0P00Agoo00<007ooOol0;Woo001@Ool2001cOol005Aoo`03001oogoo 06ioo`00EGoo00D007ooOomoo`0003Qoo`03001oogoo031oo`00FWoo00<007ooOol0=Goo00<007oo Ool0<7oo001MOol2001VOol0069oo`80065oo`00IWoo0P00:7oo00<007ooOol07oo0027Ool60002Ool01000Oomo o`00"], ImageRangeCache->{{{0, 196}, {127, 0}} -> {-2.08101, -0.678, 0.123276, \ 0.123276}}], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": An example that illustrates the ", StyleBox["AdditionalTriangle", "Input"], " routine (output is ", Cell[BoxData[ \(TraditionalForm\`{7, 4}\)]], ") and the ", StyleBox["VisibleEdge", "Input"], " routine (the thick edge is an edge \[LongDash] the only edge \[LongDash] \ visible from ", Cell[BoxData[ \(TraditionalForm\`x\)]], ")." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Finding Visible Edge"], Cell[BoxData[{ \(\(VisibleEdge[pol_, x_] := Module[{edges, epol = extend[pol]}, If[Length[pol] \[Equal] 2, pol, edges = Map[ epol\[LeftDoubleBracket]{#, # + 1}\[RightDoubleBracket] &, Last /@ Sort[ Transpose[{Apply[ArcTan, \((# - x &)\) /@ pol, {1}], Range[Length[pol]]}]]]; \[IndentingNewLine]\(Select[ edges, visibleQ[DeleteCases[edges, #], #, x] &, 1]\)\[LeftDoubleBracket]1\[RightDoubleBracket]]];\)\ \[IndentingNewLine]\), "\[IndentingNewLine]", \(visibleQ[blockers_, {p_, q_}, x_] := {} \[Equal] \n\t Select[blockers, \n\t\tInsideTriangleQ[{p, q, x}, #\[LeftDoubleBracket]2\[RightDoubleBracket]] || \n\t\t\ IntersectInteriorQ[#, {x, p}] || \n\t\t\((p \[Equal] #\[LeftDoubleBracket]2\ \[RightDoubleBracket] && IntersectInteriorQ[#, {x, q}])\) &, 1]\)}], "Input", AutoIndent->False], Cell[TextData[{ "Here is a sample output (see Figure ", CounterBox["NumberedFigure", "Finding Visible Edge"], "), where we replace the points by their indices in the sample polygon." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(Flatten[\(Position[samplepoly, #] &\)\ /@ \ VisibleEdge[samplepoly, x]]\)], "Input"], Cell[BoxData[ \({6, 7}\)], "Output"] }, Open ]], Cell[TextData[{ "Now we can define the main routine. Using ", StyleBox["Fold", "Input"], " is efficient. We use it by first getting the order of the points to be \ spliced in, and then splicing them in one at a time, using ", StyleBox["Fold", "Input"], ". Note the use of the intricate (but fast) pure function\n\n ", Cell[BoxData[ \(\((a = \(VisibleEdge[#1, #2]\)\[LeftDoubleBracket]1\ \[RightDoubleBracket]; \n\ \ #1 /. \[InvisibleSpace]{x___, a, y___} \[RuleDelayed] {x, a, #2, y})\) &\)], FontWeight->"Bold"], ". \n \nHere ", StyleBox["#1", "Input"], " will be a polygon and ", StyleBox["#2", "Input"], " the point to be spliced in. The first vertex of a visible edge is stored \ in ", StyleBox["a", "Input"], ", and then a replacement is used to splice in ", StyleBox["#2", "Input"], " just after ", StyleBox["a", "Input"], "." }], "Text", AutoIndent->False], Cell[BoxData[{ \(\(RandomPolygon[n_Integer]\ := \ RandomPolygon[Array[Random[] &, \ {n, 2}]];\)\n\), "\n", \(\(RandomPolygon[pts_] := With[{order = \n\t\(Nest[NewPoint, {Take[pts, 2], Drop[pts, 2]}, Length[pts] - 2]\)\[LeftDoubleBracket]1\[RightDoubleBracket]}, \n\t Fold[\((\n\t\ta = \(VisibleEdge[#1, #2]\)\[LeftDoubleBracket]1\ \[RightDoubleBracket]; \n\t\t#1 /. {x___, a, y___} \[RuleDelayed] {x, a, #2, y})\) &, \n\t\t\ \ \ \ \ \ Take[order, 2], Drop[order, 2]]];\)\)}], "Input", AutoIndent->False], Cell[TextData[{ "The output is just the list of points. The timing here is not too \ impressive, but the use of compilation, discussed briefly in section 5 and \ used several times in the ", StyleBox["RandomPolygon", "Input"], " package, cuts the running time in half." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(RandomPolygon[30] // Short\) // Timing\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{\(4.5`\ Second\), ",", TagBox[\({{0.7165821845499478`, 0.6483348957821448`}, \[LeftSkeleton]28\[RightSkeleton], \ {0.9869288320965416`, 0.5898021420209858`}}\), Short]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ "Figure ", CounterBox["NumberedFigure", "Array of Random Polygons"], " shows several of the outputs of ", StyleBox["RandomPolygon", "Input"], "." }], "Text"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.47619 0.0147151 0.47619 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath % Start of sub-graphic p 0.0238095 0.0147151 0.477324 0.295003 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 1.02523 0.0147151 0.61821 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .91256 .2568 m .80533 .16884 L .87818 .21292 L .915 .08137 L .86412 .1333 L .65458 .02213 L .48596 .01792 L .08792 .13987 L .34356 .06675 L .35192 .08457 L .15864 .18533 L .09902 .32696 L .32067 .15573 L .41088 .17625 L .54098 .09735 L .30149 .26536 L .6452 .06395 L .55007 .14307 L .70532 .21613 L .45272 .22579 L .69521 .26351 L .67582 .26797 L .48482 .29906 L .06588 .43431 L .18584 .60332 L .78168 .44007 L .97619 .58884 L .97268 .40898 L .83979 .38733 L .44993 .46049 L F 0 g .4 Mabswid [ ] 0 setdash .91256 .2568 m .80533 .16884 L .87818 .21292 L .915 .08137 L .86412 .1333 L .65458 .02213 L .48596 .01792 L .08792 .13987 L .34356 .06675 L .35192 .08457 L .15864 .18533 L .09902 .32696 L .32067 .15573 L .41088 .17625 L .54098 .09735 L .30149 .26536 L .6452 .06395 L .55007 .14307 L .70532 .21613 L .45272 .22579 L .69521 .26351 L .67582 .26797 L .48482 .29906 L .06588 .43431 L .18584 .60332 L .78168 .44007 L .97619 .58884 L .97268 .40898 L .83979 .38733 L .44993 .46049 L .91256 .2568 L s MathSubEnd P % End of sub-graphic % Start of sub-graphic p 0.522676 0.0147151 0.97619 0.295003 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.953827 0.0147151 0.591876 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .20749 .04402 m .80574 .0889 L .57651 .05851 L .97619 .06661 L .78423 .04623 L .59778 .03647 L .42154 .02771 L .14776 .02855 L .12683 .03594 L .09703 .27728 L .11936 .41355 L .23215 .56831 L .2342 .47373 L .15898 .43151 L .13973 .38417 L .22239 .43478 L .59923 .57645 L .24276 .4054 L .33997 .4175 L .42977 .46535 L .36671 .41924 L .20604 .09591 L .26893 .20309 L .33654 .29586 L .82267 .5758 L .91423 .60332 L .80962 .44359 L .52601 .31389 L .48958 .27799 L .90297 .39593 L .76793 .34668 L .44133 .23359 L .89264 .28286 L .78083 .10302 L .78002 .11767 L .69791 .23971 L .3831 .09003 L .6872 .17503 L .68582 .17455 L .6875 .159 L F 0 g .4 Mabswid [ ] 0 setdash .20749 .04402 m .80574 .0889 L .57651 .05851 L .97619 .06661 L .78423 .04623 L .59778 .03647 L .42154 .02771 L .14776 .02855 L .12683 .03594 L .09703 .27728 L .11936 .41355 L .23215 .56831 L .2342 .47373 L .15898 .43151 L .13973 .38417 L .22239 .43478 L .59923 .57645 L .24276 .4054 L .33997 .4175 L .42977 .46535 L .36671 .41924 L .20604 .09591 L .26893 .20309 L .33654 .29586 L .82267 .5758 L .91423 .60332 L .80962 .44359 L .52601 .31389 L .48958 .27799 L .90297 .39593 L .76793 .34668 L .44133 .23359 L .89264 .28286 L .78083 .10302 L .78002 .11767 L .69791 .23971 L .3831 .09003 L .6872 .17503 L .68582 .17455 L .6875 .159 L .20749 .04402 L s MathSubEnd P % End of sub-graphic % Start of sub-graphic p 0.0238095 0.323031 0.477324 0.603319 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 1.03794 0.0147151 0.600846 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .20274 .42104 m .43214 .31535 L .35244 .30638 L .24814 .21492 L .18036 .18047 L .78952 .01918 L .82886 .43921 L .97619 .5216 L .90203 .5458 L .82749 .60332 L F 0 g .4 Mabswid [ ] 0 setdash .20274 .42104 m .43214 .31535 L .35244 .30638 L .24814 .21492 L .18036 .18047 L .78952 .01918 L .82886 .43921 L .97619 .5216 L .90203 .5458 L .82749 .60332 L .20274 .42104 L s MathSubEnd P % End of sub-graphic % Start of sub-graphic p 0.522676 0.323031 0.97619 0.603319 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.99913 0.0147151 0.631791 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .1493 .28247 m .1948 .48161 L .36718 .59217 L .44066 .60332 L .43111 .52015 L .36192 .49506 L .45685 .47691 L .45836 .39322 L .31518 .33556 L .3766 .34238 L .97619 .48701 L .96843 .46873 L .82622 .22285 L .70952 .06735 L .59136 .14582 L .80173 .33888 L .58313 .17089 L .26012 .05326 L .14051 .17022 L .29425 .24357 L F 0 g .4 Mabswid [ ] 0 setdash .1493 .28247 m .1948 .48161 L .36718 .59217 L .44066 .60332 L .43111 .52015 L .36192 .49506 L .45685 .47691 L .45836 .39322 L .31518 .33556 L .3766 .34238 L .97619 .48701 L .96843 .46873 L .82622 .22285 L .70952 .06735 L .59136 .14582 L .80173 .33888 L .58313 .17089 L .26012 .05326 L .14051 .17022 L .29425 .24357 L .1493 .28247 L s MathSubEnd P % End of sub-graphic % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{393.562, 243.25}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgE[F00<007ooOol0 FGoo00<005[FF]H03e[F100000=oo`0000002`00EU[F2@008goo0018Ool3000mF]H2001IOol00`00 F]IJeP0CF]H50009Ool=000OF]HC000PF]H8000KOol004Eoo`<003=JeP8000eJeP8005Ioo`03001J eU[F01UJeP@0019oo`d001IJePL000Qoob<000EJePT0019oo`00@Goo1P007oo1@002Woo0P00 :e[F0P0000=oo`00F]H06E[F0P0067oo00<007ooOol0F]H00`00F]IJeP0TF]H20004Ool30002F]H4 000_Ool2000`Ool002Aoo`D0019oo`8002EJeP8000IJeP8000Aoo`03001JeU[F02YJeP8000Moo`05 001JeU[FF]H0000fOol00`00F]IJeP0?F]H00`00F]IJeP0UF]H20005Ool40002F]H4000[Ool00`00 F]H0000_Ool0025oo`@001Aoo`8002EJeP<000IJeP03001oogoo00=oo`03001JeU[F02eJeP8000Ao o`03001JeU[F009JeP03001oogoo03Aoo`03001JeU[F00mJeP8002QJeP8000Moo`<000=JePD002Io o`03001JeP0002moo`007Woo10005Goo0P009E[F0`001U[F0P001Goo00<005[FF]H0<5[F0P0000=o o`00F]H015[F00<007ooOol0=7oo00<005[FF]H045[F00<005[FF]H0:5[F0`001goo100015[F1000 8Goo00D005[FF]IJeP0002ioo`006goo0`0067oo00<005[FF]H095[F0`001E[F0P001Woo00<005[F F]H0F]H00`00Oomoo`0eOol00`00F]IJeP0DF]H2000eF]H2 000COol300000e[F001oo`09Ool00`00F]IJeP09F]H00`00Oomoo`0XOol002Qoo`8001=JeP80015o o`<0009oo`04001JeU[FF]H2000KOol2000RF]H00`00F]IJeP0:F]H00`00Oomoo`0fOol00`00F]IJ eP0EF]H2000fF]H2000DOol20009Ool00`00F]IJeP0;F]H00`00Oomoo`0WOol002Ioo`8001AJeP03 001oogoo01Aoo`8000=JeP03001oogoo01eoo`<0021JeP8000YJeP03001oogoo03Ioo`03001JeU[F 01EJeP8003QJeP8001aoo`03001JeU[F00aJeP03001oogoo02Moo`009Goo00<005[FF]H04e[F00<0 07ooOol057oo00@005[FF]IJeP8002=oo`8001mJeP<000QJeP03001oogoo03Ioo`03001JeU[F01IJ eP8003UJeP8001Yoo`03001JeU[F00eJeP03001oogoo02Ioo`009Goo00<005[FF]H04U[F00<007oo Ool04goo0P000U[F0P009goo0P007U[F00<007oo00001U[F00<007ooOol0=goo00<005[FF]H05U[F 00<007oo0000>U[F0P005goo00<005[FF]H03e[F00<007ooOol09Goo000TOol00`00F]IJeP0AF]H2 000EOol00`00F]IJeP02000[Ool2000MF]H40004F]H00`00Oomoo`0gOol00`00F]IJeP0GF]H2000l F]H2000DOol00`00F]IJeP0@F]H00`00Oomoo`0UOol002Aoo`03001JeU[F011JeP03001oogoo01Ao o`04001JeU[F000_Ool3000LF]H01000Ool000000U[F00<007ooOol0=goo00<005[FF]H05e[F00<0 07oo0000?E[F0`004Goo00<005[FF]H04E[F00<007ooOol097oo000TOol00`00F]IJeP0?F]H00`00 Oomoo`0COol200000e[F0000000cOol2000KF]H00`00Oomoo`02000iOol00`00F]IJeP0IF]H20010 F]H2000>Ool00`00F]IJeP0CF]H00`00Oomoo`0SOol002=oo`03001JeU[F00iJeP8001Eoo`04001J eP00000/Ool<000KF]H01000Oomoo`00>Goo00<005[FF]H06E[F00<007oo0000@E[F0P002goo00<0 05[FF]H055[F00<007ooOol08goo000SOol00`00F]IJeP0=F]H00`00Oomoo`0COol200000e[F001o o`0GOolF000XF]H00`00Oomoo`0iOol00`00F]IJeP0JF]H00`00Ool00012F]H20009Ool00`00F]IJ eP0EF]H00`00Oomoo`0ROol0029oo`03001JeU[F00eJeP03001oogoo01=oo`04001JeP00000>Ool; 000oF]H00`00Oomoo`0hOol00`00F]IJeP0JF]H00`00Ool00014F]H20006Ool00`00F]IJeP0FF]H0 0`00Oomoo`0ROol0029oo`03001JeU[F00]JeP8001Eoo`<001Aoo`H0045JeP8003Qoo`03001JeU[F 01]JeP03001oo`0004EJeP8000Aoo`03001JeU[F01MJeP03001oogoo025oo`008Woo00<005[FF]H0 2U[F00<007ooOol04goo0`0077oo1P00?E[F00<007ooOol0=Goo00<005[FF]H06e[F00@007ooOol0 01YJePH002IJeP800003Ool005[F01YJeP03001oogoo021oo`008Goo00<005[FF]H02U[F00<007oo Ool04goo0`008goo1`00=e[F00<007ooOol0=7oo00<005[FF]H075[F00@007ooOol001]JeP<00003 Ool0000000P001iJeP03001JeU[F01YJeP03001oogoo021oo`008Goo00<005[FF]H02E[F00<007oo Ool04Woo0`00;7oo1P00goo1P009e[F0P00Goo00<005[FF]H085[F00D007ooOomoo`0001iJeP<000QJeP<0 02]oo`X000=JeP03001oogoo01aoo`007Woo00<005[FF]H015[F00<007ooOol0B7oo1`00:U[F0P00 >goo00<005[FF]H085[F00<007ooOol00Woo00<005[FF]H06e[F00<007ooOol00`0025[F0`00goo1@00>5[F0P00@goo00<005[FF]H08E[F00<007ooOol0 0Woo0P007E[F00<007ooOol01goo10001E[F0`00C7oo000MOol01000F]IJeP00>Goo0`00>e[F0P00 AGoo00<005[FF]H08E[F00<007ooOol017oo0P0075[F00<007ooOol02Woo0`001E[F0`00BGoo000L Ool01000F]H00000=goo0`00>e[F0`00Agoo00<005[FF]H08U[F00<007ooOol01Goo00<005[FF]H0 6U[F00<007ooOol037oo100015[F0`00AWoo000LOol2000fOol3000lF]H2001:Ool00`00F]IJeP0R F]H00`00Oomoo`06Ool2000KF]H2000@Ool30004F]H30013Ool001aoo`03001oogoo039oo`<003eJ eP8004aoo`03001JeU[F02=JeP03001oogoo00Moo`8001]JeP80015oo`@000=JeP<0041oo`006goo 00<007ooOol0<7oo0`00?U[F0P00CWoo00<005[FF]H08e[F00<007ooOol02Goo0P006e[F0`004Woo 0`000e[F0`00?Goo001;Ool3000nF]H3001AOol00`00F]IJeP0SF]H00`00Oomoo`0:Ool2000LF]H2 000COol40002F]H3000jOol004Qoo`<003mJeP8005Aoo`03001JeU[F02=JeP03001oogoo00aoo`03 001JeU[F01]JeP8001Eoo`<0009JeP<003Moo`00AGoo0`00@5[F0P00EWoo00<005[FF]H095[F00<0 07ooOol037oo0P007E[F0P005Woo0`000U[F0`00=7oo0012Ool30010F]H3001HOol00`00F]IJeP0T F]H00`00Oomoo`0>Ool2000MF]H2000GOol4000015[F00000000Woo00<005[FF]H045[F00<007ooOol05[F1000BGoo00<005[FF]H035[F00<007ooOol0=Woo00<005[FF]H00e[F00<007ooOol0 97oo0`000e[F0P00:Woo0P005E[F00<007ooOol087oo000QOol00`00F]IJeP0dF]H3001>Ool00`00 F]IJeP0;F]H00`00Oomoo`0fOol00`00F]IJeP03F]H00`00Oomoo`0WOol20003F]H2000ZOol2000C F]H00`00Oomoo`0POol0025oo`03001JeU[F031JeP@0059oo`8000]JeP03001oogoo03Moo`03001J eU[F009JeP03001oogoo02Uoo`<0009JeP8002Yoo`03001JeU[F015JeP03001oogoo01moo`008Woo 00<005[FF]H0:e[F1000F7oo00<005[FF]H025[F00<007ooOol0>7oo00D005[FF]IJeP0002ioo`80 009JeP8002Uoo`80019JeP03001oogoo01ioo`008goo00<005[FF]H09e[F0`00GGoo00<005[FF]H0 1e[F00<007ooOol0>Goo00@005[FF]H0031oo`<00003F]H0000002Uoo`80011JeP03001oogoo01io o`008goo00<005[FF]H08e[F1000HGoo0P001e[F00<007ooOol0>Goo00@005[FF]H003=oo`800003 F]H0000002Uoo`8000mJeP03001oogoo01eoo`0097oo00<005[FF]H07U[F1000Igoo00<005[FF]H0 15[F00<007ooOol0>Woo00<005[F0000=Goo1@00:Goo0P003U[F00<007ooOol077oo000UOol00`00 F]IJeP0JF]H3001/Ool00`00F]IJeP03F]H00`00Oomoo`0kOol2000hOol4000YOol00`00F]IJeP0; F]H00`00Oomoo`0LOol002Eoo`03001JeU[F01IJeP@0071oo`03001JeU[F009JeP03001oogoo03ao o`03001oogoo03Uoo`<002Qoo`8000aJeP03001oogoo01]oo`009Woo00<005[FF]H04E[F1000MGoo 0P000U[F00<007ooOol0NWoo0`00:7oo0`002E[F00<007ooOol06goo000WOol00`00F]IJeP0=F]H3 001kOol00`00F]H0001oOol00`00Oomoo`0XOol30007F]H00`00Oomoo`0JOol002Qoo`03001JeU[F 00QJeP@007moo`800:eoo`<000EJeP03001oogoo01Uoo`00:7oo00<005[FF]H015[F1000Q7oo00<0 07ooOol0[Woo0`000U[F00<007ooOol06Goo000YOol00`00F]IJeP03003oOolmOol4000JOol002Yo o`800?mood=oo`8001Uoo`00ogooRWoo003oOon:Ool00?moohYoo`00ogooRWoo003oOon:Ool00?mo ohYoo`00ogooRWoo003oOon:Ool00?moohYoo`00ogooRWoo003oOon:Ool00?moohYoo`00ogooRWoo 003oOon:Ool00?moohYoo`00ogooRWoo002COol3003cOol008moo`@0009JeP03001oogoo0?5oo`00 S7oo0`001U[F00<007ooOol0lGoo0028Ool40009F]H00`00Oomoo`3aOol008Aoo`@000eJeP03001o ogoo0?5oo`00PGoo0`004E[F00<007ooOol0lGoo001mOol4000EF]H00`00Oomoo`1ROol2002Woo001V Ool4000/F]H00`00Oomoo`1LOol00`00F]IJeP0CF]H3000hOol00`00F]IJeP04F]H00`00Oomoo`0i Ool006=oo`<0031JeP03001oogoo05]oo`03001JeU[F01MJeP8003Aoo`8000QJeP03001oogoo03Qo o`00Ggoo10007oo001KOol4000gF]H00`00Oomoo`1IOol00`00F]IJeP0NF]H3000[Ool2000F]H00`00Oomoo`1BOol00`00F]IJeP0dF]H3000BOol2 000JF]H00`00Oomoo`0bOol0045oo`@0059JeP03001oogoo055oo`03001JeU[F03QJeP<000ioo`03 001JeU[F01YJeP03001oogoo039oo`00?Goo1000EU[F00<007ooOol0D7oo00<005[FF]H0?5[F0`00 2Woo0P007E[F00<007ooOol0Goo00<005[FF]H0GE[F00<007ooOol0HGoo0P00A5[F00D007ooOomoo`00 01QJeP03001oogoo02Ioo`00>Woo00<005[FF]H0G5[F00<007ooOol0Hgoo0P00@e[F00D007ooOomo o`0001MJeP03001oogoo02Ioo`00>goo0P00G5[F00<007ooOol0Hgoo0`00@e[F0P000Woo00<005[F F]H05E[F00<007ooOol09Goo000mOol00`00F]IJeP1IF]H00`00Oomoo`1OOol40018F]H01000Oomo o`005e[F00<007ooOol097oo000nOol00`00F]IJeP1HF]H00`00Oomoo`1LOol3001=F]H01000Oomo o`005U[F00<007ooOol097oo000oOol00`00F]IJeP1GF]H00`00Oomoo`1HOol4001AF]H01000Oomo o`005U[F00<007ooOol08goo0010Ool00`00F]IJeP1FF]H00`00Oomoo`1DOol4001FF]H200000goo 001JeP0DF]H00`00Oomoo`0SOol0045oo`03001JeU[F05EJeP03001oogoo055oo`<005aJeP03001o o`0001EJeP03001oogoo029oo`00@Woo0P00EE[F00<007ooOol0CGoo1000H5[F00@007oo000001AJ eP03001oogoo025oo`00A7oo00<005[FF]H0DU[F00<007ooOol0Bgoo0P00IE[F0P0000=oo`00F]H0 4U[F00<007ooOol08Goo0015Ool00`00F]IJeP1AF]H00`00Oomoo`1;Ool00`00F]IJeP1VF]H00`00 Ool0000CF]H00`00Oomoo`0POol004Ioo`03001JeU[F055JeP03001oogoo04Yoo`03001JeU[F06MJ eP03001oo`00019JeP03001oogoo021oo`00Agoo00<005[FF]H0D5[F00<007ooOol0Bgoo00<005[F F]H0Ie[F0`004U[F00<007ooOol07goo0018Ool5001=F]H00`00Oomoo`1;Ool00`00F]IJeP1YF]H2 000BF]H00`00Oomoo`0NOol004eoo`L004IJeP03001oogoo04]oo`03001JeU[F06YJeP80015JeP03 001oogoo01ioo`00E7oo0`00@e[F00<007ooOol0Bgoo00<005[FF]H0Je[F0P004E[F00<007ooOol0 7Goo001COol20015F]H00`00Oomoo`1;Ool00`00F]IJeP1/F]H2000@F]H00`00Oomoo`0MOol0055o o`8004MJeP03001oogoo04aoo`03001JeU[F06eJeP03001JeU[F00iJeP03001oogoo01aoo`00CWoo 0`00BE[F00<007ooOol0C7oo00<005[FF]H0KU[F00<005[FF]H03U[F00<007ooOol06goo001Ool40017F]H00`00Oomoo`0GOol003eoo`80 05aJeP03001oogoo04eoo`03001JeU[F02QJeP<000moo`D0049JeP03001oogoo01Moo`00>goo0P00 GU[F00<007ooOol0CGoo00<005[FF]H0:e[F0P004Woo1000?e[F00<007ooOol05Woo000iOol2001P F]H00`00Oomoo`1=Ool00`00F]IJeP0]F]H3000COol4000kF]H00`00Oomoo`0FOol003Moo`80069J eP03001oogoo04eoo`03001JeU[F031JeP03001oogoo01Aoo`@003QJeP03001oogoo01Eoo`00=Goo 0P00I5[F00<007ooOol0CWoo00<005[FF]H0;e[F00<007ooOol067oo1@00=5[F00<007ooOol057oo 000bOol3001VF]H00`00Oomoo`1>Ool00`00F]IJeP0_F]H00`00Oomoo`0MOol4000`F]H00`00Oomo o`0DOol0031oo`8006UJeP03001oogoo04ioo`03001JeU[F02mJeP03001oogoo025oo`@002eJeP03 001oogoo01=oo`00;Woo0P00K5[F00<007ooOol0CGoo00<005[FF]H0;e[F00<007ooOol09Goo1000 :E[F00<007ooOol04goo000]Ool3001/F]H00`00Oomoo`1>Ool00`00F]IJeP0^F]H00`00Oomoo`0Y Ool4000VF]H00`00Oomoo`0BOol0031oo`<006UJeP03001oogoo04ioo`03001JeU[F02iJeP03001o ogoo02eoo`D0029JeP03001oogoo015oo`00Ool004Eoo`<005]JeP8004Uoo`03001JeU[F02eJ eP03001oogoo04Moo`@000aJeP03001oogoo00ioo`00B7oo0`00FU[F0P00Agoo00<005[FF]H0;E[F 00<007ooOol0Bgoo10002E[F00<007ooOol03Goo001;Ool4001HF]H20016Ool00`00F]IJeP0/F]H0 0`00Oomoo`1?Ool50004F]H00`00Oomoo`0=Ool004moo`<005MJeP8004Aoo`8002YJeP@005Ioo`@0 0003F]H007oo00eoo`00DWoo1000EE[F00<007ooOol0@goo00<005[FF]H08E[F1P00GWoo0P003Woo 001FOol3001CF]H20014Ool2000LF]H5001dOol005Uoo`@0055JeP8004Aoo`03001JeU[F01IJeP<0 07Uoo`00GGoo0`00D5[F0P00@goo0P006E[F0`00MWoo001POol4001>F]H20013Ool2000JF]H3001c Ool006Aoo`<004eJeP03001oogoo049oo`03001JeU[F01YJeP<0071oo`00Igoo1000BU[F0P00@goo 0P007E[F00<007ooOol0KGoo001[Ool30017F]H30014Ool00`00F]IJeP0JF]H00`00Oomoo`1]Ool0 06ioo`@0041JeP<004Qoo`8001YJeP03001oogoo06eoo`00LWoo0`00>E[F1000CGoo00<005[FF]H0 5e[F00<007ooOol0KGoo001eOol4000bF]H3001BOol2000GF]H00`00Oomoo`1]Ool007Uoo`<002aJ eP<005Moo`03001JeU[F01EJeP03001oogoo06aoo`00O7oo10009e[F00<007ooOol0FGoo0P005E[F 00<007ooOol0K7oo0020Ool3000SF]H00`00Oomoo`1LOol00`00F]IJeP0BF]H00`00Oomoo`1/Ool0 08=oo`<001iJeP80061oo`80019JeP03001oogoo06aoo`00QWoo10006E[F00<007ooOol0HWoo0P00 45[F00<007ooOol0K7oo002:Ool3000EF]H00`00Oomoo`1UOol00`00F]IJeP0=F]H00`00Oomoo`1/ Ool008eoo`@0011JeP03001oogoo06Moo`8000eJeP03001oogoo06aoo`00TGoo0`002e[F0P00K7oo 00<005[FF]H02e[F00<007ooOol0Jgoo002DOol40006F]H00`00Oomoo`1]Ool40009F]H00`00Oomo o`1[Ool009Qoo`<0009JeP03001oogoo079oo`L0009JeP03001oogoo06]oo`00Vgoo0P00O7oo0`00 KGoo003oOon:Ool00?moohYoo`00ogooRWoo003oOon:Ool00?moohYoo`00ogooRWoo003oOon:Ool0 0?moohYoo`00\ \>"], ImageRangeCache->{{{0, 392.562}, {242.25, 0}} -> {-0.0515943, -0.0309082, \ 0.00535759, 0.00535759}, {{9.625, 187.375}, {236.438, 126.562}} -> \ {-0.0760455, -0.0767954, 0.00548749, 0.00910036}, {{205.125, 382.875}, \ {236.438, 126.562}} -> {-1.23485, -0.0802122, 0.00589828, 0.00950526}, \ {{9.625, 187.375}, {115.625, 5.75}} -> {-0.0751143, -1.21023, 0.00542029, \ 0.00936336}, {{205.125, 382.875}, {115.625, 5.75}} -> {-1.17886, -1.15095, \ 0.00563083, 0.00890474}}], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": Some random-looking polygons generated by the steady-growth algorithm: \ the number of vertices ranges from 10 to 40 in steps of 10." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Array of Random Polygons"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ CounterBox["Section"], ". A Comprehensive Package" }], "Section"], Cell[TextData[{ "The ", StyleBox["RandomPolygon", "Input"], " package in the electronic supplement is more sophisticated than the basic \ routines presented here. Here are some of its features:" }], "Text"], Cell[TextData[{ "\[Bullet] A ", StyleBox["ShowSteps", "Input"], " option creates a movie showing the addition of each successive point.\n\n\ \[Bullet] A smoothing option causes the polygon to be smoothed: each point is \ replaced by the two points that are 25% of the way along the two edges \ emanating from it. This doubles the number of points, but eliminates the \ sharp edges, whichi leads to more visually pleasing polygons (see Figure ", CounterBox["NumberedFigure", "Smoothed Random Polygons"], "). The constant, 0.25, can be changed by the ", StyleBox["SmoothingParameter", "Input"], " option. It is possible that such smoothing will lead to a \ self-intersection, and an error trap (which can be suppressed) checks for \ that. The implementation of this option is via ", StyleBox["SmoothingIterations", "Input"], ", which can be 1, for a single smoothing, or a larger integer, for \ repeated smoothing.\n\n\[Bullet] A ", StyleBox["Method", "Input"], " option allows two methods to be used: ", StyleBox["SteadyGrowth", "Input"], " (the default) and ", StyleBox["PermuteAndReject", "Input"], ". The latter runs through permutations of the points until a good \ permutation is found. This works only for small sets of points, but it has \ the benefit that each polygon on the points is equally likely to be \ generated.\n\n\[Bullet] A ", StyleBox["SmoothCurve", "Input"], " option causes interpolation to be used to generate smooth function for \ the ", Cell[BoxData[ \(TraditionalForm\`x\)]], "- and ", Cell[BoxData[ \(TraditionalForm\`y\)]], "-coordinates. This works better if ", StyleBox["Smoothing", "Input"], " is used as well, but there is no check to see if the result is a simple \ curve and the results are generally not very satisfactory.\n\n\[Bullet] A ", StyleBox["ShowPolygon", "Input"], " option to toggle the display of the polygon; ", StyleBox["PolygonColor", "Input"], ", ", StyleBox["ShowPoints", "Input"], ", ", StyleBox["PointStyle", "Input"], ", ", StyleBox["BorderStyle", "Input"], ", and ", StyleBox["Background", "Input"], " options to control the style of various aspects of the displayed polygon.\ \n\n\[Bullet] It includes a triangulation routine (using diagonals only) \ using the most basic basic triangulation method as discussed in chapter 23 of \ [Wagon 1999].\n\n\[Bullet] It includes an ", StyleBox["Angles", "Input"], " function that returns the list of angles in a polygon. This allows one to \ do experiments on the distribution of angles. And there is an ", StyleBox["AngleInterval", "Input"], " option that causes the algorithm to generate polygons until it finds one \ whose angles lie in the specified interval.\n\n\[Bullet] When the input to ", StyleBox["RandomPolygon", "Input"], " is a set of points, they are permuted right away by a random permutation. \ This guarantees that different runs on the same point set will yield a \ different polygon. " }], "Text"], Cell[TextData[{ "We now present several applications of these options. First, here is how \ triple smoothing can yield a more visually pleasing, if less random, polygon \ (see Figure ", CounterBox["NumberedFigure", "Smoothed Random Polygons"], "). The check for self-intersection is slow, so we turn it off." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(SeedRandom[2]; \ RandomPolygon[25];\), "\[IndentingNewLine]", \(SeedRandom[2]; \ RandomPolygon[ 25, \[IndentingNewLine]SmoothingIterations \[Rule] 3, \ \[IndentingNewLine]CorrectnessCheckWhenSmoothing \[Rule] False];\)}], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1.29787 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.952381 0.0309017 0.952381 [ [ 0 0 0 0 ] [ 1 1.29787 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 1.29787 L 0 1.29787 L closepath clip newpath % Start of sub-graphic p 0.0238095 0.0309017 0.97619 0.619505 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 1.01091 0.0147151 0.633502 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .26392 .52787 m .23955 .50526 L .22405 .48497 L .2174 .46701 L .21963 .45139 L .23071 .43809 L .25066 .42712 L .27947 .41849 L .31715 .41219 L .35147 .4062 L .38244 .40055 L .41005 .39521 L .43431 .3902 L .45522 .3855 L .47277 .38114 L .48696 .37709 L .49781 .37337 L .50878 .37035 L .51988 .36805 L .53112 .36646 L .54248 .36558 L .55397 .3654 L .56559 .36594 L .57734 .36719 L .58923 .36915 L .6005 .36658 L .61116 .35948 L .62122 .34786 L .63066 .33171 L .63949 .31103 L .64772 .28582 L .65533 .25608 L .66234 .22182 L .66047 .19634 L .64972 .17964 L .6301 .17172 L .60161 .17258 L .56424 .18223 L .518 .20065 L .46288 .22785 L .39888 .26384 L .34063 .29588 L .28812 .32399 L .24136 .34816 L .20033 .36838 L .16505 .38467 L .13551 .39701 L .11171 .40542 L .09365 .40989 L .08016 .41048 L .07122 .40721 L .06683 .40006 L .06701 .38903 L .07174 .37414 L .08103 .35537 L .09488 .33273 L .11329 .30622 L .13081 .28143 L .14745 .25835 L .16321 .23698 L .17808 .21733 L .19206 .19939 L .20516 .18317 L .21738 .16867 L .22871 .15588 L .23979 .1437 L .25061 .13213 L .26118 .12118 L .27149 .11083 L .28154 .1011 L .29134 .09197 L .30088 .08346 L .31017 .07556 L .3238 .06894 L .34176 .0636 L .36407 .05953 L .39071 .05674 L .4217 .05523 L .45703 .05499 L .49669 .05603 L .5407 .05835 L .58335 .06056 L .62466 .06266 L .66462 .06465 L .70323 .06652 L .74049 .06829 L .7764 .06994 L .81097 .07148 L .84418 .07291 L .87069 .0747 L .89049 .07684 L .90359 .07934 L .90999 .08219 L .90968 .0854 L .90266 .08896 L .88894 .09289 L .86851 .09716 L .8506 .10119 L .8352 .10496 L .82232 .10847 L .81195 .11173 L .80409 .11474 L .79875 .11749 L .79592 .11999 L .79561 .12223 L .79738 .12516 L .80125 .12877 L .8072 .13306 L .81525 .13804 L .82539 .1437 L .83762 .15004 L .85193 .15706 L .86834 .16477 L .88385 .17266 L .89845 .18072 L .91214 .18896 L .92493 .19737 L .93682 .20596 L .94781 .21473 L .95789 .22368 L .96706 .2328 L .97316 .24147 L .97619 .24968 L .97614 .25744 L .97302 .26474 L .96681 .27159 L .95754 .27798 L .94519 .28392 L .92976 .2894 L .91626 .29675 L .90467 .30598 L .89501 .31708 L .88728 .33006 L .88146 .34492 L .87757 .36165 L .8756 .38025 L .87555 .40073 L .87439 .41943 L .87211 .43637 L .86872 .45154 L .86421 .46494 L .85859 .47657 L .85186 .48642 L .84401 .49451 L .83504 .50083 L .8211 .50819 L .80219 .51659 L .77829 .52603 L .74942 .53652 L .71558 .54804 L .67676 .56061 L .63296 .57422 L .58418 .58887 L .53735 .59857 L .49246 .60332 L .44951 .60312 L .40851 .59797 L .36945 .58787 L .33233 .57282 L .29716 .55282 L F 0 g .4 Mabswid [ ] 0 setdash .26392 .52787 m .23955 .50526 L .22405 .48497 L .2174 .46701 L .21963 .45139 L .23071 .43809 L .25066 .42712 L .27947 .41849 L .31715 .41219 L .35147 .4062 L .38244 .40055 L .41005 .39521 L .43431 .3902 L .45522 .3855 L .47277 .38114 L .48696 .37709 L .49781 .37337 L .50878 .37035 L .51988 .36805 L .53112 .36646 L .54248 .36558 L .55397 .3654 L .56559 .36594 L .57734 .36719 L .58923 .36915 L .6005 .36658 L .61116 .35948 L .62122 .34786 L .63066 .33171 L .63949 .31103 L .64772 .28582 L .65533 .25608 L .66234 .22182 L .66047 .19634 L .64972 .17964 L .6301 .17172 L .60161 .17258 L .56424 .18223 L .518 .20065 L .46288 .22785 L .39888 .26384 L .34063 .29588 L .28812 .32399 L .24136 .34816 L .20033 .36838 L .16505 .38467 L .13551 .39701 L .11171 .40542 L .09365 .40989 L .08016 .41048 L Mistroke .07122 .40721 L .06683 .40006 L .06701 .38903 L .07174 .37414 L .08103 .35537 L .09488 .33273 L .11329 .30622 L .13081 .28143 L .14745 .25835 L .16321 .23698 L .17808 .21733 L .19206 .19939 L .20516 .18317 L .21738 .16867 L .22871 .15588 L .23979 .1437 L .25061 .13213 L .26118 .12118 L .27149 .11083 L .28154 .1011 L .29134 .09197 L .30088 .08346 L .31017 .07556 L .3238 .06894 L .34176 .0636 L .36407 .05953 L .39071 .05674 L .4217 .05523 L .45703 .05499 L .49669 .05603 L .5407 .05835 L .58335 .06056 L .62466 .06266 L .66462 .06465 L .70323 .06652 L .74049 .06829 L .7764 .06994 L .81097 .07148 L .84418 .07291 L .87069 .0747 L .89049 .07684 L .90359 .07934 L .90999 .08219 L .90968 .0854 L .90266 .08896 L .88894 .09289 L .86851 .09716 L .8506 .10119 L .8352 .10496 L .82232 .10847 L Mistroke .81195 .11173 L .80409 .11474 L .79875 .11749 L .79592 .11999 L .79561 .12223 L .79738 .12516 L .80125 .12877 L .8072 .13306 L .81525 .13804 L .82539 .1437 L .83762 .15004 L .85193 .15706 L .86834 .16477 L .88385 .17266 L .89845 .18072 L .91214 .18896 L .92493 .19737 L .93682 .20596 L .94781 .21473 L .95789 .22368 L .96706 .2328 L .97316 .24147 L .97619 .24968 L .97614 .25744 L .97302 .26474 L .96681 .27159 L .95754 .27798 L .94519 .28392 L .92976 .2894 L .91626 .29675 L .90467 .30598 L .89501 .31708 L .88728 .33006 L .88146 .34492 L .87757 .36165 L .8756 .38025 L .87555 .40073 L .87439 .41943 L .87211 .43637 L .86872 .45154 L .86421 .46494 L .85859 .47657 L .85186 .48642 L .84401 .49451 L .83504 .50083 L .8211 .50819 L .80219 .51659 L .77829 .52603 L .74942 .53652 L .71558 .54804 L Mistroke .67676 .56061 L .63296 .57422 L .58418 .58887 L .53735 .59857 L .49246 .60332 L .44951 .60312 L .40851 .59797 L .36945 .58787 L .33233 .57282 L .29716 .55282 L .26392 .52787 L Mfstroke MathSubEnd P % End of sub-graphic % Start of sub-graphic p 0.0238095 0.678366 0.97619 1.26697 MathSubStart %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.987085 0.0147151 0.596202 [ [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .7 g .14469 .41548 m .43899 .36802 L .52369 .33999 L .61651 .35473 L .67122 .09677 L .17134 .3677 L .0303 .40134 L .17409 .20173 L .26262 .10544 L .33516 .04596 L .6789 .06343 L .93835 .07419 L .77879 .1064 L .77634 .1233 L .90451 .18132 L .97619 .25002 L .85568 .29127 L .85531 .44545 L .78529 .49302 L .40429 .60332 L F 0 g .4 Mabswid [ ] 0 setdash .14469 .41548 m .43899 .36802 L .52369 .33999 L .61651 .35473 L .67122 .09677 L .17134 .3677 L .0303 .40134 L .17409 .20173 L .26262 .10544 L .33516 .04596 L .6789 .06343 L .93835 .07419 L .77879 .1064 L .77634 .1233 L .90451 .18132 L .97619 .25002 L .85568 .29127 L .85531 .44545 L .78529 .49302 L .40429 .60332 L .14469 .41548 L s MathSubEnd P % End of sub-graphic % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{109.875, 142.562}, ImageMargins->{{30, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgE[F0P0057oo000KOol00`00F]IJeP0kF]H00`00Oomoo`0AOol001Yoo`03001JeU[F03eJeP80015o o`0067oo0P009E[F1P005e[F0`003Woo000GOol00`00F]IJeP0RF]H30006Ool00`00F]IJeP0GF]H2 000Ool001Uoo`03001JeU[F041JeP03001oogoo00ioo`006Goo00<005[FF]H0@5[F00<007ooOol0 3Woo000IOol00`00F]IJeP0oF]H00`00Oomoo`0?Ool001Uoo`03001JeU[F03iJeP03001oogoo011o o`006Woo00<005[FF]H0>e[F0`004Woo000KOol00`00F]IJeP0hF]H2000EOol001aoo`03001JeU[F 03EJeP8001Moo`007Goo0P00 Ool00`00F]IJeP0AF]H2000POol00`00F]IJeP0DF]H2000@Ool000eoo`03001JeU[F011JeP80025o o`03001JeU[F01EJeP03001oogoo00moo`0037oo00<005[FF]H03e[F0P008goo00<005[FF]H05E[F 00<007ooOol03goo000"], ImageRangeCache->{{{0, 108.875}, {141.562, 0}} -> {-0.0250052, -0.0336924, \ 0.00964418, 0.00964418}, {{2.5625, 106.25}, {138.062, 73.9375}} -> \ {-0.0480047, -0.0768446, 0.00954038, 0.015224}, {{2.5625, 106.25}, {67.5625, \ 3.4375}} -> {-0.0491634, -1.2221, 0.00977065, 0.0161765}}] }, Open ]], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": A 20-gon generated by the steady-growth algorithm and the result of \ smoothing it three times." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Smoothed Random Polygons"], Cell[TextData[{ "Here is an example of the triangulation routine, with the triangles \ colored different shades. The polygon and triangulation are shown in Figure ", CounterBox["NumberedFigure", "Triangulated and Colored"], ", where a simple algorithm (the triangles of a triangulation always form a \ tree) was used to 2-color the triangles." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(poly = RandomPolygon[15];\)\), "\[IndentingNewLine]", \(Triangulate[poly]\)}], "Input"], Cell[BoxData[ \({{1, 2, 3}, {3, 4, 5}, {5, 6, 7}, {3, 5, 7}, {3, 7, 8}, {3, 8, 9}, {9, 10, 11}, {3, 9, 11}, {3, 11, 12}, {3, 12, 13}, {1, 3, 13}, {1, 13, 14}, {1, 14, 15}}\)], "Output"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .95019 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Background color 1 1 1 r MFill % Scaling calculations 0.0232837 1.03528 -0.0789083 1.03528 [ [ 0 0 0 0 ] [ 1 .95019 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .95019 L 0 .95019 L closepath clip newpath 1 1 1 r 0 0 m 0 .95019 L 1 .95019 L 1 0 L F 0 g 3 Mabswid [ ] 0 setdash 0 0 m 1 0 L 1 .95019 L 0 .95019 L 0 0 L s .9 g .84862 .38272 m .69679 .44773 L .51907 .38362 L F 0 g .5 Mabswid .84862 .38272 m .69679 .44773 L .51907 .38362 L .84862 .38272 L s .9 g .51907 .38362 m .94824 .73611 L .74289 .7519 L F 0 g .51907 .38362 m .94824 .73611 L .74289 .7519 L .51907 .38362 L s .9 g .74289 .7519 m .84084 .89555 L .76677 .84661 L F 0 g .74289 .7519 m .84084 .89555 L .76677 .84661 L .74289 .7519 L s .4 g .51907 .38362 m .74289 .7519 L .76677 .84661 L F 0 g .51907 .38362 m .74289 .7519 L .76677 .84661 L .51907 .38362 L s .9 g .51907 .38362 m .76677 .84661 L .43373 .59963 L F 0 g .51907 .38362 m .76677 .84661 L .43373 .59963 L .51907 .38362 L s .4 g .51907 .38362 m .43373 .59963 L .28634 .80447 L F 0 g .51907 .38362 m .43373 .59963 L .28634 .80447 L .51907 .38362 L s .4 g .28634 .80447 m .73019 .89842 L .06253 .8558 L F 0 g .28634 .80447 m .73019 .89842 L .06253 .8558 L .28634 .80447 L s .9 g .51907 .38362 m .28634 .80447 L .06253 .8558 L F 0 g .51907 .38362 m .28634 .80447 L .06253 .8558 L .51907 .38362 L s .4 g .51907 .38362 m .06253 .8558 L .05176 .60524 L F 0 g .51907 .38362 m .06253 .8558 L .05176 .60524 L .51907 .38362 L s .9 g .51907 .38362 m .05176 .60524 L .32135 .21798 L F 0 g .51907 .38362 m .05176 .60524 L .32135 .21798 L .51907 .38362 L s .4 g .84862 .38272 m .51907 .38362 L .32135 .21798 L F 0 g .84862 .38272 m .51907 .38362 L .32135 .21798 L .84862 .38272 L s .9 g .84862 .38272 m .32135 .21798 L .57349 .05176 L F 0 g .84862 .38272 m .32135 .21798 L .57349 .05176 L .84862 .38272 L s .4 g .84862 .38272 m .57349 .05176 L .73829 .16246 L F 0 g .84862 .38272 m .57349 .05176 L .73829 .16246 L .84862 .38272 L s 0 0 0 r 1.5 Mabswid .84862 .38272 m .69679 .44773 L .51907 .38362 L .94824 .73611 L .74289 .7519 L .84084 .89555 L .76677 .84661 L .43373 .59963 L .28634 .80447 L .73019 .89842 L .06253 .8558 L .05176 .60524 L .32135 .21798 L .57349 .05176 L .73829 .16246 L .84862 .38272 L s 1 1 1 r .84862 .38272 m .84862 .38272 .00621 0 365.73 arc F 0 0 0 r .4 Mabswid newpath .84862 .38272 .00621 0 365.73 arc s 1 1 1 r .69679 .44773 m .69679 .44773 .00621 0 365.73 arc F 0 0 0 r newpath .69679 .44773 .00621 0 365.73 arc s 1 1 1 r .51907 .38362 m .51907 .38362 .00621 0 365.73 arc F 0 0 0 r newpath .51907 .38362 .00621 0 365.73 arc s 1 1 1 r .94824 .73611 m .94824 .73611 .00621 0 365.73 arc F 0 0 0 r newpath .94824 .73611 .00621 0 365.73 arc s 1 1 1 r .74289 .7519 m .74289 .7519 .00621 0 365.73 arc F 0 0 0 r newpath .74289 .7519 .00621 0 365.73 arc s 1 1 1 r .84084 .89555 m .84084 .89555 .00621 0 365.73 arc F 0 0 0 r newpath .84084 .89555 .00621 0 365.73 arc s 1 1 1 r .76677 .84661 m .76677 .84661 .00621 0 365.73 arc F 0 0 0 r newpath .76677 .84661 .00621 0 365.73 arc s 1 1 1 r .43373 .59963 m .43373 .59963 .00621 0 365.73 arc F 0 0 0 r newpath .43373 .59963 .00621 0 365.73 arc s 1 1 1 r .28634 .80447 m .28634 .80447 .00621 0 365.73 arc F 0 0 0 r newpath .28634 .80447 .00621 0 365.73 arc s 1 1 1 r .73019 .89842 m .73019 .89842 .00621 0 365.73 arc F 0 0 0 r newpath .73019 .89842 .00621 0 365.73 arc s 1 1 1 r .06253 .8558 m .06253 .8558 .00621 0 365.73 arc F 0 0 0 r newpath .06253 .8558 .00621 0 365.73 arc s 1 1 1 r .05176 .60524 m .05176 .60524 .00621 0 365.73 arc F 0 0 0 r newpath .05176 .60524 .00621 0 365.73 arc s 1 1 1 r .32135 .21798 m .32135 .21798 .00621 0 365.73 arc F 0 0 0 r newpath .32135 .21798 .00621 0 365.73 arc s 1 1 1 r .57349 .05176 m .57349 .05176 .00621 0 365.73 arc F 0 0 0 r newpath .57349 .05176 .00621 0 365.73 arc s 1 1 1 r .73829 .16246 m .73829 .16246 .00621 0 365.73 arc F 0 0 0 r newpath .73829 .16246 .00621 0 365.73 arc s % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{183.125, 174}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgL00@0036<000004Qoo`8000000P00HGoo00<007>LLi`017>L 00@0036<L00<0036<L011c W003000aS36<00L00<0036<LLi`06W>L00<0036<Goo0P000002001AOol2000MLi`00`00L01icW003000aS36<00LaS08003Ioo`8000000P00CWoo0P008W>L00<0036<LLi`0:7>L00<0036<L02acW003000aS36<00XaS003001oo`0002eoo`8000000P00AGoo0P00<7>L00<0036<L03AcW003000aS36<00TaS003001oogoo02]oo`8000000P00@7oo0P00>7>L00<0036<L Li`0?G>L00<0036<L00<0 036<L00000S6<0`00?g>L00<0036< L00AcW003000aS36<00@aS0<0 03]cW003000aS36<00HaS003001oogoo02Eoo`8000000P00=Goo00<007>LLi`01W>L0P001c6<1000 >7>L00<0036<L00YcW003000a S36<00XaS0<003=cW003000aS36<00DaS003001oogoo02Aoo`8000000P00LLi`037>L 00<0036<L00<0036<Li`00`00L011cW080014aS0@002acW003000aS36<00@aS003001oogoo029oo`8000000P00LLi`04W>L00<0036<L00<0036<L01IcW003000aS36<01HaS0<002EcW003000aS36<00LLi`05g>L00<0036<L00<0036<L01acW003000aS36<01`aS0<001icW003000aS36<008aS003 001oogoo01moo`8000000P00;Goo00<007>LLi`07G>L00<0036<L00D0036<LLi`07g>L00<0036<L00D0036<LLi`08G>L00<0036<L00D0036<LLi`08W>L0P009C6<100057>L00D0036<LLi`09G>L00<0036<L00@0036<LLi`09g>L00<0036<L00@0036<LLi`0 :G>L00<0036<L00<0036<00007Woo0P000002000XOol00`00LiacW00ZLi`00`00 L02acW08002laS0@000Qc W003000aS00001eoo`8000000P009Woo00<007>LLi`0;g>L00<0036<L00<0036< 000077oo0P000002000VOol00`00LiacW00`Li`00`00L039cW003000aS36<03@aS0<0009cW08001]oo`8000000P0097oo00<007>LLi`0 =7>L0P00=c6<1P006Goo0P000002000TOol00`00LiacW00dLi`00`00Ool0000j00000goo001oo`0H Ool20000008002=oo`03001cW7>L03=cW0P003=cW0H001Uoo`8000000P008Woo00<007>LLi`0L 0P000S6<00H007>L001cW000Ool3000^Li`2000OOol200000080029oo`03001cW7>L031cW08000L02mcW08000@a S0<0009cW004001cW7>L0004Ool3000TLi`3000SOol200000080021oo`03001cW7>L02icW08000Da S003001cW00000=cW080009cW08000Eoo`<001mcW08002Ioo`8000000P007goo00<007>LLi`0;G>L 0P001S6<00@007>L000000AcW003001cW7>L009cW003001oogoo00Eoo`8001]cW08002Qoo`800000 0P007goo00<007>LLi`0:W>L0`001c6<00@007>L000000EcW08000AcW003001oogoo00Ioo`<001Ec W0<002Yoo`8000000P007Woo00<007>LLi`0:G>L0P002C6<00<007>LLi`00P001W>L0P0017>L00<0 07ooOol027oo0`0047>L0P00;Goo0P000002000MOol00`00LiacW00XLi`2000:L00=cW003001oogoo00Yoo`8000acW08002moo`8000000P007Goo00<007>L Li`09W>L0P002c6<00@007>LLiacW08000QcW08000EcW08000aoo`<000IcW0<0035oo`8000000P00 77oo00<007>LLi`09G>L0P00336<00L007>LLiacW000L02AcW08000daS003001cW7>L009cW08000YcW080 00McW003001oogoo00eoo`04001oogoo000dOol20000008001]oo`03001cW7>L029cW08000haS003 001cW7>L009cW003000aS00000]cW08000McW003001oogoo00eoo`8003Eoo`8000000P006Woo00<0 07>LLi`08G>L0P003c6<00<007>LLi`00g>L00<0036<00002g>L0P0027>L00<007ooOol0@goo0P00 0002000IOol00`00LiacW00PLi`2000@L01icW080014aS003001cW7>L00AcW003000aS00000ecW08000Yc W003001oogoo041oo`8000000P0067oo00<007>LLi`07G>L0P004S6<00<007>LLi`017>L00<0036< 00003g>L0P002W>L00<007ooOol0?goo0P000002000GOol00`00LiacW00LLi`2000CL00<0036<00002W>L00<007ooOol0?Woo0P000002000GOol00`00Liac W00JLi`2000DL0P002g>L00<007ooOol0?Goo0P000002 000FOol00`00LiacW00HLi`3000EL00<0036<00002g>L 0P00?Goo0P000002000EOol00`00LiacW00GLi`2000GL 00<0036<000037>L00<007ooOol0>Woo0P000002000DOol00`00LiacW00FLi`2000HL00<0036<00003G>L00<007ooOol0>Goo0P000002000DOol00`00Liac W00DLi`2000IL00<0036<00003G>L00<007ooOol0>7oo 0P000002000COol00`00LiacW00CLi`2000JL00<0 036<00003W>L00<007ooOol0=goo0P000002000BOol00`00LiacW00BLi`2000KL00<0036<00003W>L0P00=goo0P000002000BOol00`00LiacW00@Li`2000L L00<0036<00003g>L00<007ooOol0=7oo0P000002 000AOol00`00LiacW00?Li`2000ML00<0036<000047>L 00<007ooOol0Li`2000NL00<0036<000047>L00<007ooOol0L00]cW080024aS003001cW7>L00UcW005000aS36<L00YcW080028aS003001cW7>L00UcW003 000aS36<008aS003001cW7>L01UcW004000aS36<000BLi`00`00Oomoo`0^Ool20000008000ioo`03 001cW7>L00QcW08002L00YcW005000aS36<L00McW08002@aS003001cW7>L00YcW003000aS36<008a S003001cW7>L01]cW004000aS36<000CLi`00`00Oomoo`0/Ool20000008000aoo`03001cW7>L00Ec W0<002DaS003001cW7>L00]cW003000aS36<008aS003001cW7>L01acW004000aS36<000CLi`00`00 Oomoo`0[Ool20000008000]oo`03001cW7>L00AcW08002LaS003001cW7>L00]cW003000aS36<008a S003001cW7>L01ecW004000aS36<000DLi`2000[Ool20000008000]oo`03001cW7>L009cW08002Pa S003001cW7>L00acW003000aS36<008aS003001cW7>L01icW004000aS36<000ELi`00`00Oomoo`0X Ool20000008000Yoo`04001cW7>LLi`2000YL00<007ooOol09goo0P0000020009Ool00`00LiacW002000ZL00<007ooOol09Woo0P00 00020009Ool3000[L 00<007ooOol09Goo0P0000020006Ool4000/L0P009Goo0P0000020006Ool00`00Ool0000/Li`00`00L00<007ooOol08Woo0P0000020007Ool2000[ Li`00`00L00@0036<LLi`03g>L00<0036<L00@0036<LLi`03g>L00<0036<LLi`07W>L00D0036<LLi`047>L00<0036<LLi`07W>L00@0036<LLi`047>L00<0036<L00D0036<LLi`04G>L00D0036< L01acW004000aS36<000LLi`00`00Oomoo`0KOol20000008000Moo`03 000aS36<02@aS003001cW7>L015cW003000aS36<008aS003001oogoo00eoo`8001acW005000aS36< L019cW005000a S36<L00<007ooOol06Goo0P0000020007 Ool00`00LLi`06G>L00D0036< LLi`04W>L00<0036<L00D0036<LLi`04g>L00D0036<L01McW003000aS36< 008aS003001cW7>L01acW003001oogoo01Eoo`8000000P0027oo00<0036<LLi`0 4g>L00D0036<L01McW005000aS36<L01AcW005000aS36<L01AcW005000aS36<L0P004goo0P00 00020008Ool00`00LLi`057>L00<0 036<LLi`07g>L00<007ooOol047oo0P0000020008Ool00`00L00<0036<LLi`07g>L00<007ooOol0 3goo0P0000020008Ool00`00LLi`0 4W>L00<0036<LLi`087>L00<007ooOol03Woo0P0000020008Ool00`00LLi`04W>L00<0036<LLi`0 87>L00<007ooOol03Goo0P0000020008Ool00`00L0P003Goo0P0000020008Ool00`00LLi`047>L00<0036<LLi`08W>L00<007oo Ool02Woo0P0000020008Ool00`00L 00<0036<LLi`08W>L00<007ooOol02Goo0P0000020008Ool00`00Li`00`00L01McW003000aS000035oo`03 001cW7>L00icW003000aS36<008aS003001cW7>L02=cW003001oo`0000Moo`8000000P0027oo00<0 036<LLi`067>L00<0036<0000L00<0036<LLi`0 6g>L2@0000=oo`00Ool01Woo0P0000020008Ool00`00L01UcW08003Moo`03001cW7>L00]cW003000aS36<008aS003 001oo`0000L002Eoo`8000000P0027oo00<0036<LLi`06G>L00<0036<0000>7oo 0P0037>L00L0036<L01Yc W08003]oo`03001cW7>L00UcW003000aS36<008aS08002aoo`8000000P0027oo00<0036<LLi`06W>L0P00?Goo00<007>LLi`02G>L00<0036<L01]cW080045oo`03001cW7>L00McW007000aS36<L 0000:Woo0P0000020008Ool00`00L00<007ooOol09goo0P0000020008Ool00`00L00<007ooOol09goo0P0000020008Ool00`00 L00<007oo Ool09Woo0P0000020009Ool00`00L00<007ooOol09Goo0P0000020009Ool00`00L01McW0D00003L009cW003000aS000 00AcW003001oogoo02Aoo`8000000P002Goo00<0036<LLi`057>L10003c6<1@00 @Woo0P000g>L00<0036<000017>L00<007ooOol08goo0P0000020009Ool00`00LLi`037>L1@008C6<1@00?7oo00<007>LLi`00P001G>L00<007ooOol0 8Woo0P0000020009Ool01@00L1000:c6<1@00>7oo10001W>L00<007ooOol08Goo 0P0000020009Ool01000L1@00=36<1@00=Goo0P001W>L00<007ooOol08Goo0P000002 0009Ool00`00L00<007ooOol07goo0P0000020008Ool30007Ool?000oL009cW003001oogoo 01eoo`8000000P00<7oo3`00:S6<1@008Goo0P000W>L00<007ooOol07Goo0P000002000oOol?000P L001oo`0MOol20000008004ioo`l001HaS0@001aoo`03001cW00001eoo`80 00000P00GGoo3`002c6<1@0067oo0P0000=oo`00Ool06Woo0P000002001/Ool?00000c6<00000003 00000goo0000000AOol3000KOol20000008007]oo`L0009oo`03001oogoo00moo`<001Yoo`800000 0P00PWoo0P004goo00<007ooOol06Goo0P000002002cOol2000000800;=oo`8000000P00/goo0P00 0002002cOol2000000800;=oo`8000000P00/goo0P00002g00000;L00000\ \>"], ImageRangeCache->{{{0, 182.125}, {173, 0}} -> {-0.022644, 0.0762147, \ 0.00530531, 0.00530531}}] }, Open ]], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": A random polygon on 15 vertices that has been triangulated using \ polygon diagonals and 2-colored using a general map-coloring algorithm." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Triangulated and Colored"], Cell[TextData[{ "The ", StyleBox["PermuteAndReject", "Input"], " method simply tries random permutations until a good one \[LongDash] one \ that yields a polygon \[LongDash] is found. This is too slow for any serious \ work, but it does allow one to look at truly random ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-gons when ", Cell[BoxData[ \(TraditionalForm\`n\)]], " is small. We can compare the two methods by looking at the angles \ generated in a large set of trials. If ", Cell[BoxData[ \(TraditionalForm\`n\)]], " is small, say ", Cell[BoxData[ \(TraditionalForm\`n = 6\)]], ", then, not surprisingly, the angle distributions generated are quite \ similar; in other words, for such a small value of ", Cell[BoxData[ \(TraditionalForm\`n\)]], " it seems as if seady growth is coming close to generating a truly random \ polygon. But for larger ", Cell[BoxData[ \(TraditionalForm\`n\)]], ", things are different. The results of an experiment involving 1000 \ different 12-gons (but with a careful use of ", StyleBox["SeedRandom", "Input"], " to guarantee that the same sets of points are used for each pair of \ trials) are shown in Figure ", CounterBox["NumberedFigure", "Angle Comparison"], ", with the angles gathered into bins of size 10\[Degree]. There is a \ statistically significant difference, with the steady-growth method showing \ fewer angles at the extremes, and many more in the flat range (120\[Degree]\ \[Dash]180\[Degree])." }], "Text"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -0.00340136 0.0272109 -0.137145 0.00117721 [ [.15986 -0.0125 -6.75 -10 ] [.15986 -0.0125 6.75 0 ] [.32313 -0.0125 -9.125 -10 ] [.32313 -0.0125 9.125 0 ] [.48639 -0.0125 -9.125 -10 ] [.48639 -0.0125 9.125 0 ] [.64966 -0.0125 -9.125 -10 ] [.64966 -0.0125 9.125 0 ] [.81293 -0.0125 -9.125 -10 ] [.81293 -0.0125 9.125 0 ] [.97619 -0.0125 -9.125 -10 ] [.97619 -0.0125 9.125 0 ] [ 0 0 -0.125 0 ] [-0.0125 .0983 -18.25 -5 ] [-0.0125 .0983 0 5 ] [-0.0125 .33374 -18.25 -5 ] [-0.0125 .33374 0 5 ] [-0.0125 .56918 -18.25 -5 ] [-0.0125 .56918 0 5 ] [ 0 0 -0.125 0 ] [ 0 .61803 .125 0 ] [ 1 0 .125 0 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .15986 0 m .15986 .00625 L s gsave .15986 -0.0125 -67.75 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (60) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .32313 0 m .32313 .00625 L s gsave .32313 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (120) show 77.250 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .48639 0 m .48639 .00625 L s gsave .48639 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (180) show 77.250 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .64966 0 m .64966 .00625 L s gsave .64966 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (240) show 77.250 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .81293 0 m .81293 .00625 L s gsave .81293 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (300) show 77.250 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .97619 0 m .97619 .00625 L s gsave .97619 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (360) show 77.250 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 0 m 1 0 L s 0 .0983 m .00625 .0983 L s gsave -0.0125 .0983 -79.25 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (200) show 1.000 setlinewidth grestore 0 .33374 m .00625 .33374 L s gsave -0.0125 .33374 -79.25 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (400) show 1.000 setlinewidth grestore 0 .56918 m .00625 .56918 L s gsave -0.0125 .56918 -79.25 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (600) show 1.000 setlinewidth grestore 0 0 m 0 .61803 L s 0 .61803 m 1 .61803 L s 1 0 m 1 .61803 L s .5 Mabswid [ 2 3 ] 0 Mabsdash .02381 .46205 m .05102 .38554 L .07823 .39731 L .10544 .35493 L .13265 .31843 L .15986 .32197 L .18707 .32903 L .21429 .38671 L .2415 .42085 L .26871 .40673 L .29592 .42085 L .32313 .45028 L .35034 .40673 L .37755 .4491 L .40476 .43851 L .43197 .45146 L .45918 .48324 L .48639 .51856 L .51361 .0983 L .54082 .06887 L .56803 .0724 L .59524 .04297 L .62245 .01825 L .64966 .03826 L .67687 .03708 L .70408 .03355 L .73129 .05945 L .7585 .04532 L .78571 .05474 L .81293 .11478 L .84014 .12302 L .86735 .15598 L .89456 .17011 L .92177 .20542 L .94898 .24427 L .97619 .20425 L s [ ] 0 setdash .02381 .60332 m .05102 .55505 L .07823 .4856 L .10544 .45617 L .13265 .41614 L .15986 .41026 L .18707 .43851 L .21429 .40555 L .2415 .46559 L .26871 .42321 L .29592 .35375 L .32313 .30078 L .35034 .2996 L .37755 .26546 L .40476 .289 L .43197 .23132 L .45918 .2325 L .48639 .24545 L .51361 .07828 L .54082 .08417 L .56803 .04415 L .59524 .03355 L .62245 .01472 L .64966 .03708 L .67687 .05474 L .70408 .05121 L .73129 .06651 L .7585 .08652 L .78571 .0983 L .81293 .11713 L .84014 .16304 L .86735 .19601 L .89456 .24427 L .92177 .26781 L .94898 .32903 L .97619 .34551 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{216, 133.438}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgGoo00<007ooOol00goo00<007ooOol06Goo00<007ooOol00goo000DOol00`00 Oomoo`1MOol00`00Oomoo`0jOol00`00Oomoo`03Ool00`00Oomoo`0HOol00`00Oomoo`03Ool001Ao o`03001oogoo05eoo`8003aoo`03001oogoo01eoo`03001oogoo00=oo`0057oo00<007ooOol0G7oo 00<007oo0000?7oo00<007ooOol07Goo00<007ooOol00goo000DOol00`00Oomoo`1LOol00`00Ool0 000mOol00`00Oomoo`03Ool3000FOol00`00Oomoo`03Ool001Aoo`03001oogoo05aoo`03001oogoo 03ioo`03001oogoo01]oo`03001oogoo00=oo`0057oo00<007ooOol0G7oo00<007ooOol0?Woo00<0 07ooOol01Woo0P004goo00<007ooOol00goo000DOol00`00Oomoo`1LOol00`00Ool0000oOol00`00 Oomoo`07Ool00`00Oomoo`0@Ool00`00Oomoo`03Ool001Aoo`03001oogoo05]oo`04001oogoo0010 Ool00`00Oomoo`0IOol00`00Oomoo`03Ool001Aoo`03001oogoo05]oo`04001oogoo0011Ool00`00 Oomoo`0HOol00`00Oomoo`03Ool001Aoo`03001oogoo05]oo`03001oogoo04=oo`03001oogoo00Io o`03001oogoo00ioo`03001oogoo00=oo`0057oo00<007ooOol0Fgoo00<007ooOol0A7oo00<007oo Ool01Woo00<007ooOol03Goo00<007ooOol00goo000DOol00`00Oomoo`1KOol00`00Ool00014Ool0 0`00Oomoo`0FOol00`00Oomoo`03Ool001Aoo`03001oogoo05Yoo`04001oogoo0015Ool00`00Oomo o`0@Ool00`00Oomoo`02Ool00`00Oomoo`03Ool001Aoo`03001oogoo05Yoo`04001oogoo0015Ool0 0`00Oomoo`07Ool00`00Oomoo`06Ool00`00Oomoo`02Ool00`00Oomoo`03Ool001Aoo`03001oogoo 05Yoo`03001oogoo04Moo`03001oogoo00Moo`03001oogoo00Aoo`03001oogoo00=oo`03001oogoo 00=oo`0057oo00<007ooOol0FWoo00<007ooOol0B7oo00<007ooOol04goo00<007ooOol00goo000D Ool00`00Oomoo`1JOol01000Oomoo`00Agoo00<007ooOol02goo00<007ooOol01Goo00<007ooOol0 0goo000DOol00`00Oomoo`1?Ool70003Ool01@00Oomoogoo0000B7oo00<007ooOol01Woo0P000Woo 00<007ooOol01Goo00<007ooOol00goo000DOol00`00Oomoo`1?Ool00`00Oomoo`04Ool40003Ool0 0`00Oomoo`16Ool00`00Oomoo`08Ool20008Ool00`00Oomoo`03Ool001Aoo`03001oogoo04ioo`03 001oogoo00Qoo`03001oogoo04]oo`03001oogoo015oo`03001oogoo00=oo`0057oo00<007ooOol0 CWoo00<007ooOol0Egoo00<007ooOol047oo00<007ooOol00goo000DOol00`00Oomoo`1=Ool00`00 Oomoo`0=Ool00`00Oomoo`19Ool00`00Oomoo`0?Ool00`00Oomoo`03Ool001Aoo`03001oogoo04eo o`03001oogoo00eoo`03001oogoo04Yoo`03001oogoo00ioo`03001oogoo00=oo`0057oo00<007oo Ool0AGoo00<007ooOol017oo00<007ooOol03Woo00<007ooOol0Bgoo00<007ooOol03Goo00<007oo Ool00goo000DOol00`00Oomoo`15Ool20005Ool00`00Oomoo`1MOol00`00Oomoo`0Ool00`00Oomoo`0;Ool00`00Oomoo`03Ool001Aoo`03001oogoo049oo`03001oogoo00Aoo`03 001oo`00011oo`03001oogoo04ioo`03001oogoo00]oo`03001oogoo00=oo`0057oo00<007ooOol0 @Woo00<007ooOol01Goo00<007ooOol03goo00<007ooOol0Cgoo00<007ooOol02Woo00<007ooOol0 0goo000DOol00`00Oomoo`11Ool00`00Oomoo`1ZOol00`00Oomoo`0:Ool00`00Oomoo`03Ool001Ao o`03001oogoo03Yoo`L006ioo`03001oogoo00Uoo`03001oogoo00=oo`0057oo00<007ooOol0>Woo 00<007ooOol07goo00<007ooOol0D7oo00<007ooOol02Goo00<007ooOol00goo000DOol00`00Oomo o`0iOol00`00Oomoo`0POol00`00Oomoo`1@Ool00`00Oomoo`09Ool00`00Oomoo`03Ool001Aoo`03 001oogoo01Moo`80021oo`03001oogoo021oo`03001oogoo055oo`03001oogoo00Qoo`03001oogoo 00=oo`0057oo00<007ooOol06Goo00<007ooOol00P006Woo00<007ooOol0MGoo00<007ooOol027oo 00<007ooOol00goo0005Ool01@00Oomoogoo000017oo00<007ooOol00goo00<007ooOol05Goo00<0 07ooOol01Woo00@007ooOol001Ioo`03001oogoo07Ioo`8000Qoo`03001oogoo00=oo`000goo0`00 0Woo00<007oo00000Woo00<007oo000017oo0P005Woo00<007ooOol02Goo00<007ooOol04goo00<0 07ooOol08Woo00<007ooOol0E7oo0P001Woo00<007ooOol00goo0003Ool00`00Ool00002Ool00`00 Ool00002Ool00`00Ool00004Ool00`00Oomoo`0DOol00`00Oomoo`0;Ool00`00Oomoo`0BOol00`00 Oomoo`0ROol00`00Oomoo`1FOol00`00Oomoo`03Ool00`00Oomoo`03Ool000Aoo`80009oo`03001o o`00009oo`03001oo`0000Aoo`03001oogoo03Ioo`03001oogoo02=oo`03001oogoo05Moo`03001o ogoo009oo`03001oogoo00=oo`001Goo00D007ooOomoo`0000Aoo`03001oogoo00=oo`03001oogoo 019oo`03001oogoo025oo`03001oogoo089oo`03001oogoo00=oo`0057oo00<007ooOol04Goo00<0 07ooOol03goo00<007ooOol03goo00<007ooOol0Pgoo00<007ooOol00goo000DOol00`00Oomoo`0A Ool00`00Oomoo`0?Ool00`00Oomoo`0?Ool00`00Oomoo`0SOol00`00Oomoo`1MOol00`00Oomoo`03 Ool001Aoo`03001oogoo02Aoo`03001oogoo00eoo`03001oogoo02Aoo`03001oogoo05eoo`03001o ogoo00=oo`0057oo00<007ooOol03goo00<007ooOol08Woo00<007ooOol097oo00<007ooOol0GGoo 00<007ooOol00goo000DOol00`00Oomoo`0?Ool00`00Oomoo`0ROol00`00Oomoo`24Ool00`00Oomo o`03Ool001Aoo`03001oogoo00ioo`03001oogoo01Aoo`03001oogoo00]oo`03001oogoo08Eoo`03 001oogoo00=oo`0057oo00<007ooOol01goo00<007ooOol077oo00<007ooOol02Woo00<007ooOol0 9Goo00<007ooOol0GGoo00<007ooOol00goo000DOol00`00Oomoo`08Ool01@00Oomoogoo00009Goo 00<007ooOol09Woo00<007ooOol0GGoo00<007ooOol00goo000DOol00`00Oomoo`0;Ool2000UOol0 0`00Oomoo`0VOol00`00Oomoo`1MOol00`00Oomoo`03Ool001Aoo`03001oogoo00Ioo`03001oogoo 01moo`03001oogoo00Moo`03001oogoo08Ioo`03001oogoo00=oo`0057oo00<007ooOol01Woo00<0 07ooOol07Goo00@007ooOol000Ioo`8008Uoo`03001oogoo00=oo`0057oo00<007ooOol01Goo00<0 07ooOol04Goo10002Goo00<007ooOol01Woo00<007oo00003Woo00<007ooOol067oo00<007ooOol0 GGoo00<007ooOol00goo000DOol00`00Oomoo`0FOol30004Ool00`00Oomoo`05Ool00`00Ool00004 Ool00`00Oomoo`02Ool01000Oomoo`002Goo00@007ooOol001Uoo`03001oogoo05eoo`03001oogoo 00=oo`0057oo00<007ooOol05Woo00<007ooOol01Goo00<007ooOol00goo00@007ooOol000=oo`03 001oogoo009oo`03001oogoo009oo`03001oogoo00Ioo`03001oogoo01Yoo`03001oogoo05eoo`03 001oogoo00=oo`0057oo00<007ooOol017oo00<007ooOol03Woo00<007ooOol01goo00D007ooOomo o`0000Aoo`03001oogoo00Eoo`03001oogoo00Yoo`03001oogoo07]oo`03001oogoo00=oo`0057oo 00<007ooOol017oo00<007ooOol03Goo00<007ooOol02Goo00<007oo00001Goo00<007ooOol017oo 00<007ooOol01Goo0P002Woo00<007ooOol0MGoo00<007ooOol00goo000DOol00`00Oomoo`03Ool0 0`00Oomoo`0=Ool00`00Oomoo`0;Ool00`00Oomoo`05Ool00`00Oomoo`02Ool00`00Oomoo`08Ool0 1000Oomoo`001Woo00<007ooOol01Goo00<007ooOol037oo00<007ooOol0GWoo00<007ooOol00goo 000DOol00`00Oomoo`0COol00`00Oomoo`0COol00`00Oomoo`02Ool00`00Oomoo`0;Ool00`00Oomo o`05Ool00`00Oomoo`020003Ool00`00Oomoo`0;Ool00`00Oomoo`1NOol00`00Oomoo`03Ool001Ao o`03001oogoo019oo`03001oogoo01Aoo`05001oogooOol0000=Ool00`00Oomoo`08Ool00`00Oomo o`0AOol00`00Oomoo`1NOol00`00Oomoo`03Ool001Aoo`03001oogoo009oo`03001oogoo00aoo`03 001oogoo01Ioo`04001oogoo000QOol00`00Oomoo`1YOol00`00Oomoo`03Ool001Aoo`03001oogoo 009oo`03001oogoo00aoo`03001oogoo01Ioo`03001oo`0002=oo`03001oogoo06Qoo`03001oogoo 00=oo`0057oo00<007ooOol00Woo00<007ooOol02goo00<007ooOol067oo00<007ooOol0;7oo00<0 07ooOol0GWoo00<007ooOol00goo000DOol00`00Oomoo`0?Ool00`00Oomoo`10Ool00`00Oomoo`05 Ool00`00Oomoo`1NOol00`00Oomoo`03Ool001Aoo`03001oogoo00ioo`03001oogoo049oo`03001o ogoo00Aoo`03001oogoo05ioo`03001oogoo00=oo`0057oo00<007ooOol03Goo00<007ooOol0A7oo 00<007ooOol0I7oo00<007ooOol00goo000DOol00`00Oomoo`0"], ImageRangeCache->{{{0, 215}, {132.438, 0}} -> {-3.86878, 54.8917, 0.193656, \ 4.47631}}], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": A comparison of the angle distribution for 1000 12-gons generated by \ the steady-growth algorithm (dashed) and the permite-and-reject method. The \ latter method seems to produce more sharp angles; the steady-growth method \ has more flat angles (between 120\[Degree] and 180\[Degree])." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Angle Comparison"], Cell[TextData[{ "However, things change as ", Cell[BoxData[ \(TraditionalForm\`n\)]], " grows. Figure ", CounterBox["NumberedFigure", "Angles for 50-gons"], " shows the result of an experiment that fixes five sets of 50 points and \ then generates 40 polygons on each set and bins the resulting 10000 angles \ with a bin-size of 10\[Degree]. The resulting histograms show definite spikes \ near ", Cell[BoxData[ \(TraditionalForm\`0 \[Degree]\)]], ", ", Cell[BoxData[ \(TraditionalForm\`180 \[Degree]\)]], ", and ", Cell[BoxData[ \(TraditionalForm\`360 \[Degree]\)]], ". The results are consistent with a similar experiment carried out by Auer \ and Held." }], "Text"], Cell[BoxData[{ \(d = 40; n = 50;\), "\[IndentingNewLine]", \(\(pts = Table[{Random[], Random[]}, {5}, {n}];\)\)}], "Input"], Cell[BoxData[ \(\(angledata = Flatten[\[IndentingNewLine]Table[ Angles[RandomPolygon[pts[\([j]\)], ShowPolygon \[Rule] False]], {j, 5}, {i, d}]];\)\)], "Input"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(binsize = 10;\)\), "\[IndentingNewLine]", \(\(Histogram[angledata, Frame \[Rule] True, \[IndentingNewLine]HistogramScale \[Rule] 100\ binsize, \[IndentingNewLine]HistogramCategories \[Rule] 360/binsize];\)\)}], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .61803 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -1.9082e-17 0.00277778 0.0147151 0.0650391 [ [.16667 -0.0125 -6.75 -10 ] [.16667 -0.0125 6.75 0 ] [.33333 -0.0125 -9.125 -10 ] [.33333 -0.0125 9.125 0 ] [.5 -0.0125 -9.125 -10 ] [.5 -0.0125 9.125 0 ] [.66667 -0.0125 -9.125 -10 ] [.66667 -0.0125 9.125 0 ] [.83333 -0.0125 -9.125 -10 ] [.83333 -0.0125 9.125 0 ] [1 -0.0125 -9.125 -10 ] [1 -0.0125 9.125 0 ] [ 0 0 -0.125 0 ] [-0.0125 .07975 -13.5 -5 ] [-0.0125 .07975 0 5 ] [-0.0125 .14479 -13.5 -5 ] [-0.0125 .14479 0 5 ] [-0.0125 .20983 -13.5 -5 ] [-0.0125 .20983 0 5 ] [-0.0125 .27487 -13.5 -5 ] [-0.0125 .27487 0 5 ] [-0.0125 .33991 -13.5 -5 ] [-0.0125 .33991 0 5 ] [-0.0125 .40495 -13.5 -5 ] [-0.0125 .40495 0 5 ] [-0.0125 .46999 -13.5 -5 ] [-0.0125 .46999 0 5 ] [ 0 0 -0.125 0 ] [ 0 .61803 .125 0 ] [ 1 0 .125 0 ] [ 0 0 0 0 ] [ 1 .61803 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 g .25 Mabswid [ ] 0 setdash .16667 0 m .16667 .00625 L s gsave .16667 -0.0125 -67.75 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (60) show 1.000 setlinewidth grestore .33333 0 m .33333 .00625 L s gsave .33333 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (120) show 1.000 setlinewidth grestore .5 0 m .5 .00625 L s gsave .5 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (180) show 1.000 setlinewidth grestore .66667 0 m .66667 .00625 L s gsave .66667 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (240) show 1.000 setlinewidth grestore .83333 0 m .83333 .00625 L s gsave .83333 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (300) show 1.000 setlinewidth grestore 1 0 m 1 .00625 L s gsave 1 -0.0125 -70.125 -14 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (360) show 1.000 setlinewidth grestore 0 0 m 1 0 L s 0 .07975 m .00625 .07975 L s gsave -0.0125 .07975 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (1) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .14479 m .00625 .14479 L s gsave -0.0125 .14479 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (2) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .20983 m .00625 .20983 L s gsave -0.0125 .20983 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (3) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .27487 m .00625 .27487 L s gsave -0.0125 .27487 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (4) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .33991 m .00625 .33991 L s gsave -0.0125 .33991 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (5) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .40495 m .00625 .40495 L s gsave -0.0125 .40495 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (6) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 .46999 m .00625 .46999 L s gsave -0.0125 .46999 -74.5 -9 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18 translate 1 -1 scale 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (7) show 67.750 11.000 moveto (%) show 72.500 11.000 moveto %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 8.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore 0 0 m 0 .61803 L s 0 .61803 m 1 .61803 L s 1 0 m 1 .61803 L s 0 .01472 m 1 .01472 L s 0 0 m 0 .61803 L s 0 0 m 1 0 L 1 .61803 L 0 .61803 L closepath clip newpath .8 g 0 .01472 m 0 .56169 L .02778 .56169 L .02778 .01472 L F 0 g .5 Mabswid 0 .01472 m 0 .56169 L .02778 .56169 L .02778 .01472 L 0 .01472 L s .8 g .02778 .01472 m .02778 .33406 L .05556 .33406 L .05556 .01472 L F 0 g .02778 .01472 m .02778 .33406 L .05556 .33406 L .05556 .01472 L .02778 .01472 L s .8 g .05556 .01472 m .05556 .21373 L .08333 .21373 L .08333 .01472 L F 0 g .05556 .01472 m .05556 .21373 L .08333 .21373 L .08333 .01472 L .05556 .01472 L s .8 g .08333 .01472 m .08333 .20853 L .11111 .20853 L .11111 .01472 L F 0 g .08333 .01472 m .08333 .20853 L .11111 .20853 L .11111 .01472 L .08333 .01472 L s .8 g .11111 .01472 m .11111 .13179 L .13889 .13179 L .13889 .01472 L F 0 g .11111 .01472 m .11111 .13179 L .13889 .13179 L .13889 .01472 L .11111 .01472 L s .8 g .13889 .01472 m .13889 .13634 L .16667 .13634 L .16667 .01472 L F 0 g .13889 .01472 m .13889 .13634 L .16667 .13634 L .16667 .01472 L .13889 .01472 L s .8 g .16667 .01472 m .16667 .1617 L .19444 .1617 L .19444 .01472 L F 0 g .16667 .01472 m .16667 .1617 L .19444 .1617 L .19444 .01472 L .16667 .01472 L s .8 g .19444 .01472 m .19444 .12528 L .22222 .12528 L .22222 .01472 L F 0 g .19444 .01472 m .19444 .12528 L .22222 .12528 L .22222 .01472 L .19444 .01472 L s .8 g .22222 .01472 m .22222 .09406 L .25 .09406 L .25 .01472 L F 0 g .22222 .01472 m .22222 .09406 L .25 .09406 L .25 .01472 L .22222 .01472 L s .8 g .25 .01472 m .25 .12333 L .27778 .12333 L .27778 .01472 L F 0 g .25 .01472 m .25 .12333 L .27778 .12333 L .27778 .01472 L .25 .01472 L s .8 g .27778 .01472 m .27778 .12398 L .30556 .12398 L .30556 .01472 L F 0 g .27778 .01472 m .27778 .12398 L .30556 .12398 L .30556 .01472 L .27778 .01472 L s .8 g .30556 .01472 m .30556 .1513 L .33333 .1513 L .33333 .01472 L F 0 g .30556 .01472 m .30556 .1513 L .33333 .1513 L .33333 .01472 L .30556 .01472 L s .8 g .33333 .01472 m .33333 .17341 L .36111 .17341 L .36111 .01472 L F 0 g .33333 .01472 m .33333 .17341 L .36111 .17341 L .36111 .01472 L .33333 .01472 L s .8 g .36111 .01472 m .36111 .21569 L .38889 .21569 L .38889 .01472 L F 0 g .36111 .01472 m .36111 .21569 L .38889 .21569 L .38889 .01472 L .36111 .01472 L s .8 g .38889 .01472 m .38889 .25081 L .41667 .25081 L .41667 .01472 L F 0 g .38889 .01472 m .38889 .25081 L .41667 .25081 L .41667 .01472 L .38889 .01472 L s .8 g .41667 .01472 m .41667 .31324 L .44444 .31324 L .44444 .01472 L F 0 g .41667 .01472 m .41667 .31324 L .44444 .31324 L .44444 .01472 L .41667 .01472 L s .8 g .44444 .01472 m .44444 .33926 L .47222 .33926 L .47222 .01472 L F 0 g .44444 .01472 m .44444 .33926 L .47222 .33926 L .47222 .01472 L .44444 .01472 L s .8 g .47222 .01472 m .47222 .52072 L .5 .52072 L .5 .01472 L F 0 g .47222 .01472 m .47222 .52072 L .5 .52072 L .5 .01472 L .47222 .01472 L s .8 g .5 .01472 m .5 .22284 L .52778 .22284 L .52778 .01472 L F 0 g .5 .01472 m .5 .22284 L .52778 .22284 L .52778 .01472 L .5 .01472 L s .8 g .52778 .01472 m .52778 .1565 L .55556 .1565 L .55556 .01472 L F 0 g .52778 .01472 m .52778 .1565 L .55556 .1565 L .55556 .01472 L .52778 .01472 L s .8 g .55556 .01472 m .55556 .11097 L .58333 .11097 L .58333 .01472 L F 0 g .55556 .01472 m .55556 .11097 L .58333 .11097 L .58333 .01472 L .55556 .01472 L s .8 g .58333 .01472 m .58333 .09341 L .61111 .09341 L .61111 .01472 L F 0 g .58333 .01472 m .58333 .09341 L .61111 .09341 L .61111 .01472 L .58333 .01472 L s .8 g .61111 .01472 m .61111 .09601 L .63889 .09601 L .63889 .01472 L F 0 g .61111 .01472 m .61111 .09601 L .63889 .09601 L .63889 .01472 L .61111 .01472 L s .8 g .63889 .01472 m .63889 .08105 L .66667 .08105 L .66667 .01472 L F 0 g .63889 .01472 m .63889 .08105 L .66667 .08105 L .66667 .01472 L .63889 .01472 L s .8 g .66667 .01472 m .66667 .08626 L .69444 .08626 L .69444 .01472 L F 0 g .66667 .01472 m .66667 .08626 L .69444 .08626 L .69444 .01472 L .66667 .01472 L s .8 g .69444 .01472 m .69444 .0791 L .72222 .0791 L .72222 .01472 L F 0 g .69444 .01472 m .69444 .0791 L .72222 .0791 L .72222 .01472 L .69444 .01472 L s .8 g .72222 .01472 m .72222 .09797 L .75 .09797 L .75 .01472 L F 0 g .72222 .01472 m .72222 .09797 L .75 .09797 L .75 .01472 L .72222 .01472 L s .8 g .75 .01472 m .75 .0804 L .77778 .0804 L .77778 .01472 L F 0 g .75 .01472 m .75 .0804 L .77778 .0804 L .77778 .01472 L .75 .01472 L s .8 g .77778 .01472 m .77778 .09146 L .80556 .09146 L .80556 .01472 L F 0 g .77778 .01472 m .77778 .09146 L .80556 .09146 L .80556 .01472 L .77778 .01472 L s .8 g .80556 .01472 m .80556 .09406 L .83333 .09406 L .83333 .01472 L F 0 g .80556 .01472 m .80556 .09406 L .83333 .09406 L .83333 .01472 L .80556 .01472 L s .8 g .83333 .01472 m .83333 .08171 L .86111 .08171 L .86111 .01472 L F 0 g .83333 .01472 m .83333 .08171 L .86111 .08171 L .86111 .01472 L .83333 .01472 L s .8 g .86111 .01472 m .86111 .11097 L .88889 .11097 L .88889 .01472 L F 0 g .86111 .01472 m .86111 .11097 L .88889 .11097 L .88889 .01472 L .86111 .01472 L s .8 g .88889 .01472 m .88889 .15325 L .91667 .15325 L .91667 .01472 L F 0 g .88889 .01472 m .88889 .15325 L .91667 .15325 L .91667 .01472 L .88889 .01472 L s .8 g .91667 .01472 m .91667 .22739 L .94444 .22739 L .94444 .01472 L F 0 g .91667 .01472 m .91667 .22739 L .94444 .22739 L .94444 .01472 L .91667 .01472 L s .8 g .94444 .01472 m .94444 .38804 L .97222 .38804 L .97222 .01472 L F 0 g .94444 .01472 m .94444 .38804 L .97222 .38804 L .97222 .01472 L .94444 .01472 L s .8 g .97222 .01472 m .97222 .60332 L 1 .60332 L 1 .01472 L F 0 g .97222 .01472 m .97222 .60332 L 1 .60332 L 1 .01472 L .97222 .01472 L s % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 177.938}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHg7oo0`00 0Woo00<007oo00008Woo00<007ooOol00goo00H007ooOol007oo000POol00`00Oomoo`02Ool01`00 Oomoogoo001oo`00021oo`06001oogoo001oo`000Woo00<007oo000087oo00L007ooOomoo`00Ool0 0002Ool00`00Ool0000OOol01000Oomoogoo0`000Woo00<007oo000017oo000hOol00`00Oomoo`02 Ool00`00Ool0000ROol00`00Oomoo`03Ool01P00Oomoo`00Ool0021oo`07001oogooOol007oo0000 0Woo00<007oo000087oo00@007ooOomoo`80009oo`03001oo`00025oo`06001oogoo001oo`000Woo 00<007oo000087oo00@007ooOol000Aoo`03001oo`0000Aoo`00>Goo0P000goo00<007ooOol087oo 0P000goo0`000goo00<007ooOol07Woo0P000goo0`000goo00<007ooOol07Goo0`0017oo00D007oo Oomoo`00021oo`<000=oo`03001oogoo009oo`03001oogoo01eoo`<000=oo`8000=oo`03001oogoo 00=oo`00ogoo8Goo003oOolQOol00?moob5oo`00ogoo8Goo000@Oooo0007000:Ool0011oo`03001o ogoo02Uoo`03001oogoo02Qoo`03001oogoo02Uoo`03001oogoo02Qoo`03001oogoo02Uoo`03001o ogoo02Qoo`03001oogoo00Qoo`0047oo00<007ooOol0:Goo00<007ooOol0:7oo00<007ooOol0:Goo 00<007ooOol0:7oo00<007ooOol0:Goo00<007ooOol0:7oo00<007ooOol027oo000@Ool00`00Oomo o`3oOol3Ool00`00Oomoo`08Ool0011oool000L000Yoo`0047oo00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 27oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qo o`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0 011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi 00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi 00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi 00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<0 06LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@ Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04 IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo 00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW >@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03 001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`000goo0`000Woo 0P001Woo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<007ooOol027oo0004Ool01000Oomoogoo0P001Woo00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li20001fLi20001VLi20001fLi00<006LiIcT016Li2000 1VLi00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 27oo0004Ool01@00Oomoogoo00001goo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<007ooOol017oo2@001Woo00<006LiIcT016Li00<007ooOol017oo00<006LiIcT01FLi00<006Li IcT016Li00<007ooOol017oo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<007ooOol027oo0004Ool00`00Oomoo`020007Ool00`00IcUW>@05 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04 IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04 IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`0COol00`00IcUW>@04IcT00`00Oomoo`04 Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`04Ool00`00IcUW>@04IcT00`00IcUW>@05 IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool000=oo`80009o o`8000Moo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00EW>@P000IW>@03001oogoo01=oo`03001W>FLi00AW>@03001oogoo00Ao o`T000IW>@03001oogoo00Aoo`03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT016Li 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT016Li2@001VLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<007ooOol017oo20005Goo00<006LiIcT016Li 00<007ooOol037oo20001Woo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00Oomoo`05Ool00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00Oomoo`0QOol8 000LOol00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001oogoo00Eoo`03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001oogoo04Eoo`03001W>FLi00AW>@03 001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`00 47oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol01Goo00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<007ooOol0AGoo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`05Ool00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT90017Ool80007IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Eoo`03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo05Ao o`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qo o`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol01Goo00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT016Li00<007ooOol0E7oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00Oomoo`05Ool?0006IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomo o`1DOol00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomo o`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@P001Eoo`03001W>FLi00AW>@03001W>FLi 00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo05Aoo`03001W>FLi00EW>@03001W>FLi 00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<0 06LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li2@001VLi00<006LiIcT016Li00<007ooOol0 6Woo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 E7oo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 27oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 Oomoo`05Ool00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`0JOol00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`1DOol00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Eoo`P000IW>@03001o ogoo01Yoo`03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W >FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001o ogoo05Aoo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001o ogoo00Qoo`000goo0`000Woo0P001Woo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li 00<006LiIcT016Li00<007ooOol037oo00<006LiIcT016Li00<007ooOol06Woo00<006LiIcT016Li 00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0E7oo00<006LiIcT01FLi 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo0004Ool01000Oomo ogoo0P001Woo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<0 07ooOol037oo00<006LiIcT016Li00<007ooOol06Woo00<006LiIcT016Li00<006LiIcT01FLi00<0 06LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT016Li00<007ooOol0E7oo00<006LiIcT01FLi00<006LiIcT016Li00<0 06LiIcT016Li00<006LiIcT016Li00<007ooOol027oo0005Ool01000Oomoo`001goo00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol037oo00<006LiIcT0 16Li00<007ooOol06Woo20001fLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0E7oo00<0 06LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo0005 Ool01000Ool000001goo00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<007ooOol037oo00<006LiIcT016Li00<007ooOol08Goo00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<007ooOol0E7oo2@001VLi00<006LiIcT016Li00<006LiIcT016Li00<0 07ooOol027oo0003Ool300000goo00000007Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@04IcT00`00Oomoo`0@04IcT00`00Oomoo`0QOol00`00IcUW >@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW >@04IcT00`00IcUW>@04IcT8001NOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi 00AW>@03001oogoo00aoo`P002=oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo06=oo`03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0=goo00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT0 16Li00<006LiIcT016Li00<007ooOol0Hgoo00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT0 16Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00Oomoo`0gOol00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`1SOol00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW >@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo03Moo`T000IW>@03001W >FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001o ogoo06=oo`03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo 00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0?goo 00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li 00<006LiIcT016Li00<007ooOol0Hgoo00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li 00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@04IcT00`00Oomoo`0oOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW >@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`1SOol00`00IcUW>@04IcT00`00IcUW >@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001oogoo03moo`03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo06=oo`03 001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0?goo00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT0 16Li00<007ooOol0Hgoo00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 27oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 Oomoo`0oOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`1SOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00AW>@03001oogoo03moo`03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo06=oo`03001W>FLi00AW >@03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0?goo00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<007oo Ool0Hgoo00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool0 0`00IcUW>@05IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`0oOol0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00Oomoo`1SOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT0 0`00Oomoo`08Ool000=oo`<0009oo`8000Ioo`03001W>FLi00EW>@03001W>FLi00AW>@03001W>FLi 00AW>@P0045oo`03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW>@03 001W>FLi00AW>@03001W>FLi00AW>@03001oogoo06=oo`03001W>FLi00AW>@03001W>FLi00AW>@03 001W>FLi00AW>@03001oogoo00Qoo`001Goo00<007ooOol00P001Woo00<006LiIcT01FLi00<006Li IcT016Li00<006LiIcT016Li00<007ooOol0AWoo00<006LiIcT016Li00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0Hgoo00<006Li IcT016Li00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo0004Ool01@00Oomoogoo0000 1goo00<006LiIcT01FLi00<006LiIcT016Li2000B7oo20001VLi00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0Hgoo00<006LiIcT016Li00<006LiIcT0 16Li00<006LiIcT016Li00<007ooOol027oo0005Ool01000Ool000001goo00<006LiIcT01FLi00<0 06LiIcT016Li00<007ooOol0E7oo00<006LiIcT016Li00<006LiIcT016Li00<006LiIcT01FLi00<0 06LiIcT016Li00<006LiIcT016Li00<007ooOol0Hgoo00<006LiIcT016Li00<006LiIcT016Li00<0 06LiIcT016Li00<007ooOol027oo0003Ool300000goo00000007Ool00`00IcUW>@05IcT00`00IcUW >@04IcT00`00Oomoo`1DOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW >@04IcT8001UOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0 011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo05Aoo`03001W>FLi00AW>@03001W>FLi 00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo06Yoo`P000IW>@03001W>FLi00AW>@03 001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0E7oo00<006LiIcT0 16Li00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT0 16Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 Oomoo`1DOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW >@03001W>FLi00AW>@03001oogoo05Aoo`03001W>FLi00AW>@03001W>FLi00AW>@03001W>FLi00EW >@03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qo o`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0E7oo00<006LiIcT016Li00<006Li IcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006Li IcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1DOol0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1aOol0 0`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi 00AW>@03001oogoo05Aoo`P000IW>@03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo075oo`03 001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT0 16Li00<007ooOol0Fgoo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0 LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00Oomoo`1KOol00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW>@04IcT00`00 Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW >@03001W>FLi00AW>@03001oogoo05]oo`03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW >@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006Li IcT01FLi00<006LiIcT016Li00<007ooOol0Fgoo00<006LiIcT016Li00<006LiIcT01FLi00<006Li IcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool0 0`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1KOol00`00IcUW>@04IcT00`00IcUW>@05IcT0 0`00IcUW>@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0 00Eoo`03001oogoo008000Ioo`03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo05]oo`03001W >FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W >FLi00AW>@03001oogoo00Qoo`000goo0`000Woo0P001Woo00<006LiIcT01FLi00<006LiIcT016Li 00<007ooOol0Fgoo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0LGoo 00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo0003Ool00`00Ool00002Ool00`00Oomo o`05Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1KOol00`00IcUW>@04IcT00`00IcUW >@05IcT00`00IcUW>@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomo o`08Ool000Aoo`800003Ool0000000Moo`03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo05]o o`03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW >@03001W>FLi00AW>@03001oogoo00Qoo`001Goo00@007oo000000Moo`03001W>FLi00EW>@03001W >FLi00AW>@03001oogoo05]oo`03001W>FLi00AW>@03001W>FLi00EW>@03001W>FLi00AW>@03001o ogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi 00<006LiIcT016Li00<007ooOol0Fgoo00<006LiIcT016Li00<006LiIcT01FLi00<006LiIcT016Li 00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW >@05IcT00`00IcUW>@04IcT00`00Oomoo`1KOol00`00IcUW>@04IcT00`00IcUW>@05IcT00`00IcUW >@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03 001W>FLi00EW>@03001W>FLi00AW>@03001oogoo05]oo`03001W>FLi00AW>@03001W>FLi00EW>@03 001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`00 47oo00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0Fgoo00<006LiIcT016Li00<006LiIcT0 1FLi00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol0 27oo000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1KOol00`00IcUW>@04IcT00`00 IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00 Oomoo`08Ool0011oo`03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo05]oo`03001W>FLi00AW >@03001W>FLi00EW>@03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW >@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0Fgoo20001fLi 00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo 000@Ool00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1ROol00`00IcUW>@05IcT00`00IcUW >@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03 001W>FLi00EW>@03001W>FLi00AW>@03001oogoo069oo`03001W>FLi00EW>@03001W>FLi00AW>@03 001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT0 1FLi00<006LiIcT016Li00<007ooOol0HWoo00<006LiIcT01FLi00<006LiIcT016Li00<007ooOol0 LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00 IcUW>@04IcT00`00Oomoo`1ROol00`00IcUW>@05IcT00`00IcUW>@04IcT00`00Oomoo`1aOol00`00 IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@P006Aoo`03001W >FLi00EW>@03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001o ogoo00Qoo`000goo0`000Woo0P001Woo00<006LiIcT01FLi00<007ooOol0JGoo00<006LiIcT01FLi 00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo 0005Ool00`00Oomoo`020006Ool00`00IcUW>@05IcT00`00Oomoo`1YOol90006IcT00`00Oomoo`1a Ool00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool000=oo`<0009oo`03001oogoo00Eo o`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW >@03001W>FLi00AW>@03001oogoo00Qoo`000goo00@007ooOomoo`8000Moo`03001W>FLi00EW>@03 001oogoo075oo`03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03 001oogoo00Qoo`000goo0`0000=oo`0000001goo00<006LiIcT01FLi00<007ooOol0LGoo00<006Li IcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool0 0`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT0 0`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi 00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<0 06LiIcT01FLi00<007ooOol0LGoo00<006LiIcT016Li00<007ooOol0LGoo00<006LiIcT016Li00<0 06LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04 IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W >FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo075oo`03001W>FLi00AW>@03001W >FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo00<006LiIcT016Li 00<007ooOol0LGoo00<006LiIcT016Li00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW >@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00IcUW >@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03 001oogoo075oo`03001W>FLi00AW>@03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT0 1FLi00<007ooOol0LGoo00<006LiIcT016Li00<007ooOol0LGoo20001VLi00<007ooOol027oo000@ Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04 IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001o ogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo 00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo0004Ool20002Ool2 0006Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW >@04IcT00`00Oomoo`08Ool000=oo`03001oo`00009oo`8000Ioo`03001W>FLi00EW>@03001oogoo 075oo`03001W>FLi00AW>@03001oogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`000goo0`00 0Woo00<007ooOol01Goo00<006LiIcT01FLi00<007ooOol0LGoo00<006LiIcT016Li00<007ooOol0 N7oo00<006LiIcT016Li00<007ooOol027oo0003Ool01000Oomoogoo0P001goo00<006LiIcT01FLi 00<007ooOol0LGoo00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo 0004Ool200000goo00000007Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00 Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075o o`03001W>FLi00AW>@03001oogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006Li IcT01FLi00<007ooOol0LGoo00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007oo Ool027oo000@Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol0 0`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi 00AW>@03001oogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<0 07ooOol0LGoo00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@ Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04 IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001o ogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo 00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW >@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomo o`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo07Qoo`03 001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo00<006LiIcT0 16Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00 Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08Ool000Ao o`04001oogooOol20006Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomo o`1hOol00`00IcUW>@04IcT00`00Oomoo`08Ool000Aoo`04001oogooOol20006Ool00`00IcUW>@05 IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08 Ool000Aoo`05001oogooOol00007Ool00`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT0 0`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08Ool000Eoo`04001oo`000007Ool00`00IcUW >@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomo o`08Ool000=oo`<00003Ool0000000Moo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW >@03001oogoo07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007oo Ool0LGoo00<006LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@Ool0 0`00IcUW>@05IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT0 0`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo 07Qoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo00<0 06LiIcT016Li00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05 IcT00`00Oomoo`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08 Ool0011oo`03001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo07Qoo`03001W >FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo00<006LiIcT016Li 00<007ooOol0N7oo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00Oomo o`1aOol00`00IcUW>@04IcT00`00Oomoo`1hOol00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03 001W>FLi00EW>@03001oogoo075oo`03001W>FLi00AW>@03001oogoo07Qoo`03001W>FLi00AW>@03 001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0LGoo2000NWoo00<006LiIcT016Li00<0 07ooOol027oo000@Ool00`00IcUW>@05IcT00`00Oomoo`3cOol00`00IcUW>@04IcT00`00Oomoo`08 Ool0011oo`03001W>FLi00EW>@03001oogoo0?=oo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo 00<006LiIcT01FLi00<007ooOol0lgoo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW >@05IcT00`00Oomoo`3cOol00`00IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03 001oogoo0?=oo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0 lgoo00<006LiIcT016Li00<007ooOol027oo000@Ool00`00IcUW>@05IcT00`00Oomoo`3cOol00`00 IcUW>@04IcT00`00Oomoo`08Ool0011oo`03001W>FLi00EW>@03001oogoo0?=oo`03001W>FLi00AW >@03001oogoo00Qoo`0047oo00<006LiIcT01FLi00<007ooOol0lgoo00<006LiIcT016Li00<007oo Ool027oo000@Ool00`00IcUW>@05IcT00`00Oomoo`3cOol00`00IcUW>@04IcT00`00Oomoo`08Ool0 011oo`T00?Eoo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<007ooOol0ngoo00<006LiIcT0 16Li00<007ooOol027oo000@Ool00`00Oomoo`3kOol00`00IcUW>@04IcT00`00Oomoo`08Ool0011o o`03001oogoo0?]oo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<007ooOol0ngoo00<006Li IcT016Li00<007ooOol027oo000@Ool00`00Oomoo`3kOol00`00IcUW>@04IcT00`00Oomoo`08Ool0 011oo`03001oogoo0?]oo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<007ooOol0ngoo00<0 06LiIcT016Li00<007ooOol027oo000@Ool00`00Oomoo`3kOol00`00IcUW>@04IcT00`00Oomoo`08 Ool0011oo`03001oogoo0?]oo`03001W>FLi00AW>@03001oogoo00Qoo`0047oo00<007ooOol0ngoo 00<006LiIcT016Li00<007ooOol027oo000@Ool00`00Oomoo`3kOol8000:Ool0011oo`03001oogoo 0?moo`=oo`03001oogoo00Qoo`0047oo00<007ooOol0ogoo0goo00<007ooOol027oo000@Oooo0007 000:Ool00?moob5oo`00\ \>"], ImageRangeCache->{{{0, 287}, {176.938, 0}} -> {-23.1148, -1.07503, 1.37874, \ 0.058885}}] }, Open ]], Cell[TextData[{ "FIGURE ", CounterBox["NumberedFigure"], ": The angle distribution of the 10000 angles in the polygons generated by \ 40 runs of the steady-growth algorithm on five sets of 50 points." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Angles for 50-gons"], Cell[TextData[{ "Finally, the reader interested in visually appealing polygons might want \ to restrict the possible angles. This can be done with the ", StyleBox["AngleInterval", "Input"], " option, which can be used to restrict the angles to, say, the interval ", Cell[BoxData[ \(TraditionalForm\`{10, 350}\)]], ". Of course, it then takes more time to generate polygons; further, one \ must be careful to match the angle interval to the number of vertices to \ avoid a too-small probability of success. Figure ", CounterBox["NumberedFigure", "Angle Restricted Polygon"], " shows an angle-restricted 25-gon." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(RandomPolygon[25, AngleInterval \[Rule] {10, 350}, \[IndentingNewLine]ShowPoints \[Rule] False];\)\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1.09945 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Background color 1 g MFill % Scaling calculations 0.0182646 1.15547 -0.0211829 1.15547 [ [ 0 0 -0.125 0 ] [ 0 0 -0.125 0 ] [ 0 1.09945 .125 0 ] [ 1 0 .125 0 ] [ 0 0 0 0 ] [ 1 1.09945 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 .2 r .25 Mabswid [ ] 0 setdash 0 0 m 1 0 L s 0 0 m 0 1.09945 L s 0 1.09945 m 1 1.09945 L s 1 0 m 1 1.09945 L s .6 g .5872 .10748 m .66855 .13481 L .62767 .24706 L .91587 .02618 L .97619 .31246 L .94091 .32114 L .957 .42641 L .69496 .52922 L .51312 .68914 L .46214 .87155 L .52905 .87472 L .67454 1.01064 L .47251 1.01594 L .39016 1.07327 L .34693 1.05298 L .43013 .5807 L .523 .2327 L .28124 .43071 L .08396 .60109 L .07842 .47085 L .25578 .30807 L .33988 .21612 L .41069 .18217 L .02381 .10905 L .13057 .02934 L F 0 0 .2 r .5 Mabswid .5872 .10748 m .66855 .13481 L .62767 .24706 L .91587 .02618 L .97619 .31246 L .94091 .32114 L .957 .42641 L .69496 .52922 L .51312 .68914 L .46214 .87155 L .52905 .87472 L .67454 1.01064 L .47251 1.01594 L .39016 1.07327 L .34693 1.05298 L .43013 .5807 L .523 .2327 L .28124 .43071 L .08396 .60109 L .07842 .47085 L .25578 .30807 L .33988 .21612 L .41069 .18217 L .02381 .10905 L .13057 .02934 L .5872 .10748 L s .008 w .5872 .10748 Mdot .66855 .13481 Mdot .62767 .24706 Mdot .91587 .02618 Mdot .97619 .31246 Mdot .94091 .32114 Mdot .957 .42641 Mdot .69496 .52922 Mdot .51312 .68914 Mdot .46214 .87155 Mdot .52905 .87472 Mdot .67454 1.01064 Mdot .47251 1.01594 Mdot .39016 1.07327 Mdot .34693 1.05298 Mdot .43013 .5807 Mdot .523 .2327 Mdot .28124 .43071 Mdot .08396 .60109 Mdot .07842 .47085 Mdot .25578 .30807 Mdot .33988 .21612 Mdot .41069 .18217 Mdot .02381 .10905 Mdot .13057 .02934 Mdot 0 0 m 1 0 L 1 1.09945 L 0 1.09945 L closepath clip newpath % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{93.1875, 102.375}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgL`03CW<600HlOol00`06CW<01P07Ool100H0000300Io ogoo00Eoo`801Pa>L`H01SEoo`0400I>Ldic00H7Ool100H0000300Ioogoo00Aoo`0300I>Ldic019> L`H01Reoo`801P=>L`0300Ioogoo00Eoo`401P0000<01WooOol00goo00<01TicCW<06Dic1P069Woo 00<01TicCW<014ic00<01WooOol017oo0@0600001006Oomoogoo0P068Tic1P067goo00<01TicCW<0 1Dic00<01WooOol017oo0@0600001006Oomoo`06:Tic1P065goo0P0624ic00<01WooOol017oo0@06 00000`06Ool01P0300H^CW<400HBOol00`06CW=>L`08CW<00`06Oomoo`04Ool100H0000300Ioogoo 00=oo`D01Re>L`<01Pioo`0300I>Ldic00U>L`0300Ioogoo00Aoo`401P0000<01WooOol027oo1@06 :dic0`062Goo0P063Dic00<01WooOol00goo0@0600000`06Oomoo`0=Ool500HXCW<00`06Oomoo`06 Ool00`06CW=>L`0=CW<00`06Oomoo`03Ool100H0000300Ioogoo019oo`D01R=>L`0300Ioogoo00Ao o`801Q1>L`0300Ioogoo00=oo`401P0000<01WooOol05goo1@067Dic00<01WooOol017oo00<01Tic CW<044ic00<01WooOol00goo0@0600000`06Oomoo`0LOol500HHCW<00`06Oomoo`03Ool00`06CW=> L`0ACW<00`06Oomoo`03Ool100H0000300Ioogoo025oo`<01QE>L`0400IoogooOol200HECW<00`06 Oomoo`02Ool100H0000300Ioogoo01moo`801QM>L`0500IoogooOol01P0GCW<00`06Oomoo`02Ool1 00H0000300Ioogoo01eoo`801QU>L`0400Ioogoo00HHCW<00`06Oomoo`02Ool100H0000300Ioogoo 01aoo`0300I>Ldic01Q>L`0400Ioo`0600HICW<00`06Oomoo`02Ool100H0000300Ioogoo01aoo`03 00I>Ldic00i>L`0300I>Ldic00M>L`801Q]>L`0300Ioogoo009oo`401P0000<01WooOol06goo00<0 1TicCW<03Tic0P062Dic00<01TicCW<06dic00@01WooOomoo`401P0000<01WooOol06Woo00<01Tic CW<03Tic00<01Woo00H024ic0P067Dic00@01WooOomoo`401P0000<01WooOol06Goo00<01TicCW<0 3Tic00@01WooOol01RM>L`0400IoogooOol100H0000300Ioogoo01Qoo`0300I>Ldic00i>L`0400Io ogoo00HXCW<01006Oomoogoo0@0600000`06Oomoo`0GOol00`06CW=>L`0=CW<200H3Ool00`06CW=> L`0VCW<01006Oomoogoo0@0600000`06Oomoo`0FOol00`06CW=>L`0=CW<00`06Oomoo`03Ool00`06 CW=>L`0WCW<00`06Oomoo`0100H0000300Ioogoo01Aoo`801Pm>L`0300Ioogoo00=oo`0300I>Ldic 02Q>L`0300Ioogoo00401P0000<01WooOol04goo0P063Tic0P061Woo00<01TicCW<09dic0`060Goo 0@0600000`06Oomoo`0BOol00`06CW=>L`0=CW<00`06Oomoo`06Ool00`06CW=>L`0UCW<200H4Ool1 00H0000300Ioogoo015oo`0300I>Ldic00e>L`0300Ioogoo00Moo`0300I>Ldic02E>L`0300Ioogoo 00=oo`401P0000<01WooOol047oo00<01TicCW<03Dic00<01WooOol01goo00<01TicCW<09Tic00<0 1WooOol00goo0@0600000`06Oomoo`0?Ool00`06CW=>L`0L`0WCW<00`06 Oomoo`02Ool100H0000300Ioogoo00ioo`0300I>Ldic00a>L`0300Ioogoo00Yoo`0300I>Ldic02M> L`0300Ioogoo009oo`401P0000<01WooOol03Goo00<01TicCW<034ic00<01WooOol02Woo00<01Tic CW<0:4ic00<01WooOol00Woo0@0600000`06Oomoo`0L`0;CW<200H=Ool00`06CW=> L`0XCW<00`06Oomoo`02Ool100H0000300Ioogoo00]oo`0300I>Ldic00]>L`0300Ioogoo00eoo`03 00I>Ldic02Q>L`0300Ioogoo009oo`401P0000<01WooOol02Woo00<01TicCW<02dic00<01WooOol0 3Woo00<01TicCW<0:Dic00@01WooOomoo`401P0000<01WooOol02Goo00<01TicCW<02dic00<01Woo Ool03Woo00<01TicCW<0:Dic0P060goo0@0600000`06Oomoo`08Ool00`06CW=>L`0:CW<300H@Ool0 0`06CW=>L`0VCW<300H5Ool100H0000300Ioogoo00Moo`0300I>Ldic00Y>L`0300Ioogoo015oo`03 00I>Ldic02A>L`801PQoo`401P0000<01WooOol01Woo00<01TicCW<02Tic00<01WooOol04Woo00<0 1TicCW<08Tic0P062Woo0@0600000`06Oomoo`04Ool200HL`0P CW<300HLdic00Y>L`0300Ioogoo01=oo`0300I>Ldic01i> L`801Pmoo`401P0000<01WooOol017oo00<01TicCW<02Dic00<01WooOol057oo00<01TicCW<06dic 0`064Goo0@0600000`06Oomoo`04Ool00`06CW=>L`08CW<00`06Oomoo`0DOol00`06CW=>L`0JCW<2 00HDOol100H0000300Ioogoo00Aoo`0300I>Ldic00M>L`0300Ioogoo01Eoo`0300I>Ldic01Q>L`80 1QIoo`401P0000<01WooOol017oo00<01TicCW<01Dic0P0667oo00<01TicCW<05Dic0`0667oo0@06 00000`06Oomoo`04Ool00`06CW=>L`04CW<00`06Oomoo`0HOol00`06CW=>L`0CCW<200HKOol100H0 000300Ioogoo00Aoo`0300I>Ldic00=>L`0300Ioogoo01Qoo`0300I>Ldic01=>L`0300Ioogoo01]o o`401P0000<01WooOol017oo00<01TicCW<00Tic00<01WooOol06Goo00<01TicCW<04Tic00<01Woo Ool077oo0@0600000`06Oomoo`04Ool01@06CW=>Ldic00H077oo00<01TicCW<04Dic00<01WooOol0 7Goo0@0600000`06Oomoo`04Ool01006CW=>L`0677oo00<01TicCW<04Dic00<01WooOol07Woo0@06 00000`06Oomoo`04Ool00`06CW<01P0MOol00`06CW=>L`0@CW<00`06Oomoo`0OOol100H0000300Io ogoo00Aoo`801Qioo`0300I>Ldic00m>L`0300Ioogoo021oo`401P0000<01WooOol017oo00<01Woo Ool07Goo00<01TicCW<03Dic0P068goo0@0600000`06Oomoo`0TOol00`06CW=>L`0Ldic00a>L`0300Ioogoo02Aoo`401P0000<01WooOol0 8goo00<01TicCW<02dic00<01WooOol09Goo0@0600000`06Oomoo`0SOol00`06CW=>L`0:CW<00`06 Oomoo`0VOol100H0000300Ioogoo02=oo`0300I>Ldic00U>L`0300Ioogoo02Moo`401P0000<01Woo Ool08goo00<01TicCW<024ic00<01WooOol0:7oo0@0600000`06Oomoo`0SOol00`06CW=>L`06CW<2 00H[Ool100H0000300Ioogoo029oo`0300I>Ldic00M>L`0300Ioogoo02Yoo`401P0000<01WooOol0 8Woo00<01TicCW<01dic00<01WooOol0:Woo0@0600000`06Oomoo`0ROol00`06CW=>L`07CW<00`06 Oomoo`0ZOol100H0000300Ioogoo029oo`0300I>Ldic00I>L`0300Ioogoo02]oo`401P0000<01Woo Ool08Woo00<01TicCW<01Tic00<01WooOol0:goo0@0600000`06Oomoo`0ROol00`06CW=>L`06CW<0 0`06Oomoo`0[Ool100H0000300Ioogoo025oo`0300I>Ldic00I>L`0300Ioogoo02aoo`401P0000<0 1WooOol08Goo00<01TicCW<01Tic00<01WooOol0;7oo0@0600000`06Oomoo`0QOol00`06CW=>L`06 CW<00`06Oomoo`0/Ool100H0000300Ioogoo025oo`0300I>Ldic00E>L`0300Ioogoo02eoo`401P00 00<01WooOol08Goo00<01TicCW<01Dic00<01WooOol0;Goo0@0600000`06Oomoo`0QOol00`06CW=> L`05CW<00`06Oomoo`0]Ool100H0000300Ioogoo021oo`0300I>Ldic00E>L`0300Ioogoo02ioo`40 1P0000<01WooOol087oo00<01TicCW<01Dic00<01WooOol0;Woo0@0600000`06Oomoo`0POol00`06 CW=>L`05CW<00`06Oomoo`0^Ool100H0000300Ioogoo021oo`0300I>Ldic00A>L`0300Ioogoo02mo o`401P0000<01WooOol087oo00<01TicCW<014ic1006;Woo0@0600000`06Oomoo`0POol00`06CW=> L`08CW<400HZOol100H0000300Ioogoo021oo`0300I>Ldic00a>L`0300Ioogoo02Moo`401P0000<0 1WooOol07goo00<01TicCW<03Tic00<01WooOol09Woo0@0600000`06Oomoo`0OOol00`06CW=>L`0? CW<00`06Oomoo`0UOol100H0000300Ioogoo01moo`0300I>Ldic011>L`0300Ioogoo02Aoo`401P00 00<01WooOol07goo00<01TicCW<04Dic00<01WooOol08goo0@0600000`06Oomoo`0OOol00`06CW=> L`0BCW<200HSOol100H0000300Ioogoo01moo`0300I>Ldic01A>L`0300Ioogoo021oo`401P0000<0 1WooOol07Woo00<01TicCW<05Tic00<01WooOol07goo0@0600000`06Oomoo`0NOol00`06CW=>L`0G CW<00`06Oomoo`0NOol100H0000300Ioogoo01ioo`0300I>Ldic01Q>L`0300Ioogoo01eoo`401P00 00<01WooOol07Woo00<01TicCW<06Dic00<01WooOol077oo0@0600000`06Oomoo`0NOol00`06CW=> L`07CW<00`06CW=>L`07CW<:00HMOol100H0000300Ioogoo01ioo`0300I>Ldic00I>L`/01RMoo`40 1P0000<01WooOol07Goo00<01TicCW<01Tic00<01WooOol0<7oo0@0600000`06Oomoo`0MOol00`06 CW=>L`04CW<200HcOol100H0000300Ioogoo01eoo`801P=>L`801SEoo`401P0000<01WooOol07goo 00<01Tic00H0=goo0@0600000`06Oomoo`0POol200HgOol100H0000300Ioogoo05Uoo`401P00G@06 0000\ \>"], ImageRangeCache->{{{0, 92.1875}, {101.375, 0}} -> {-0.0169881, 0.0169427, \ 0.00941354, 0.00941354}}] }, Open ]], Cell[TextData[{ "Figure ", CounterBox["NumberedFigure"], ". A 25-gon with its angles restricted to the interval ", Cell[BoxData[ \(TraditionalForm\`\([10 \[Degree], 350 \[Degree]]\)\)]], "." }], "NumberedFigure", FontWeight->"Bold", CellTags->"Angle Restricted Polygon"], Cell[TextData[{ "Several of the routines in the package were compiled for speed. Here is an \ example involving ", StyleBox["LeftOf", "Input"], ": the three arguments, ", StyleBox["p", "Input"], ", ", StyleBox["q", "Input"], ", ", StyleBox["r", "Input"], ", are specified to be real of depth 1, so ", StyleBox["p\[LeftDoubleBracket]i\[RightDoubleBracket]", "Input"], " can then be used in the compiled definition." }], "Text"], Cell[BoxData[ \(\(LeftOf = Compile[{{p, _Real, 1}, {q, _Real, 1}, {r, _Real, 1}}, p\[LeftDoubleBracket]2\[RightDoubleBracket]\ \((r\ \[LeftDoubleBracket]1\[RightDoubleBracket] - q\[LeftDoubleBracket]1\[RightDoubleBracket])\) + q\[LeftDoubleBracket]2\[RightDoubleBracket]\ \((p\ \[LeftDoubleBracket]1\[RightDoubleBracket] - r\[LeftDoubleBracket]1\[RightDoubleBracket])\) + r\[LeftDoubleBracket]2\[RightDoubleBracket]\ \((q\ \[LeftDoubleBracket]1\[RightDoubleBracket] - p\[LeftDoubleBracket]1\[RightDoubleBracket])\) > 0];\)\)], "Input"], Cell[BoxData[ \(\(LeftOfSlow[p_, q_, r_] := p\[LeftDoubleBracket]2\[RightDoubleBracket]\ \ \((r\[LeftDoubleBracket]1\[RightDoubleBracket] - q\[LeftDoubleBracket]1\[RightDoubleBracket])\) + q\[LeftDoubleBracket]2\[RightDoubleBracket]\ \((p\ \[LeftDoubleBracket]1\[RightDoubleBracket] - r\[LeftDoubleBracket]1\[RightDoubleBracket])\) + r\[LeftDoubleBracket]2\[RightDoubleBracket]\ \((q\ \[LeftDoubleBracket]1\[RightDoubleBracket] - p\[LeftDoubleBracket]1\[RightDoubleBracket])\) > 0;\)\)], "Input"], Cell["\<\ Here are some timings to show how significant the speedup is.\ \>", \ "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(\({p, q, r} = {{0.1, 0.2}, {0.3, 0.4}, {0.9, 0.6}};\)\), "\n", \(First[Timing[Do[LeftOf[p, q, r], {10\^4}]]]\)}], "Input"], Cell[BoxData[ \(0.6833333333343035`\ Second\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(First[Timing[Do[LeftOfSlow[p, q, r], {10\^4}]]]\)], "Input"], Cell[BoxData[ \(3.5333333333328483`\ Second\)], "Output"] }, Open ]], Cell[TextData[{ "There are other algorithms in the literature that the serious creator of \ random polygons will want to look at (the web site in [Auer and Held 1996] is \ a good place to start). But for rudimentary testing of polygon algorithms on \ ", Cell[BoxData[ \(TraditionalForm\`n\)]], "-gons with 100 or fewer vertices, the steady-growth algorithm seems \ adequately robust and fast." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["References", "Section"], Cell["\<\ [Auer 1996] T. Auer, Heuristics for the generation of random \ polygons, Master\[CloseCurlyQuote]s Thesis, Univ. Salzburg, Salzburg, \ Austria, 1996 .\ \>", "Text"], Cell[TextData[{ "[Auer and Held 1996] T. Auer and M. Held, Heuristics for the generation of \ random polygons, in ", StyleBox["Proceedings of the Eighth Canadian Conference on Computational \ Geometry,", FontSlant->"Italic"], " Ottawa, Carleton Univ. Press, 1996, 38\[Dash]44 (additional material at \ www.cosy.sbg.ac.at/~held/projects/rpg/rpg.html)." }], "Text"], Cell[TextData[{ "[O\[CloseCurlyQuote]Rourke 1998] J. O\[CloseCurlyQuote]Rourke, ", StyleBox["Computational Geometry in C,", FontSlant->"Italic"], " 2nd ed., Cambridge Univ. Pr., New York, 1998." }], "Text"], Cell[TextData[{ "[Wagon 1999] S. Wagon, ", StyleBox["Mathematica in Action", FontSlant->"Italic"], ", 2nd ed., Springer/TELOS, New York, 1999." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["About the Author", "Section"], Cell[TextData[{ "Stan Wagon uses ", StyleBox["Mathematica", FontSlant->"Italic"], " extensively in his research, teaching, and exposition, and is especially \ appreciative of the new ways ", StyleBox["Mathematica", FontSlant->"Italic"], " allows us to look at mathematical objects. He is author or coauthor of \ several books, including ", StyleBox["Animating Calculus", FontSlant->"Italic"], ", ", StyleBox["VisualDSolve", FontSlant->"Italic"], ", ", StyleBox["Which Way Did the Bicycle Go?,", FontSlant->"Italic"], " the just-released and much expanded second edition of ", StyleBox["Mathematica in Action", FontSlant->"Italic"], ", and the recently released ", StyleBox["A Course in Computational Number Theory", FontSlant->"Italic"], ". He teaches a high-altitude course, ", StyleBox["Rocky Mountain Mathematica", FontSlant->"Italic"], ", every summer in the mountains of Colorado, and has used ", StyleBox["Mathematica", FontSlant->"Italic"], " to help design geometric entries in snow sculpture contests.\n\nStan \ Wagon\nDepartment of Mathematics and Computer Science\nMacalester College\n\ St. Paul, MN 55105\nwagon@macalester.edu" }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["The RandomPolygon` Package", "Section"], Cell["\<\ If[Names[#]=!={}, Remove[#]] & /@ \ {\"Global`extend\",\"Global`InitialStep\", \"Global`PermuteAndReject\",\"Global`PolygonQ\",\"Global`RandomPolygon\"\ , \"Global`ShowPoints\",\"Global`ShowPolygon\",\"Global`ShowSteps\", \"Global`Smooth\",\"Global`SmoothCurve\", \"Global`SmoothingParameter\",\"Global`SteadyGrowth\",\"Global`\ Triangulate\"}; BeginPackage[\"RandomPolygon`\", {\"Utilities`FilterOptions`\", \"DiscreteMath`ComputationalGeometry`\", \"DiscreteMath`Permutations`\"}]; Off[General::spell1]; \ \>", "Input", AutoIndent->False], Cell["\<\ CorrectnessCheckWhenSmoothing::usage = \ \"CorrectnessCheckWhenSmoothing is an option to RandomPolygon that, when \ False, turns off the time-consuming check for self-intersections.\"; AngleInterval::usage = \"AngleInterval is an option to RandomPolygon[n] that, \ when set to {a1, a2}, causes the algorithm to generate polygons until it has \ found one whose angles lie between a1 and a2. If smoothing is used, that is \ done before the angle computation.\"; BorderStyle::usage = \"BorderStyle is an option to RandomPolygon that sets \ the style of the border. A setting of None causes no border to appear.\"; PolygonColor::usage = \"PolygonColor is an option to RandomPolygon that sets \ the color of the displayed polygon.\"; SmoothingIterations::usage = \"SmoothingIterations is an option to \ RandomPolygon that sets the number of times the smoothing operation should be \ carried out. Each iteration doubles the number of vertices by replacing each \ vertex with the two vertices that are 1/4 of the way to their neighbors. The \ parameter, 0.25, can be changed by the Smoothing Parameter option. The effect \ is to eliminating some of the sharp edges.\"; Triangulate::usage = \"Triangulate[poly] returns a triangulation of the \ polygon, using indices for the triangles.\"; Angles::usage = \"Angles[p] returns the list of angles in the polygon p, \ measured in degrees.\"; SteadyGrowth::usage = \"SteadyGrowth is a possible setting to the Method \ option for RandomPolygon, and calls upon the Auer-Held steady-growth \ algorithm.\"; PermuteAndReject::usage = \"PermuteAndReject is a possible setting to the \ Method option for RandomPolygon. This generates random permutations until a \ polygon is reached.\"; RandomPolygon::usage = \"RandomPolygon[n] gives a random polygon on n points \ in the unit square, via the Auer-Held steady-growth algorithm. \ RandomPolygon[pts] gives a random polygon using the points pts.\"; extend::usage = \"extend[a] appends the first element of a to the end of \ a.\"; Smooth::usage = \"Smooth[polygon, c] gives a polygon with twice as many \ points that is smoother than the original, c is the smoothing parameter, \ which defaults to 4. There is a chance this will introduce \ self-intersections.\"; InitialStep::usage = \"InitialStep is an option to ShowPolygon that, when \ ShowSteps is True, specifies the starting point of the movie.\"; ShowPoints::usage = \"ShowPoints is an option to RandomPolygon that, when \ ShowPolygon is True, determines whether the vertices are shown.\"; ShowPolygon::usage = \"ShowPolygon is an option to RandomPolygon that causes \ the polygon to be shown graphically.\"; SmoothingParameter::usage = \"SmoothingParameter is an option to \ RandomPolygon that sets the constant used for the smoothing process. The \ default, 0.25, replaces each point by the points 1/4 of the way along to the \ neighbors. The value must be less than 0.5.\"; PolygonQ::usage = \"PolygonQ[p] returns True if p is a simple polygon. It is \ assumed that p is a list of distinct points with no superposition among its \ edges.\"; RandomPolygon::badwarn = \"The smoothing process has led to a nonpolygon; a \ different random polygon is being generated.\"; SmoothCurve::usage = \"SmoothCurve is an option to RandomPolygon that causes \ the polygon to be interpolated into (fx,fy) that defines a smooth curve. \ However, there is a good chance the curve will have self-intersections.\"; ShowSteps::usage = \"ShowSteps is an option to RandomPolygon that, when True, \ causes each step of the construction to be shown.\"; RandomPolygon::notrac = \"The ShowSteps option can be used only when the \ method chosen is SteadyGrowth.\"; PointStyle::usage = \"PointStyle is an option to RandomPolygon that specifies \ the style of the vertices.\";\ \>", "Input", AutoIndent->False], Cell["Begin[\"`Private`\"]; ", "Input", AutoIndent->False], Cell["\<\ If[$VersionNumber < 4, Unprotect[Mod]; Mod[a_, n_, 1] := Mod[a, n] /. 0 -> n; Protect[Mod]]; Angles[poly_] := (epol=Prepend[extend[poly], poly[[-1]]]; 1/Degree Table[ angle[epol[[i]]-epol[[i+1]], epol[[i]]- epol[[i-1]]]/. xx_?Negative \[RuleDelayed] 2 Pi + xx, {i, 2, Length[epol]-1}]); MinAndMax[x_, f_] := ( x[[{Position[#, Min[#], 1, 1][[1,1]], Position[#, Max[#], 1, 1][[1,1]]}]]&)[f /@ x]; LeftOf = Compile[{{p,_Real,1}, {q,_Real,1}, {r, _Real, 1}}, p[[2]](r[[1]]-q[[1]]) + q[[2]](p[[1]]-r[[1]]) + r[[2]](q[[1]]-p[[1]]) > 0]; extend[s_] := Append[s, s[[1]]]; norm = Compile[{{v, _Real, 1}}, Sqrt[v . v]]; InsideTriangleQ = Compile[{{q, _Real, 2}, {p, _Real, 1}}, 3 == Abs[ Sign[p[[2]](q[[1,1]] - q[[3,1]]) + q[[3,2]](p[[1]] - q[[1,1]]) + q[[1,2]](q[[3,1]] - p[[1]])] + Sign[p[[2]](q[[2,1]] - q[[1,1]]) + q[[1,2]](p[[1]] - q[[2,1]]) + q[[2,2]](q[[1,1]] - p[[1]])] + Sign[p[[2]](q[[3,1]] - q[[2,1]]) + q[[2,2]](p[[1]] - q[[3,1]]) + q[[3,2]](q[[2,1]]- p[[1]])]] ]; IntersectInteriorQ[{a_, b_}, {c_, d_}] := Xor[LeftOf[a, b, c], LeftOf[a, b, d]] && Xor[LeftOf[c, d, a], LeftOf[c, d, b]] && a != c && a != b && b != c && b != d angle = Compile[{{v, _Real, 1}, {w, _Real, 1}}, Sign[v[[1]] * w[[2]] - v[[2]] * w[[1]]]* ArcCos[v . w / Sqrt[v.v * w.w]]]; AdditionalTriangle[poly_, p_] := MinAndMax[Range[Length[poly]], angle[poly[[1]] - p, poly[[#]] - p] &]; VisibleEdge[pol_, pt_] := Module[{edges, epol = extend[pol]}, If[Length[pol] == 2, Return[pol], edges = Map[epol[[{#, # + 1}]]&, Last /@ Sort[Transpose[{ Apply[ArcTan, (# - pt &) /@ pol, {1}], Range[Length[pol]]}]]]; Select[edges, visibleQ[DeleteCases[edges, #], #, pt]&, 1][[1]]]]; visibleQ[blockers_, {p_,q_}, pt_] := {} == Select[blockers, (* the next conditions use in several places the fact that the edges in blockers are in the same order as {p, q} *) InsideTriangleQ[{p, q, pt}, #[[2]]] || IntersectInteriorQ[#, {pt, p}] || (p == #[[2]] && IntersectInteriorQ[#, {pt, q}])&, 1] NewPoint[{poly_, unused_}] := Module[{p, tri, s, n = Length[unused]}, p = Select[Range[n], (tri = Append[poly[[AdditionalTriangle[poly, unused[[#]]]]], unused[[#]]]; Length[s = Select[Delete[Range[n],#], InsideTriangleQ[tri, unused[[#]]]&, 2]] < 2)&, 1][[1]]; If[Length[s] == 1, p = s[[1]]]; {Append[poly, unused[[p]]], Delete[unused, p]}]; RandomPolygonPermuteAndReject[pts_] := (ans = \ pts[[DiscreteMath`Permutations`RandomPermutation[Length[pts]]]]; While[!PolygonQ[ans], ans = \ pts[[DiscreteMath`Permutations`RandomPermutation[Length[pts]]]]]; If[Orientation[ans]==-1, Reverse[ans], ans]); RandomPolygonRaw[pts_] := (ans=Fold[( a = VisibleEdge[#1, #2][[1]]; #1 /.{x___, a, y___} :> {x, a, #2, y}) &, {#[[1]], #[[2]]}, Drop[#, 2]]& [ (* order is here for use with ShowSteps option *) order = Nest[NewPoint,{Take[pts,2], Drop[pts,2]}, Length[pts]-2][[1]]]; If[Orientation[ans]==-1, Reverse[ans], ans]); Options[RandomPolygon] = {ShowSteps -> False, ShowPoints -> False, InitialStep -> 1, SmoothingParameter -> 0.25, SmoothCurve -> False, SmoothingIterations->0, Background->GrayLevel[1], ShowPolygon -> True, Method -> SteadyGrowth, PolygonColor->GrayLevel[0.6],BorderStyle->{}, AngleInterval -> {0,360}, CorrectnessCheckWhenSmoothing->True, PointStyle ->{PointSize[0.01], RGBColor[1,0,0]} }; RandomPolygon[n_Integer /; n >= 3, opts___] := Module[{m,mm,s}, ai = AngleInterval /. {opts} /. Options[RandomPolygon]; s = Random[Integer, 10^6]; If[ai != {0, 360}, {m, mm} = Sort[Angles[ RandomPolygon[Array[Random[]&, {n, 2}], \ ShowPolygon->False]]][[{1,-1}]]; While[!(ai[[1]] <= m < mm <= ai[[2]]), s++;SeedRandom[s]; {m, mm} = Sort[Angles[ RandomPolygon[pts=Array[Random[]&, {n, 2}], ShowPolygon->False]]][[{1,-1}]] ]]; SeedRandom[s];RandomPolygon[pts=Array[Random[]&, {n, 2}],opts]]; RandomPolygon[pts_List, opts___] := Module[ {ans, ans1,smQ, m, smc, scQ, n = Length[pts]}, {trQ, smc, scQ,ist, showQ,ptQ,met,smoothn, psty,bg, pcol, borsty, chQ} = {ShowSteps, SmoothingParameter, SmoothCurve, InitialStep, ShowPolygon, ShowPoints, Method, \ SmoothingIterations, PointStyle, Background, PolygonColor, BorderStyle, CorrectnessCheckWhenSmoothing} /. {opts} /. Options[RandomPolygon]; pts1 = pts[[RandomPermutation[n]]]; If[trQ && met =!= SteadyGrowth, Message[RandomPolygon::notrac]; Return[HoldForm[RandomPolygon[pts1]]]]; smQ = (smoothn > 0); If[!ListQ[psty], psty = {psty}]; If[!ListQ[borsty] && borsty =!= None, borsty = {borsty}]; rawpoly = Which[met===SteadyGrowth, RandomPolygonRaw, met === PermuteAndReject, RandomPolygonPermuteAndReject][pts1]; ans = If[smQ, Nest[Smooth[#, smc]&, rawpoly, smoothn],rawpoly]; If[smQ && chQ && !PolygonQ[ans], Message[RandomPolygon::badwarn]; Return[RandomPolygon[n, opts]]]; If[scQ, Interpolation /@ {Transpose[{Range[0, 1, 1/Length[ans]], First /@ extend[ans]}], Transpose[{Range[0, 1, 1/Length[ans]], Last /@ extend[ans]}]}, If[trQ && met === SteadyGrowth, Do[ pp = Take[order,j-1]; np = order[[j]]; ans1=Select[ans, #==np||MemberQ[pp, #]&]; pos = Position[ans1, np][[1,1]]; pol = Sort[pp, Position[ans,#1][[1,1]] False], {j, Max[3, ist], Length[order]}]; Show[Graphics[{ {RGBColor[1,1,.5], Polygon[ans], GrayLevel[0], Line[extend[ans[[ConvexHull[ans]]]]], PointSize[0.02], RGBColor[0,0,1], Point/@ ans}}], PlotRange\[Rule]{{-0.1,1.1},{-0.1,1.1}}, AspectRatio -> 1, Frame -> True, FrameTicks->False] ]; If[showQ, Show[Graphics[{{pcol,Polygon[ans]}, Append[If[borsty=!= None,borsty,{}], Line[extend[ans]]], If[ptQ, Prepend[Point /@ ans,psty],{}]}], FilterOptions[Graphics, opts], PlotRange -> All, AspectRatio -> Automatic,Frame -> True,FrameTicks ->None, DefaultColor -> RGBColor[0, 0, .2], Background -> bg]]; ans]]; Smooth[data_, c_:0.25] := Flatten[Transpose[{ (1/c - 1) data + RotateRight[data], (1/c - 1) data + RotateLeft[data]} * c], 1] /; c < 0.5; PolygonQ[x_] := Module[{ans = True, edges = Partition[extend[x], 2, 1]}, Do[If[IntersectInteriorQ[edges[[i]], edges[[j]]], ans = False; Break[]], {i, 3, Length[x]}, {j, i - 2}]; ans]; (* the following routines come from my computational geometry package, so \ there is some duplication. *) SACom = Compile[{x1, y1, x2, y2, x3, y3}, 0.5*(-x2*y1 + x3*y1 + x1*y2 - x3*y2 - x1*y3 + x2*y3)]; SignedArea[triangle_] := SACom @@ Flatten[triangle]; Area[p_] := Abs[SignedArea[p]]; ConvexVertex[p_] := First[First[Position[p, First[Sort[p]]]]]; PolygonDiagonal[poly_] := Module[{v = ConvexVertex[poly], invertices, u, w}, u = v - 1 /. 0 -> Length[poly]; w = v + 1 /. 1 + Length[poly] -> 1; \tinvertices = Select[Delete[poly, {{u}, {v}, {w}}], InsideTriangleQ[poly[[{u, v, w}]], #1] &]; Sort[If[invertices == {}, {u, w}, Identity[{Position[poly, Last[Sort[invertices, Area[{poly[[u]], #1, poly[[w]]}] <= Area[{poly[[u]], #2, poly[[w]]}] & ]]][[1,1]], v}]]]]; Triangulate[poly_List] := If[Orientation[poly] == 1, Triangulate[poly, Range[Length[poly]]], Reverse /@ (Length[poly] + 1 - Triangulate[Reverse[poly], Range[Length[poly]]])]; Triangulate[poly_, inds_] := Module[{d = PolygonDiagonal[poly[[inds]]]}, Join[Triangulate[poly, Take[inds, d]], Triangulate[poly, Drop[inds, d + {1, -1}]]]]; Triangulate[_, {i1_, i2_, i3_}] := {{i1, i2, i3}}; Orientation[triangle_] := Sign[SignedArea[triangle]] /; Length[triangle] == 3; Orientation[poly_] := Orientation[poly[[ ConvexVertex[poly] + {-1, 0, 1} /. {0 -> Length[poly], Length[poly] + 1 -> 1}]]] /; Length[poly] > \ 3;\ \>", "Input", AutoIndent->False], Cell["\<\ End[]; EndPackage[]; \ \>", "Input", AutoIndent->False] }, Closed]] }, Open ]] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, WindowSize->{725, 645}, WindowMargins->{{34, Automatic}, {Automatic, 15}}, PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Inherited, Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"]}, {Inherited, Inherited, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, StyleDefinitions -> Notebook[{ Cell[CellGroupData[{ Cell["Style Definitions", "Subtitle"], Cell["\<\ Modify the definitions below to change the default appearance of all cells in \ a given style. Make modifications to any definition using commands in the \ Format menu.\ \>", "Text"], Cell[CellGroupData[{ Cell["Style Environment Names", "Section"], Cell[StyleData[All, "Working"], PageWidth->WindowWidth, CellLabelMargins->{{12, Inherited}, {Inherited, Inherited}}, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], PageWidth->WindowWidth, CellLabelMargins->{{24, Inherited}, {Inherited, Inherited}}, ScriptMinSize->12], Cell[StyleData[All, "Condensed"], PageWidth->WindowWidth, CellLabelMargins->{{8, Inherited}, {Inherited, Inherited}}, ScriptMinSize->8], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, CellLabelMargins->{{2, Inherited}, {Inherited, Inherited}}, ScriptMinSize->5, PrivateFontOptions->{"FontType"->"Outline"}] }, Closed]], Cell[CellGroupData[{ Cell["Notebook Options", "Section"], Cell["\<\ The options defined for the style below will be used at the Notebook level.\ \>", "Text"], Cell[StyleData["Notebook"], PageHeaders->{{Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], None, Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"]}, {Cell[ TextData[ { ValueBox[ "FileName"]}], "Header"], None, Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, CellFrameLabelMargins->6, StyleMenuListing->None] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headings", "Section"], Cell[CellGroupData[{ Cell[StyleData["Title"], CellMargins->{{12, Inherited}, {20, 40}}, CellGroupingRules->{"TitleGrouping", 0}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Title", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subtitle", 0}, {"Subsubtitle", 0}}, FontFamily->"Helvetica", FontSize->36, FontWeight->"Bold"], Cell[StyleData["Title", "Presentation"], CellMargins->{{24, 10}, {20, 40}}, LineSpacing->{1, 0}, FontSize->44], Cell[StyleData["Title", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, FontSize->20], Cell[StyleData["Title", "Printout"], CellMargins->{{2, 10}, {12, 30}}, FontSize->24] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], CellMargins->{{12, Inherited}, {20, 15}}, CellGroupingRules->{"TitleGrouping", 10}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Subtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subsubtitle", 0}}, FontFamily->"Helvetica", FontSize->24], Cell[StyleData["Subtitle", "Presentation"], CellMargins->{{24, 10}, {20, 20}}, LineSpacing->{1, 0}, FontSize->36], Cell[StyleData["Subtitle", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, FontSize->14], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{2, 10}, {12, 8}}, FontSize->18] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubtitle"], CellMargins->{{12, Inherited}, {20, 15}}, CellGroupingRules->{"TitleGrouping", 20}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Subsubtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}}, FontFamily->"Helvetica", FontSize->14, FontSlant->"Italic"], Cell[StyleData["Subsubtitle", "Presentation"], CellMargins->{{24, 10}, {20, 20}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Subsubtitle", "Condensed"], CellMargins->{{8, 10}, {8, 8}}, FontSize->12], Cell[StyleData["Subsubtitle", "Printout"], CellMargins->{{2, 10}, {12, 8}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Section"], CellDingbat->"\[FilledSquare]", CellMargins->{{25, Inherited}, {8, 24}}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}, {"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->16, FontWeight->"Bold"], Cell[StyleData["Section", "Presentation"], CellMargins->{{40, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->24], Cell[StyleData["Section", "Condensed"], CellMargins->{{18, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Section", "Printout"], CellMargins->{{13, 0}, {7, 22}}, FontSize->14] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellDingbat->"\[FilledSmallSquare]", CellMargins->{{22, Inherited}, {8, 20}}, CellGroupingRules->{"SectionGrouping", 40}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, FontFamily->"Times", FontSize->14, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{36, 10}, {11, 32}}, LineSpacing->{1, 0}, FontSize->22], Cell[StyleData["Subsection", "Condensed"], CellMargins->{{16, Inherited}, {6, 12}}, FontSize->12], Cell[StyleData["Subsection", "Printout"], CellMargins->{{9, 0}, {7, 22}}, FontSize->12] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellDingbat->"\[FilledSmallSquare]", CellMargins->{{22, Inherited}, {8, 18}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, DefaultNewInlineCellStyle->"None", InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, LanguageCategory->"NaturalLanguage", CounterIncrements->"Subsubsection", FontFamily->"Times", FontWeight->"Bold"], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{34, 10}, {11, 26}}, LineSpacing->{1, 0}, FontSize->18], Cell[StyleData["Subsubsection", "Condensed"], CellMargins->{{17, Inherited}, {6, 12}}, FontSize->10], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{9, 0}, {7, 14}}, FontSize->11] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Body Text", "Section"], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {7, 7}}, InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, Hyphenation->True, LineSpacing->{1, 3}, CounterIncrements->"Text"], Cell[StyleData["Text", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}, FontSize->16], Cell[StyleData["Text", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}, FontSize->11], Cell[StyleData["Text", "Printout"], CellMargins->{{2, 2}, {6, 6}}, TextJustification->0.5, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["SmallText"], CellMargins->{{12, 10}, {6, 6}}, DefaultNewInlineCellStyle->"None", Hyphenation->True, LineSpacing->{1, 3}, LanguageCategory->"NaturalLanguage", CounterIncrements->"SmallText", FontFamily->"Helvetica", FontSize->9], Cell[StyleData["SmallText", "Presentation"], CellMargins->{{24, 10}, {8, 8}}, LineSpacing->{1, 5}, FontSize->12], Cell[StyleData["SmallText", "Condensed"], CellMargins->{{8, 10}, {5, 5}}, LineSpacing->{1, 2}, FontSize->9], Cell[StyleData["SmallText", "Printout"], CellMargins->{{2, 2}, {5, 5}}, TextJustification->0.5, FontSize->7] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Input/Output", "Section"], Cell["\<\ The cells in this section define styles used for input and output to the \ kernel. Be careful when modifying, renaming, or removing these styles, \ because the front end associates special meanings with these style names. \ Some attributes for these styles are actually set in FormatType Styles (in \ the last section of this stylesheet). \ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{45, 10}, {5, 7}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, DefaultFormatType->DefaultInputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", FontWeight->"Bold"], Cell[StyleData["Input", "Presentation"], CellMargins->{{72, Inherited}, {8, 10}}, LineSpacing->{1, 0}, FontSize->16], Cell[StyleData["Input", "Condensed"], CellMargins->{{40, 10}, {2, 3}}, FontSize->11], Cell[StyleData["Input", "Printout"], CellMargins->{{39, 0}, {4, 6}}, LinebreakAdjustments->{0.85, 2, 10, 1, 1}, FontSize->9] }, Closed]], Cell[StyleData["InputOnly"], Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, LinebreakAdjustments->{0.85, 2, 10, 0, 1}, CounterIncrements->"Input", StyleMenuListing->None, FontWeight->"Bold"], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{47, 10}, {7, 5}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, DefaultFormatType->DefaultOutputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, LanguageCategory->"Formula", FormatType->InputForm, CounterIncrements->"Output"], Cell[StyleData["Output", "Presentation"], CellMargins->{{72, Inherited}, {10, 8}}, LineSpacing->{1, 0}, FontSize->16], Cell[StyleData["Output", "Condensed"], CellMargins->{{41, Inherited}, {3, 2}}, FontSize->11], Cell[StyleData["Output", "Printout"], CellMargins->{{39, 0}, {6, 4}}, FontSize->9] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Message"], CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Message", StyleMenuListing->None, FontSize->11, FontColor->RGBColor[0, 0, 1]], Cell[StyleData["Message", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}, FontSize->16], Cell[StyleData["Message", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}, FontSize->11], Cell[StyleData["Message", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->7, FontColor->GrayLevel[0]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Print"], CellMargins->{{45, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, AutoItalicWords->{}, FormatType->InputForm, CounterIncrements->"Print", StyleMenuListing->None], Cell[StyleData["Print", "Presentation"], CellMargins->{{72, Inherited}, {Inherited, Inherited}}, LineSpacing->{1, 0}, FontSize->16], Cell[StyleData["Print", "Condensed"], CellMargins->{{41, Inherited}, {Inherited, Inherited}}, FontSize->11], Cell[StyleData["Print", "Printout"], CellMargins->{{39, Inherited}, {Inherited, Inherited}}, FontSize->8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Graphics"], CellMargins->{{4, Inherited}, {Inherited, Inherited}}, CellGroupingRules->"GraphicsGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, ShowCellLabel->False, DefaultFormatType->DefaultOutputFormatType, LanguageCategory->None, FormatType->InputForm, CounterIncrements->"Graphics", ImageMargins->{{43, Inherited}, {Inherited, 0}}, StyleMenuListing->None, FontFamily->"Courier", FontSize->10], Cell[StyleData["Graphics", "Presentation"], ImageMargins->{{62, Inherited}, {Inherited, 0}}], Cell[StyleData["Graphics", "Condensed"], ImageMargins->{{38, Inherited}, {Inherited, 0}}, Magnification->0.6], Cell[StyleData["Graphics", "Printout"], ImageMargins->{{30, Inherited}, {Inherited, 0}}, Magnification->0.8] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["CellLabel"], StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontColor->RGBColor[0, 0, 1]], Cell[StyleData["CellLabel", "Presentation"], FontSize->12], Cell[StyleData["CellLabel", "Condensed"], FontSize->9], Cell[StyleData["CellLabel", "Printout"], FontFamily->"Courier", FontSize->8, FontSlant->"Italic", FontColor->GrayLevel[0]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Inline Formatting", "Section"], Cell["\<\ These styles are for modifying individual words or letters in a cell \ exclusive of the cell tag.\ \>", "Text"], Cell[StyleData["RM"], StyleMenuListing->None, FontWeight->"Plain", FontSlant->"Plain"], Cell[StyleData["BF"], StyleMenuListing->None, FontWeight->"Bold"], Cell[StyleData["IT"], StyleMenuListing->None, FontSlant->"Italic"], Cell[StyleData["TR"], StyleMenuListing->None, FontFamily->"Times", FontWeight->"Plain", FontSlant->"Plain"], Cell[StyleData["TI"], StyleMenuListing->None, FontFamily->"Times", FontWeight->"Plain", FontSlant->"Italic"], Cell[StyleData["TB"], StyleMenuListing->None, FontFamily->"Times", FontWeight->"Bold", FontSlant->"Plain"], Cell[StyleData["TBI"], StyleMenuListing->None, FontFamily->"Times", FontWeight->"Bold", FontSlant->"Italic"], Cell[StyleData["MR"], StyleMenuListing->None, FontFamily->"Courier", FontWeight->"Plain", FontSlant->"Plain"], Cell[StyleData["MO"], StyleMenuListing->None, FontFamily->"Courier", FontWeight->"Plain", FontSlant->"Italic"], Cell[StyleData["MB"], StyleMenuListing->None, FontFamily->"Courier", FontWeight->"Bold", FontSlant->"Plain"], Cell[StyleData["MBO"], StyleMenuListing->None, FontFamily->"Courier", FontWeight->"Bold", FontSlant->"Italic"], Cell[StyleData["SR"], StyleMenuListing->None, FontFamily->"Helvetica", FontWeight->"Plain", FontSlant->"Plain"], Cell[StyleData["SO"], StyleMenuListing->None, FontFamily->"Helvetica", FontWeight->"Plain", FontSlant->"Italic"], Cell[StyleData["SB"], StyleMenuListing->None, FontFamily->"Helvetica", FontWeight->"Bold", FontSlant->"Plain"], Cell[StyleData["SBO"], StyleMenuListing->None, FontFamily->"Helvetica", FontWeight->"Bold", FontSlant->"Italic"], Cell[CellGroupData[{ Cell[StyleData["SO10"], StyleMenuListing->None, FontFamily->"Helvetica", FontSize->10, FontWeight->"Plain", FontSlant->"Italic"], Cell[StyleData["SO10", "Printout"], StyleMenuListing->None, FontFamily->"Helvetica", FontSize->7, FontWeight->"Plain", FontSlant->"Italic"], Cell[StyleData["SO10", "EnhancedPrintout"], StyleMenuListing->None, FontFamily->"Futura", FontSize->7, FontWeight->"Plain", FontSlant->"Italic"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Formulas and Programming", "Section"], Cell[CellGroupData[{ Cell[StyleData["InlineFormula"], CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, LanguageCategory->"Formula", ScriptLevel->1, SingleLetterItalics->True], Cell[StyleData["InlineFormula", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}, FontSize->16], Cell[StyleData["InlineFormula", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}, FontSize->11], Cell[StyleData["InlineFormula", "Printout"], CellMargins->{{2, 0}, {6, 6}}, FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["DisplayFormula"], CellMargins->{{42, Inherited}, {Inherited, Inherited}}, CellHorizontalScrolling->True, DefaultFormatType->DefaultInputFormatType, HyphenationOptions->{"HyphenationCharacter"->"\[Continuation]"}, LanguageCategory->"Formula", ScriptLevel->0, SingleLetterItalics->True, UnderoverscriptBoxOptions->{LimitsPositioning->True}], Cell[StyleData["DisplayFormula", "Presentation"], LineSpacing->{1, 5}, FontSize->16], Cell[StyleData["DisplayFormula", "Condensed"], LineSpacing->{1, 1}, FontSize->11], Cell[StyleData["DisplayFormula", "Printout"], FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Program"], CellFrame->{{0, 0}, {0.5, 0.5}}, CellMargins->{{10, 4}, {0, 8}}, CellHorizontalScrolling->True, LanguageCategory->"Formula", ScriptLevel->1, FontFamily->"Courier"], Cell[StyleData["Program", "Presentation"], CellMargins->{{24, 10}, {10, 10}}, LineSpacing->{1, 5}, FontSize->16], Cell[StyleData["Program", "Condensed"], CellMargins->{{8, 10}, {6, 6}}, LineSpacing->{1, 1}, FontSize->11], Cell[StyleData["Program", "Printout"], CellMargins->{{2, 0}, {6, 6}}, FontSize->9] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Hyperlink Styles", "Section"], Cell["\<\ The cells below define styles useful for making hypertext ButtonBoxes. The \ \"Hyperlink\" style is for links within the same Notebook, or between \ Notebooks.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Hyperlink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonNote->ButtonData}], Cell[StyleData["Hyperlink", "Presentation"], FontSize->16], Cell[StyleData["Hyperlink", "Condensed"], FontSize->11], Cell[StyleData["Hyperlink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell["\<\ The following styles are for linking automatically to the on-line help \ system.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["MainBookLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "MainBook", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["MainBookLink", "Presentation"], FontSize->16], Cell[StyleData["MainBookLink", "Condensed"], FontSize->11], Cell[StyleData["MainBookLink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AddOnsLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "AddOns", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AddOnsLink", "Presentation"], FontSize->16], Cell[StyleData["AddOnsLink", "Condensed"], FontSize->11], Cell[StyleData["AddOnsLink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefGuideLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "RefGuide", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["RefGuideLink", "Presentation"], FontSize->16], Cell[StyleData["RefGuideLink", "Condensed"], FontSize->11], Cell[StyleData["RefGuideLink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GettingStartedLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "GettingStarted", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["GettingStartedLink", "Presentation"], FontSize->16], Cell[StyleData["GettingStartedLink", "Condensed"], FontSize->11], Cell[StyleData["GettingStartedLink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["OtherInformationLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->RGBColor[0, 0, 1], FontVariations->{"Underline"->True}, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "OtherInformation", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["OtherInformationLink", "Presentation"], FontSize->16], Cell[StyleData["OtherInformationLink", "Condensed"], FontSize->11], Cell[StyleData["OtherInformationLink", "Printout"], FontSize->10, FontColor->GrayLevel[0], FontVariations->{"Underline"->False}] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Headers and Footers", "Section"], Cell[StyleData["Header"], CellMargins->{{0, 0}, {4, 1}}, DefaultNewInlineCellStyle->"None", LanguageCategory->"NaturalLanguage", StyleMenuListing->None, FontSize->10, FontSlant->"Italic"], Cell[StyleData["Footer"], CellMargins->{{0, 0}, {0, 4}}, DefaultNewInlineCellStyle->"None", LanguageCategory->"NaturalLanguage", StyleMenuListing->None, FontSize->9, FontSlant->"Italic"], Cell[StyleData["PageNumber"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Times", FontSize->10] }, Closed]], Cell[CellGroupData[{ Cell["Palette Styles", "Section"], Cell["\<\ The cells below define styles that define standard ButtonFunctions, for use \ in palette buttons.\ \>", "Text"], Cell[StyleData["Paste"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, After]}]&)}], Cell[StyleData["Evaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["EvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionMove[ FrontEnd`InputNotebook[ ], All, Cell, 1], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluate"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluate[ FrontEnd`InputNotebook[ ], All]}]&)}], Cell[StyleData["CopyEvaluateCell"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`SelectionCreateCell[ FrontEnd`InputNotebook[ ], All], FrontEnd`NotebookApply[ FrontEnd`InputNotebook[ ], #, All], FrontEnd`SelectionEvaluateCreateCell[ FrontEnd`InputNotebook[ ], All]}]&)}] }, Closed]], Cell[CellGroupData[{ Cell["Placeholder Styles", "Section"], Cell["\<\ The cells below define styles useful for making placeholder objects in \ palette templates.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Placeholder"], Placeholder->True, StyleMenuListing->None, FontSlant->"Italic", FontColor->RGBColor[0.890623, 0.864698, 0.384756], TagBoxOptions->{Editable->False, Selectable->False, StripWrapperBoxes->False}], Cell[StyleData["Placeholder", "Presentation"]], Cell[StyleData["Placeholder", "Condensed"]], Cell[StyleData["Placeholder", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["PrimaryPlaceholder"], StyleMenuListing->None, DrawHighlighted->True, FontSlant->"Italic", Background->RGBColor[0.912505, 0.891798, 0.507774], TagBoxOptions->{Editable->False, Selectable->False, StripWrapperBoxes->False}], Cell[StyleData["PrimaryPlaceholder", "Presentation"]], Cell[StyleData["PrimaryPlaceholder", "Condensed"]], Cell[StyleData["PrimaryPlaceholder", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["FormatType Styles", "Section"], Cell["\<\ The cells below define styles that are mixed in with the styles of most \ cells. If a cell's FormatType matches the name of one of the styles defined \ below, then that style is applied between the cell's style and its own \ options. This is particularly true of Input and Output.\ \>", "Text"], Cell[StyleData["CellExpression"], PageWidth->Infinity, CellMargins->{{6, Inherited}, {Inherited, Inherited}}, ShowCellLabel->False, ShowSpecialCharacters->False, AllowInlineCells->False, Hyphenation->False, AutoItalicWords->{}, StyleMenuListing->None, FontFamily->"Courier", FontSize->12, Background->GrayLevel[1]], Cell[StyleData["InputForm"], InputAutoReplacements->{}, AllowInlineCells->False, Hyphenation->False, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["OutputForm"], PageWidth->Infinity, TextAlignment->Left, LineSpacing->{0.6, 1}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["StandardForm"], InputAutoReplacements->{ "->"->"\[Rule]", ":>"->"\[RuleDelayed]", "<="->"\[LessEqual]", ">="->"\[GreaterEqual]", "!="->"\[NotEqual]", "=="->"\[Equal]", Inherited}, LineSpacing->{1.25, 0}, StyleMenuListing->None, FontFamily->"Courier"], Cell[StyleData["TraditionalForm"], InputAutoReplacements->{ "->"->"\[Rule]", ":>"->"\[RuleDelayed]", "<="->"\[LessEqual]", ">="->"\[GreaterEqual]", "!="->"\[NotEqual]", "=="->"\[Equal]", Inherited}, LineSpacing->{1.25, 0}, SingleLetterItalics->True, TraditionalFunctionNotation->True, DelimiterMatching->None, StyleMenuListing->None], Cell["\<\ The style defined below is mixed in to any cell that is in an inline cell \ within another.\ \>", "Text"], Cell[StyleData["InlineCell"], TextAlignment->Left, ScriptLevel->1, StyleMenuListing->None], Cell[StyleData["InlineCellEditing"], StyleMenuListing->None, Background->RGBColor[1, 0.749996, 0.8]] }, Closed]], Cell[CellGroupData[{ Cell["Automatic Styles", "Section"], Cell["\<\ The cells below define styles that are used to affect the display of certain \ types of objects in typeset expressions. For example, \"UnmatchedBracket\" \ style defines how unmatched bracket, curly bracket, and parenthesis \ characters are displayed (typically by coloring them to make them stand out).\ \ \>", "Text"], Cell[StyleData["UnmatchedBracket"], StyleMenuListing->None, FontColor->RGBColor[0.760006, 0.330007, 0.8]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Styles for Automatic Numbering", "Section"], Cell["\<\ The following styles arf useful for!numbered equations, figures, etc. They \ automatically give the cell a FrameLabel containing a reference to a \ particular counter, and also increment that counter.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["NumberedEquation"], CellFrameLabels->{{None, Cell[ TextData[ {"(", CounterBox[ "NumberedEquation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, TextAlignment->Center, CounterIncrements->"NumberedEquation", FormatTypeAutoConvert->False], Cell[StyleData["NumberedEquation", "Presentation"]], Cell[StyleData["NumberedEquation", "Condensed"]], Cell[StyleData["NumberedEquation", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["NumberedFigure"], CellMargins->{{4, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, CounterIncrements->"NumberedFigure", ImageMargins->{{43, Inherited}, {Inherited, 0}}, FormatTypeAutoConvert->False], Cell[StyleData["NumberedFigure", "Presentation"]], Cell[StyleData["NumberedFigure", "Condensed"]], Cell[StyleData["NumberedFigure", "Printout"]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["NumberedTable"], CellMargins->{{44, Inherited}, {Inherited, Inherited}}, CellFrameLabels->{{None, None}, {Cell[ TextData[ {"Table ", CounterBox[ "NumberedTable"]}]], None}}, TextAlignment->Center, CounterIncrements->"NumberedTable", FormatTypeAutoConvert->False], Cell[StyleData["NumberedTable", "Presentation"]], Cell[StyleData["NumberedTable", "Condensed"]], Cell[StyleData["NumberedTable", "Printout"]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["User-Defined Styles", "Section"], Cell[CellGroupData[{ Cell[StyleData["EMail"], PageWidth->PaperWidth, CellMargins->{{12, 10}, {7, 7}}, InputAutoReplacements->{"TeX"->StyleBox[ RowBox[ {"T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "LaTeX"->StyleBox[ RowBox[ {"L", StyleBox[ AdjustmentBox[ "A", BoxMargins -> {{-0.36, -0.1}, {0, -0}}, BoxBaselineShift -> -0.2], FontSize -> Smaller], "T", AdjustmentBox[ "E", BoxMargins -> {{-0.075, -0.085}, {0, 0}}, BoxBaselineShift -> 0.5], "X"}]], "mma"->"Mathematica", "Mma"->"Mathematica", "MMA"->"Mathematica"}, Hyphenation->True, LineSpacing->{1, 3}, CounterIncrements->"Text", FontFamily->"Monaco", FontSize->9], Cell[StyleData["EMail", "Presentation"]], Cell[StyleData["EMail", "Printout"], CellMargins->{{2, 2}, {6, 6}}, TextJustification->0.5, FontSize->10] }, Open ]] }, Open ]] }] ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{ "No Visible Edge Example"->{ Cell[17329, 430, 322, 9, 24, "NumberedFigure", CellTags->"No Visible Edge Example"]}, "Finding Visible Edge"->{ Cell[46802, 1395, 508, 18, 40, "NumberedFigure", CellTags->"Finding Visible Edge"]}, "Array of Random Polygons"->{ Cell[77940, 2159, 287, 8, 40, "NumberedFigure", CellTags->"Array of Random Polygons"]}, "Smoothed Random Polygons"->{ Cell[95446, 2815, 250, 8, 24, "NumberedFigure", CellTags->"Smoothed Random Polygons"]}, "Triangulated and Colored"->{ Cell[114919, 3366, 293, 8, 40, "NumberedFigure", CellTags->"Triangulated and Colored"]}, "Angle Comparison"->{ Cell[139008, 4090, 434, 10, 56, "NumberedFigure", CellTags->"Angle Comparison"]}, "Angles for 50-gons"->{ Cell[195961, 5696, 288, 8, 40, "NumberedFigure", CellTags->"Angles for 50-gons"]}, "Angle Restricted Polygon"->{ Cell[205966, 5959, 296, 10, 24, "NumberedFigure", CellTags->"Angle Restricted Polygon"]} } *) (*CellTagsIndex CellTagsIndex->{ {"No Visible Edge Example", 262971, 7774}, {"Finding Visible Edge", 263095, 7777}, {"Array of Random Polygons", 263222, 7780}, {"Smoothed Random Polygons", 263352, 7783}, {"Triangulated and Colored", 263482, 7786}, {"Angle Comparison", 263605, 7789}, {"Angles for 50-gons", 263723, 7792}, {"Angle Restricted Polygon", 263848, 7795} } *) (*NotebookFileOutline Notebook[{ Cell[1717, 49, 274, 9, 37, "Text"], Cell[CellGroupData[{ Cell[2016, 62, 80, 2, 105, "Title", Evaluatable->False], Cell[2099, 66, 279, 9, 64, "Subtitle", Evaluatable->False], Cell[2381, 77, 189, 5, 62, "Subtitle", Evaluatable->False], Cell[CellGroupData[{ Cell[2595, 86, 77, 4, 53, "Section"], Cell[2675, 92, 2681, 62, 435, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[5393, 159, 92, 4, 50, "Section"], Cell[5488, 165, 348, 8, 46, "Text"], Cell[5839, 175, 931, 28, 144, "Text"], Cell[6773, 205, 1343, 34, 110, "Text"], Cell[8119, 241, 9207, 187, 142, 1216, 84, "GraphicsData", "PostScript", \ "Graphics"], Cell[17329, 430, 322, 9, 24, "NumberedFigure", CellTags->"No Visible Edge Example"], Cell[17654, 441, 459, 10, 63, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[18150, 456, 94, 4, 50, "Section"], Cell[18247, 462, 1220, 30, 124, "Text"], Cell[19470, 494, 197, 4, 43, "Input"], Cell[19670, 500, 493, 17, 46, "Text"], Cell[20166, 519, 106, 2, 27, "Input"], Cell[20275, 523, 175, 5, 31, "Text"], Cell[20453, 530, 255, 5, 75, "Input"], Cell[20711, 537, 484, 15, 46, "Text"], Cell[21198, 554, 255, 6, 59, "Input"], Cell[21456, 562, 1518, 39, 128, "Text"], Cell[22977, 603, 432, 8, 59, "Input"], Cell[CellGroupData[{ Cell[23434, 615, 116, 3, 31, "Input"], Cell[23553, 620, 40, 1, 26, "Output"] }, Open ]], Cell[23608, 624, 802, 25, 62, "Text"], Cell[24413, 651, 339, 7, 45, "Input"], Cell[24755, 660, 93, 3, 30, "Text"], Cell[24851, 665, 108, 2, 27, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[24996, 672, 82, 4, 50, "Section"], Cell[25081, 678, 947, 21, 95, "Text"], Cell[26031, 701, 299, 6, 43, "Input"], Cell[CellGroupData[{ Cell[26355, 711, 239, 5, 59, "Input"], Cell[26597, 718, 40, 1, 26, "Output"] }, Open ]], Cell[26652, 722, 1849, 45, 149, "Text"], Cell[28504, 769, 764, 16, 139, "Input"], Cell[CellGroupData[{ Cell[29293, 789, 264, 4, 75, "Input"], Cell[29560, 795, 73, 1, 26, "Output"] }, Open ]], Cell[29648, 799, 1305, 30, 129, "Text"], Cell[30956, 831, 635, 22, 64, "Text"], Cell[31594, 855, 15205, 538, 136, 10484, 475, "GraphicsData", "PostScript", \ "Graphics"], Cell[46802, 1395, 508, 18, 40, "NumberedFigure", CellTags->"Finding Visible Edge"], Cell[47313, 1415, 987, 18, 203, "Input"], Cell[48303, 1435, 203, 5, 30, "Text"], Cell[CellGroupData[{ Cell[48531, 1444, 114, 2, 27, "Input"], Cell[48648, 1448, 40, 1, 26, "Output"] }, Open ]], Cell[48703, 1452, 926, 25, 144, "Text"], Cell[49632, 1479, 619, 11, 139, "Input"], Cell[50254, 1492, 287, 6, 47, "Text"], Cell[CellGroupData[{ Cell[50566, 1502, 73, 1, 27, "Input"], Cell[50642, 1505, 268, 6, 26, "Output"] }, Open ]], Cell[50925, 1514, 186, 7, 31, "Text"], Cell[51114, 1523, 26823, 634, 252, 5696, 368, "GraphicsData", "PostScript", \ "Graphics"], Cell[77940, 2159, 287, 8, 40, "NumberedFigure", CellTags->"Array of Random Polygons"] }, Open ]], Cell[CellGroupData[{ Cell[78264, 2172, 88, 4, 50, "Section"], Cell[78355, 2178, 212, 5, 47, "Text"], Cell[78570, 2185, 3011, 64, 458, "Text"], Cell[81584, 2251, 329, 7, 46, "Text"], Cell[CellGroupData[{ Cell[81938, 2262, 285, 6, 75, "Input"], Cell[82226, 2270, 13205, 542, 151, 7305, 465, "GraphicsData", "PostScript", \ "Graphics"] }, Open ]], Cell[95446, 2815, 250, 8, 24, "NumberedFigure", CellTags->"Smoothed Random Polygons"], Cell[95699, 2825, 367, 8, 46, "Text"], Cell[CellGroupData[{ Cell[96091, 2837, 115, 2, 43, "Input"], Cell[96209, 2841, 207, 3, 41, "Output"], Cell[96419, 2846, 18485, 517, 182, 4328, 338, "GraphicsData", "PostScript", \ "Graphics"] }, Open ]], Cell[114919, 3366, 293, 8, 40, "NumberedFigure", CellTags->"Triangulated and Colored"], Cell[115215, 3376, 1538, 37, 145, "Text"], Cell[116756, 3415, 22249, 673, 142, 10416, 522, "GraphicsData", "PostScript", \ "Graphics"], Cell[139008, 4090, 434, 10, 56, "NumberedFigure", CellTags->"Angle Comparison"], Cell[139445, 4102, 720, 21, 62, "Text"], Cell[140168, 4125, 132, 2, 43, "Input"], Cell[140303, 4129, 202, 4, 43, "Input"], Cell[140508, 4135, 79, 1, 27, "Input"], Cell[CellGroupData[{ Cell[140612, 4140, 278, 5, 75, "Input"], Cell[140893, 4147, 55053, 1546, 186, 18020, 1084, "GraphicsData", \ "PostScript", "Graphics"] }, Open ]], Cell[195961, 5696, 288, 8, 40, "NumberedFigure", CellTags->"Angles for 50-gons"], Cell[196252, 5706, 645, 13, 80, "Text"], Cell[CellGroupData[{ Cell[196922, 5723, 155, 3, 43, "Input"], Cell[197080, 5728, 8871, 228, 111, 2132, 140, "GraphicsData", "PostScript", \ "Graphics"] }, Open ]], Cell[205966, 5959, 296, 10, 24, "NumberedFigure", CellTags->"Angle Restricted Polygon"], Cell[206265, 5971, 448, 13, 48, "Text"], Cell[206716, 5986, 665, 12, 43, "Input"], Cell[207384, 6000, 603, 11, 27, "Input"], Cell[207990, 6013, 87, 3, 30, "Text"], Cell[CellGroupData[{ Cell[208102, 6020, 148, 2, 47, "Input"], Cell[208253, 6024, 61, 1, 26, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[208351, 6030, 80, 1, 31, "Input"], Cell[208434, 6033, 61, 1, 26, "Output"] }, Open ]], Cell[208510, 6037, 417, 9, 62, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[208964, 6051, 29, 0, 50, "Section"], Cell[208996, 6053, 174, 4, 30, "Text"], Cell[209173, 6059, 373, 8, 66, "Text"], Cell[209549, 6069, 216, 5, 32, "Text"], Cell[209768, 6076, 165, 5, 32, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[209970, 6086, 35, 0, 50, "Section"], Cell[210008, 6088, 1225, 33, 200, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[211270, 6126, 45, 0, 50, "Section"], Cell[211318, 6128, 584, 16, 177, "Input"], Cell[211905, 6146, 3860, 83, 1182, "Input"], Cell[215768, 6231, 60, 1, 27, "Input"], Cell[215831, 6234, 8531, 220, 3267, "Input"], Cell[224365, 6456, 68, 4, 42, "Input"] }, Closed]] }, Open ]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)