(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. 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[ 73435, 1600]*) (*NotebookOutlinePosition[ 102366, 2627]*) (* CellTagsIndexPosition[ 102284, 2621]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Bonus material: Subdivision of tensioned cubic meshes", "Chapter", CounterAssignments->{{"Chapter", 6}}, CellTags->"CHA polyhedral"], Cell[TextData[{ StyleBox["OVERVIEW: ", FontWeight->"Bold"], "This notebook outlines a simple method for implementing both weighted \ averaging and creases in a single framework that can handle cubic meshes of \ arbitrary dimension. The notebook includes code for linear subdivision of \ these meshes and weighted averaging based on tensions assigned to these \ meshes. We have include many interesting meshes in this format including \ those that appear in figures 7.15-7.18 and figures 7.21-7.25. In particular, \ Scott Schaefer has modeled the chess pieces that appear on the cover of the \ book in this form." }], "Text"], Cell[TextData[{ StyleBox["COPYRIGHT ISSUES:", FontWeight->"Bold"], " The authors reserve all copyrights associated with this work. Any of \ the material appearing in these notebooks (such as the meshes) can be used \ and modified without restriction as long as the use is \ non\[Hyphen]commercial. We simply ask that you acknowledge the authors when \ using material from these notebooks. For those readers interested in \ commercial use of the material in these notebooks, please contact \ jwarren@cs.rice.edu. " }], "Text"], Cell[TextData[StyleBox["IGNORE THE SECTION NUMBERS BELOW, THEY SIMPLY SERVE \ AS AN OUTLINE FOR THE MATERIAL", FontWeight->"Bold", FontColor->RGBColor[1, 0, 0]]], "Text"], Cell[CellGroupData[{ Cell["A topological representation for tensioned cubic meshes", "Section"], Cell[TextData[{ "A tensioned cubic mesh is a triple ", Cell[BoxData[ \({M, p, \[CapitalSigma]}\)]], " where ", Cell[BoxData[ \(M\)]], " is a list of topological cubes, ", Cell[BoxData[ \(p\)]], " is a list of vertex positions and ", Cell[BoxData[ \(\[CapitalSigma]\)]], " is a list whose entries are themselves a list of tensions assigned to \ each dimension of the corresponding cube in ", Cell[BoxData[ \(M\)]], ". As opposed to the flat representation used in the rest of chapter 7, \ the topological cubes comprising ", Cell[BoxData[ \(M\)]], " are recursively defined as follows: a topological ", Cell[BoxData[ \(0\)]], "\[Hyphen]cube is simply a vertex index, a topological ", Cell[BoxData[ \(d\)]], "\[Hyphen]cube is a pair of topological ", Cell[BoxData[ \(\((d - 1)\)\)]], "\[Hyphen]cubes comprising two opposite faces of the ", Cell[BoxData[ \(d\)]], "\[Hyphen]cube." }], "Text"], Cell[TextData[{ "For example, an edge connecting the vertex ", Cell[BoxData[ \(1\)]], " to vertex ", Cell[BoxData[ \(2\)]], " is the list ", Cell[BoxData[ \({1, 2}\)]], ". The quad face connecting the vertices ", Cell[BoxData[ \({1, 2, 3, 4}\)]], " has the form ", Cell[BoxData[ \({{1, 2}, {4, 3}}\)]], ". A topological cube might have the form ", Cell[BoxData[ \({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}\)]], ". Each entry in ", Cell[BoxData[ \(\[CapitalSigma]\)]], " corresponding to a ", Cell[BoxData[ \(d\)]], "\[Hyphen]cube in ", Cell[BoxData[ \(T\)]], " is a list of ", Cell[BoxData[ \(d\)]], " tensions as specified in section 7.2.3." }], "Text"], Cell[TextData[{ "Below is a definition of a profile curve for a pawn as a tensioned cubic \ mesh. Note that ", Cell[BoxData[ \(M\)]], " consists of edges and vertices. " }], "Text"], Cell[BoxData[ \(\(pawn\ = \ {{{2, 1}, 2, {3, 2}, {4, 3}, {5, 4}, {6, 5}, {7, 6}, {8, 7}, {9, 8}, {10, 9}, {11, 10}, 11, 10, {12, 11}, {13, 12}, 13, {14, 13}, {15, 14}, {16, 15}, 4, 1}, {{0.`, 0.`}, {1.4814816`, \(-0.014306068`\)}, {1.5740738`, 0.39999962`}, {1.3888893`, 0.47500038`}, {1.4506168`, 0.6000004`}, {1.4814816`, 0.9250002`}, {1.0802469`, 1.0749998`}, {1.1111107`, 1.6999998`}, {0.6172838`, 1.8999996`}, {0.4320984`, 3.`}, {1.0802469`, 3.`}, {1.0802469`, 3.475`}, {0.4320984`, 3.625`}, {0.80246925`, 3.9499998`}, {0.7407408`, 4.7`}, {0.`, 5.1359086`}}, {{1}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {}, {}, {1}, {1}, {}, {1}, {1}, {1}, {}, {}}};\)\)], "Input", InitializationCell->True], Cell["Here is a plot of this profile curve", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(curvePlot[pawn, 0.03, Frame \[Rule] True, AspectRatio \[Rule] Automatic, PlotRange \[Rule] {{\(-0.01\), 2}, Automatic}]\)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ Below is the definition of a single cube whose six quad faces are themselves \ crease\ \>", "Text"], Cell[BoxData[ \(\(cube = {{{{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}, \[IndentingNewLine]{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}, {{1, 3}, {5, 7}}, {{2, 4}, {6, 8}}, {{1, 2}, {5, 6}}, {{3, 4}, {7, 8}}}, \[IndentingNewLine]{{0, 0, 0}, {0, 0, 1}, {0, 1, 0}, {0, 1, 1}, {1, 0, 0}, {1, 0, 1}, {1, 1, 0}, {1, 1, 1}}, \[IndentingNewLine]{{1, 1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}}};\)\)], "Input", InitializationCell->True], Cell["\<\ This mesh can be display as a set of lines or as a set of quads.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayLines[cube]\), "\[IndentingNewLine]", \(displayQuads[cube]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["Drawing functions for cubic meshes.", "Subsubsection"], Cell[BoxData[ \(curvePlot[{M_, G_, \[CapitalSigma]_}, dotSize_, opts___] := Show[Graphics[\[IndentingNewLine]Join[{PointSize[dotSize]}, Flatten[Table[ If[Length[ M\[LeftDoubleBracket]i\[RightDoubleBracket]] \[Equal] 0, Point[ G\[LeftDoubleBracket]M\[LeftDoubleBracket] i\[RightDoubleBracket]\[RightDoubleBracket]], \ \[IndentingNewLine]{Point[ G\[LeftDoubleBracket]M\[LeftDoubleBracket]i, 1\[RightDoubleBracket]\[RightDoubleBracket]], Point[G\[LeftDoubleBracket] M\[LeftDoubleBracket]i, 2\[RightDoubleBracket]\[RightDoubleBracket]], Line[G\[LeftDoubleBracket]M\[LeftDoubleBracket] i\[RightDoubleBracket]\[RightDoubleBracket]]}], {i, Length[M]}]]]], AspectRatio \[Rule] Automatic, opts]\)], "Input", InitializationCell->True], Cell[BoxData[ \(displayLines[{M_, p_, \[CapitalSigma]_}] := \[IndentingNewLine]Show[ Graphics3D[\[IndentingNewLine]Flatten[ Table[\[IndentingNewLine]With[{C = M\[LeftDoubleBracket]l\[RightDoubleBracket], d = Length[ Dimensions[ M\[LeftDoubleBracket] l\[RightDoubleBracket]]]}, \ \[IndentingNewLine]Table[\[IndentingNewLine]With[{trC = Partition[ Flatten[Transpose[C, RotateLeft[Range[d], i]]], 2]}, \[IndentingNewLine]Table[ Line[p\[LeftDoubleBracket]trC\[LeftDoubleBracket] j\[RightDoubleBracket]\[RightDoubleBracket]], {j, Length[trC]}]], \[IndentingNewLine]{i, 0, d - 1}]], \[IndentingNewLine]{l, Length[M]}], 2]], Boxed \[Rule] False, AspectRatio \[Rule] Automatic]\)], "Input", InitializationCell->True], Cell[BoxData[ \(displayQuads[{M_, p_, \[CapitalSigma]_}, opts___] := \[IndentingNewLine]Show[ Graphics3D[ Flatten[Table[\[IndentingNewLine]With[{C = M\[LeftDoubleBracket]l\[RightDoubleBracket], d = Length[ Dimensions[ M\[LeftDoubleBracket] l\[RightDoubleBracket]]]}, \[IndentingNewLine]If[ d < 2, {}, \ \[IndentingNewLine]Table[\[IndentingNewLine]With[{trC = Partition[ Flatten[Transpose[C, RotateLeft[Range[d], i]]], 4]}, \[IndentingNewLine]Table[ Polygon[ p\[LeftDoubleBracket]\(trC\[LeftDoubleBracket] j\[RightDoubleBracket]\)\[LeftDoubleBracket]{\ 1, 2, 4, 3}\[RightDoubleBracket]\[RightDoubleBracket]], {j, Length[trC]}]], \[IndentingNewLine]{i, 0, d - 1}]]], \[IndentingNewLine]{l, Length[M]}], 2]], opts]\)], "Input", InitializationCell->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["\<\ Linear subdivision and weighted averaging for tensioned cubic meshes\ \>", "Section"], Cell[TextData[{ Cell[BoxData[ \(linearSub[{M, G, \[CapitalSigma]}]\)]], "performs multilinear subdivision on a tensioned cubical mesh. ", Cell[BoxData[ \(linearSub\)]], " include a local helper function that recursively split a ", Cell[BoxData[ \(d\)]], "\[Hyphen]cube into ", Cell[BoxData[ \(2\^d\)]], " ", Cell[BoxData[ \(d\)]], "\[Hyphen]cubes. ", Cell[BoxData[ \(linearSub\)]], " updates the tensions associated with each dimension of a cube via the \ recurrence ", Cell[BoxData[ \(\[Sigma]\_k = \@\(\(1 + \[Sigma]\_\(k - 1\)\)\/2\)\)]], "." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(\(\(linearSub[{M_, p_, \[CapitalSigma]_}] := Module[{idx, verts, index, currIndex = Length[p], splitCell, newp}, \[IndentingNewLine]\[IndentingNewLine] (*\ idx\ stores\ index\ of\ fine\ mesh\ in\ terms\ of\ indecies\ of\ \ smallest\ containing\ facet\ on\ coarse\ mesh\[IndentingNewLine]\ \ verts\ is\ \ a\ reverse\ lookup\ for\ idx, \ newp\ stores\ new\ vertex\ positions\ *) \[IndentingNewLine]idx[_] \ = 0; \[IndentingNewLine]Do[idx[{i}] = i; verts[i] = {i}; newp[i] = p\[LeftDoubleBracket]i\[RightDoubleBracket], {i, Length[p]}]; \[IndentingNewLine]midpt[i_, j_] := With[{v = Union[verts[i], verts[j]]}, \[IndentingNewLine]If[ idx[v] == 0, newp[\(++currIndex\)] = \(1\/2\) \((newp[i] + newp[j])\); verts[currIndex] = v; idx[v] = currIndex, idx[v]]]; \[IndentingNewLine]\[IndentingNewLine] (*\ recursive\ helper\ function\ that\ splits\ a\ single\ cubical\ cell\ \ and\ returns\ a\ list\ of\ 2\^d\ subcells\ *) \[IndentingNewLine]splitCube[ C_] := With[{d = Length[Dimensions[C]]}, \[IndentingNewLine]If[ d \[Equal] 0, {C}, With[{top = splitCube[C\[LeftDoubleBracket]1\[RightDoubleBracket]], bottom = splitCube[ C\[LeftDoubleBracket]2\[RightDoubleBracket]]}, \ \[IndentingNewLine]With[{middle = MapThread[midpt, {top, bottom}, d]}, \[IndentingNewLine]Join[\[IndentingNewLine]Table[\ {top\[LeftDoubleBracket]i\[RightDoubleBracket], middle\[LeftDoubleBracket] i\[RightDoubleBracket]}, {i, Length[ middle]}], \[IndentingNewLine]Table[{bottom\ \[LeftDoubleBracket]i\[RightDoubleBracket], middle\[LeftDoubleBracket] i\[RightDoubleBracket]}, {i, Length[ middle]}]]]]]]; \[IndentingNewLine]\ \[IndentingNewLine] (*\ \ apply\ splitCell\ to\ every\ cell\ in\ M, \ collects\ new\ cells\ in\ new\ M\ *) \[IndentingNewLine]{Flatten[ Table[splitCube[M\[LeftDoubleBracket]l\[RightDoubleBracket]], {l, Length[M]}], 1], \[IndentingNewLine]Array[newp, currIndex], \[IndentingNewLine]Flatten[ Table[ Table[\@\(\(1 + \[CapitalSigma]\[LeftDoubleBracket]i\ \[RightDoubleBracket]\)\/2\) // N, {2\^Length[\[CapitalSigma]\[LeftDoubleBracket]i\ \[RightDoubleBracket]]}], {i, Length[\[CapitalSigma]]}], 1]}\[IndentingNewLine]]\)\(\[IndentingNewLine]\)\)\)], "Input", InitializationCell->True], Cell[BoxData[ \(General::"spell1" \(\(:\)\(\ \)\) "Possible spelling error: new symbol name \"\!\(top\)\" is similar to \ existing symbol \"\!\(Top\)\"."\)], "Message"], Cell[BoxData[ \(General::"spell1" \(\(:\)\(\ \)\) "Possible spelling error: new symbol name \"\!\(bottom\)\" is similar \ to existing symbol \"\!\(Bottom\)\"."\)], "Message"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(curvePlot[linearSub[pawn], 0.03, Frame \[Rule] True, AspectRatio \[Rule] Automatic, PlotRange \[Rule] {{\(-0.01\), 2}, Automatic}]\)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[TextData[{ "Here is an example of the effect of ", Cell[BoxData[ \(linearSub\)]], " on a 3D mesh." }], "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(linearSub[cube] // displayLines\)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ \(weightCellAverage[{M, \[CapitalSigma], p}]\)]], " applies weighted cell averaging to a tensioned cubic mesh. One of the \ main advangtages of representing the topological cubes in the mesh \ recursively is that weighted averaging is particular simple (see the helper \ function ", Cell[BoxData[ \(weightedCentroid\)]], "). Note that ", Cell[BoxData[ \(weightedCellAverage\)]], " also handles embedded creases." }], "Text"], Cell[BoxData[ \(weightedCellAverage[{M_, p_, \[CapitalSigma]_}] := Module[{weightedCentroid, flatM = Map[Flatten, Map[List, M]], newp = 0*p, \ val = Table[0, {Length[p]}], d = Table[\[Infinity], {Length[ p]}]}, \[IndentingNewLine]\[IndentingNewLine]\ weightedCentroid = Function[{C, \[Sigma]}, \[IndentingNewLine]If[ Length[\[Sigma]] \[Equal] 0, p\[LeftDoubleBracket] C\[RightDoubleBracket], \ \[IndentingNewLine]\(First[\[Sigma]]*weightedCentroid[C\[LeftDoubleBracket]1\ \[RightDoubleBracket], Rest[\[Sigma]]] + weightedCentroid[C\ \[LeftDoubleBracket]2\[RightDoubleBracket], Rest[\[Sigma]]]\)\/\(First[\ \[Sigma]] + 1\)]]; \[IndentingNewLine]\[IndentingNewLine] (*\ compute\ table\ of\ vertex\ valences\ and\ dimensions\ \ *) \[IndentingNewLine]Do[ With[{dim = Length[Dimensions[ M\[LeftDoubleBracket] l\[RightDoubleBracket]]]}, \[IndentingNewLine]Do[ With[{idx = flatM\[LeftDoubleBracket]l, i\[RightDoubleBracket]}, \[IndentingNewLine]If[ dim < d\[LeftDoubleBracket] idx\[RightDoubleBracket], \[IndentingNewLine]d\ \[LeftDoubleBracket]idx\[RightDoubleBracket] = dim; val\[LeftDoubleBracket]idx\[RightDoubleBracket] = 1, \[IndentingNewLine]If[ dim \[Equal] d\[LeftDoubleBracket] idx\[RightDoubleBracket], \(++val\[LeftDoubleBracket] idx\[RightDoubleBracket]\)]]], \[IndentingNewLine]{i, Length[flatM\[LeftDoubleBracket] l\[RightDoubleBracket]]}]], \[IndentingNewLine]{l, Length[M]}]; \[IndentingNewLine]\[IndentingNewLine] (*\ apply\ smoothing\ mask\ to\ each\ cell\ and\ accumulate\ results\ *) \[IndentingNewLine]Do[ With[{dim = Length[Dimensions[ M\[LeftDoubleBracket]l\[RightDoubleBracket]]], cent = weightedCentroid[ M\[LeftDoubleBracket] l\[RightDoubleBracket], \[CapitalSigma]\ \[LeftDoubleBracket]l\[RightDoubleBracket]]}, \[IndentingNewLine]Do[ With[{idx = flatM\[LeftDoubleBracket]l, i\[RightDoubleBracket]}, \[IndentingNewLine]If[ dim \[Equal] d\[LeftDoubleBracket]idx\[RightDoubleBracket], newp\[LeftDoubleBracket]idx\[RightDoubleBracket] += cent\/val\[LeftDoubleBracket]idx\[RightDoubleBracket]]], \ \[IndentingNewLine]{i, Length[flatM\[LeftDoubleBracket] l\[RightDoubleBracket]]}]], \[IndentingNewLine]{l, Length[M]}]; \[IndentingNewLine]\[IndentingNewLine]{M, newp, \[CapitalSigma]}]\)], "Input", InitializationCell->True], Cell["An examples of using weighted cell averaging in 2D", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(curvePlot[weightedCellAverage[linearSub[pawn]], 0.03, Frame \[Rule] True, AspectRatio \[Rule] Automatic, PlotRange \[Rule] {{\(-0.01\), 2}, Automatic}]\)], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["\<\ Interesting examples of tensioned cubic meshes under subdivision\ \>", "Section"], Cell[CellGroupData[{ Cell["Man\[Hyphen]made shapes", "Subsubsection"], Cell["\<\ Here is a definition of the classic mechanical part. Note the \ cross\[Hyphen]section of the shaft is not circular (but could be made so if \ the tensions were adjust properly). This model is the only \ non\[Hyphen]original model in this notebook and is probably due to Tony \ DeRose's old research group at the University of Washington.\ \>", "Text"], Cell[BoxData[ \(\(mechPart = {{{{12, 36}, {11, 33}}, {{33, 34}, {11, 10}}, {{34, 35}, {10, 9}}, {{12, 9}, {36, 35}}, {{15, 40}, {14, 37}}, {{37, 38}, {14, 13}}, {{38, 39}, {13, 16}}, {{15, 16}, {40, 39}}, {{11, 44}, {14, 41}}, {{41, 42}, {14, 15}}, {{42, 43}, {15, 10}}, {{11, 10}, {44, 43}}, {{16, 48}, {13, 45}}, {{45, 46}, {13, 12}}, {{46, 47}, {12, 9}}, {{48, 16}, {47, 9}}, {{31, 27}, {32, 26}}, {{25, 28}, {29, 30}}, {{44, 25}, {41, 29}}, {{28, 46}, {30, 45}}, {{33, 36}, {25, 28}}, {{29, 30}, {37, 38}}, {{29, 32}, {41, 42}}, {{28, 27}, {46, 47}}, {{45, 48}, {30, 31}}, {{43, 26}, {44, 25}}, {{39, 31}, {40, 32}}, {{27, 35}, {26, 34}}, {{26, 34}, {25, 33}}, {{40, 32}, {37, 29}}, {{36, 35}, {28, 27}}, {{30, 31}, {38, 39}}, {{32, 26}, {42, 43}}, {{48, 47}, {31, 27}}, {{23, 18}, {14, 11}}, {{24, 23}, {13, 14}}, {{12, 17}, {13, 24}}, {{11, 18}, {12, 17}}, {{16, 15}, {21, 22}}, {{20, 9}, {21, 16}}, {{10, 19}, {15, 22}}, {{9, 20}, {10, 19}}, {{3, 50}, {6, 55}}, {{6, 5}, {3, 4}}, {{4, 49}, {3, 50}}, {{56, 49}, {5, 4}}, {{55, 56}, {6, 5}}, {{8, 1}, {53, 52}}, {{7, 8}, {54, 53}}, {{51, 2}, {54, 7}}, {{52, 1}, {51, 2}}, {{8, 7}, {1, 2}}, {1, 2}, {2, 7}, {7, 8}, {8, 1}, {3, 4}, {4, 5}, {5, 6}, {6, 3}, {19, 20}, {20, 21}, {21, 22}, {22, 19}, {17, 18}, {18, 23}, {23, 24}, {24, 17}, {51, 52}, {52, 53}, {53, 54}, {54, 51}, {49, 50}, {50, 55}, {55, 56}, {56, 49}, {9, 10}, {10, 11}, {11, 12}, {12, 9}, {13, 14}, {14, 15}, {15, 16}, {16, 13}, {9, 16}, {10, 15}, {12, 13}, {11, 14}, 9, 10, 11, 12, 13, 14, 15, 16}, {{\(-4.03542`\), \(-0.89212`\), \(-0.8841497`\)}, \ {\(-4.03542`\), 0.876235`, \(-0.8841497`\)}, {4.04605`, 0.876235`, \(-0.8841497`\)}, {4.04605`, \(-0.89212`\), \ \(-0.8841497`\)}, {4.04605`, \(-0.89212`\), 0.88420033`}, {4.04605`, 0.876235`, 0.88420033`}, {\(-4.03542`\), 0.876235`, 0.88420033`}, {\(-4.03542`\), \(-0.89212`\), 0.88420033`}, {\(-1.2949822`\), \(-1.2464501`\), \ \(-1.2481993`\)}, {\(-1.2949822`\), 1.230555`, \(-1.2481993`\)}, {1.3056002`, 1.230555`, \(-1.2481993`\)}, {1.3056002`, \(-1.2464501`\), \ \(-1.2481993`\)}, {1.3056002`, \(-1.2464501`\), 1.24825`}, {1.3056002`, 1.230555`, 1.24825`}, {\(-1.2949822`\), 1.230555`, 1.24825`}, {\(-1.2949822`\), \(-1.2464501`\), 1.24825`}, {1.2973851`, \(-0.88061994`\), \(-0.8823997`\)}, \ {1.2973851`, 0.864735`, \(-0.8823997`\)}, {\(-1.2867668`\), 0.864735`, \(-0.8823997`\)}, {\(-1.2867668`\), \(-0.880625`\), \ \(-0.8823997`\)}, {\(-1.2867668`\), \(-0.880625`\), 0.88245034`}, {\(-1.2867668`\), 0.864735`, 0.88245034`}, {1.2973851`, 0.864735`, 0.88245034`}, {1.2973851`, \(-0.88061994`\), 0.88245034`}, {0.82670003`, 0.75720996`, \(-0.8033496`\)}, {\(-0.81608`\), 0.75720996`, \(-0.8033496`\)}, {\(-0.81608`\), \ \(-0.77309996`\), \(-0.8033496`\)}, {0.82670003`, \(-0.77309996`\), \ \(-0.8033496`\)}, {0.82670003`, 0.75720996`, 0.8034003`}, {0.82670003`, \(-0.77309996`\), 0.8034003`}, {\(-0.81608`\), \(-0.77309996`\), 0.8034003`}, {\(-0.81608`\), 0.75720996`, 0.8034003`}, {0.82470506`, 0.77387005`, \(-1.2481993`\)}, {\(-0.81408745`\), 0.77387005`, \(-1.2481993`\)}, {\(-0.81408745`\), \ \(-0.78976`\), \(-1.2481993`\)}, {0.82470506`, \(-0.78976`\), \ \(-1.2481993`\)}, {0.82470506`, 0.77387005`, 1.24825`}, {0.82470506`, \(-0.789755`\), 1.24825`}, {\(-0.81408745`\), \(-0.789755`\), 1.24825`}, {\(-0.81408745`\), 0.77387005`, 1.24825`}, {0.8288601`, 1.230555`, 0.8629`}, {\(-0.81824243`\), 1.230555`, 0.8629`}, {\(-0.81824243`\), 1.230555`, \(-0.86284935`\)}, {0.8288601`, 1.230555`, \(-0.86284935`\)}, {0.8288601`, \(-1.2464501`\), 0.8629`}, {0.8288601`, \(-1.2464501`\), \(-0.86284935`\)}, \ {\(-0.81824243`\), \(-1.2464501`\), \(-0.86284935`\)}, {\(-0.81824243`\), \ \(-1.2464501`\), 0.8629`}, {1.2973851`, \(-0.88061994`\), \(-0.8823997`\)}, \ {1.2973851`, 0.864735`, \(-0.8823997`\)}, {\(-1.2867668`\), 0.864735`, \(-0.8823997`\)}, {\(-1.2867668`\), \(-0.880625`\), \ \(-0.8823997`\)}, {\(-1.2867668`\), \(-0.880625`\), 0.88245034`}, {\(-1.2867668`\), 0.864735`, 0.88245034`}, {1.2973851`, 0.864735`, 0.88245034`}, {1.2973851`, \(-0.88061994`\), 0.88245034`}}, \[IndentingNewLine]{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {}, {}, {}, {}, {}, {}, {}, \ {}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], mechPart, 0]]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], mechPart, 2]]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["Here is simple model of a sword", "Text"], Cell[BoxData[ \(\(sword = {{{{1, 6}, {2, 5}}, {{2, 5}, {3, 4}}, {{6, 7}, {5, 8}}, {{5, 8}, {4, 9}}, 1, 6, 7, 4, {1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {1, 6}, {6, 7}, {7, 8}, {8, 9}, {9, 4}, {{10, 11}, {15, 14}}, {{11, 12}, {14, 13}}, {{15, 14}, {16, 17}}, {{14, 13}, {17, 18}}, 10, 15, 16, 13, {10, 11}, {11, 12}, {12, 13}, {13, 14}, {14, 15}, {10, 15}, {15, 16}, {16, 17}, {17, 18}, {18, 13}, {{26, 23}, {22, 19}}, {{23, 24}, {19, 20}}, {{25, 26}, {21, 22}}, {{19, 20}, {22, 21}}, {{26, 25}, {23, 24}}, {19, 22}, {22, 26}, {26, 23}, {23, 19}, {{28, 21}, {27, 20}}, {{30, 27}, {24, 20}}, {{24, 25}, {30, 29}}, {{25, 21}, {29, 28}}, {27, 28}, {28, 29}, {29, 30}, {30, 27}, {{27, 31}, {28, 32}}, {{28, 32}, {29, 33}}, {{29, 33}, {30, 34}}, {{30, 34}, {27, 31}}, {{34, 33}, {31, 32}}, {31, 32}, {32, 33}, {33, 34}, {34, 31}}, {{\(-1.`\), 0.`, 0.`}, {\(-1.`\), 13.5`, 0.`}, {\(-1.`\), 15.`, 0.`}, {0.`, 18.`, 0.`}, {0.`, 13.5`, 0.3`}, {0.`, 0.`, 0.3`}, {1.`, 0.`, 0.`}, {1.`, 13.5`, 0.`}, {1.`, 15.`, 0.`}, {\(-1.`\), 0.`, 0.`}, {\(-1.`\), 13.5`, 0.`}, {\(-1.`\), 15.`, 0.`}, {0.`, 18.`, 0.`}, {0.`, 13.5`, \(-0.3`\)}, {0.`, 0.`, \(-0.3`\)}, {1.`, 0.`, 0.`}, {1.`, 13.5`, 0.`}, {1.`, 15.`, 0.`}, {\(-4.`\), 0.`, \(-1.`\)}, {\(-4.`\), \(-1.`\), \(-1.`\)}, {\(-4.`\), \ \(-1.`\), 1.`}, {\(-4.`\), 0.`, 1.`}, {4.`, 0.`, \(-1.`\)}, {4.`, \(-1.`\), \(-1.`\)}, {4.`, \(-1.`\), 1.`}, {4.`, 0.`, 1.`}, {\(-0.75`\), \(-1.`\), \(-0.75`\)}, {\(-0.75`\), \ \(-1.`\), 0.75`}, {0.75`, \(-1.`\), 0.75`}, {0.75`, \(-1.`\), \(-0.75`\)}, {\(-0.75`\), \(-4.`\), \ \(-0.75`\)}, {\(-0.75`\), \(-4.`\), 0.75`}, {0.75`, \(-4.`\), 0.75`}, {0.75`, \(-4.`\), \(-0.75`\)}}, \[IndentingNewLine]{{1, 1}, {1, 1}, {1, 1}, {1, 1}, {}, {}, {}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {}, {}, {}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}}};\)\)], "Input",\ InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], sword, 0]]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], sword, 2]]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ An axe modeled with quads. This shape takes advantages of crease edges and \ vertices to model the blade.\ \>", "Text"], Cell[BoxData[ \(\(axe = {{{{1, 2}, {12, 3}}, {{8, 9}, {11, 10}}, {{3, 4}, {8, 7}}, {{4, 5}, {7, 6}}, {{12, 3}, {11, 8}}, {{1, 12}, {10, 11}}, 2, 9, {2, 1}, {1, 10}, {10, 9}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {6, 7}, {7, 8}, {8, 9}, 5, 6, {{1, 20}, {2, 13}}, {{18, 19}, {9, 10}}, {{13, 18}, {14, 17}}, {{14, 17}, {15, 16}}, {{20, 19}, {13, 18}}, {{1, 10}, {20, 19}}, {1, 10}, {2, 13}, {13, 14}, {14, 15}, {15, 16}, {16, 17}, {17, 18}, {18, 9}, 15, 16, {{7, 6}, {22, 21}}, {{22, 21}, {17, 16}}, {{8, 7}, {23, 22}}, {{23, 22}, {18, 17}}, {{8, 23}, {9, 18}}, {6, 21}, {21, 16}, {{5, 4}, {24, 25}}, {{24, 25}, {15, 14}}, {{4, 3}, {25, 26}}, {{25, 26}, {14, 13}}, {{3, 2}, {26, 13}}, {5, 24}, {24, 15}, {{27, 38}, {28, 29}}, {{34, 37}, {35, 36}}, {{29, 34}, {30, 33}}, {{30, 33}, {31, 32}}, {{38, 37}, {29, 34}}, {{27, 36}, {38, 37}}, 28, 35, {28, 27}, {27, 36}, {36, 35}, {28, 29}, {29, 30}, {30, 31}, {31, 32}, {32, 33}, {33, 34}, {34, 35}, 31, 32, {{27, 28}, {46, 39}}, {{44, 35}, {45, 36}}, {{39, 40}, {44, 43}}, {{40, 41}, {43, 42}}, {{46, 39}, {45, 44}}, {{27, 46}, {36, 45}}, {27, 36}, {28, 39}, {39, 40}, {40, 41}, {41, 42}, {42, 43}, {43, 44}, {44, 35}, 41, 42, {{33, 48}, {32, 47}}, {{48, 43}, {47, 42}}, {{34, 49}, {33, 48}}, {{49, 44}, {48, 43}}, {{34, 35}, {49, 44}}, {32, 47}, {47, 42}, {{31, 50}, {30, 51}}, {{50, 41}, {51, 40}}, {{30, 51}, {29, 52}}, {{51, 40}, {52, 39}}, {{29, 52}, {28, 39}}, {31, 50}, {50, 41}, {{6, 5}, {32, 31}}, {{21, 6}, {47, 32}}, {{16, 21}, {42, 47}}, {{15, 16}, {41, 42}}, {{24, 15}, {50, 41}}, {{5, 24}, {31, 50}}, {5, 31}, {6, 32}, {15, 41}, {16, 42}, {{53, 57}, {56, 60}}, {{54, 58}, {53, 57}}, {{55, 59}, {54, 58}}, {{56, 60}, {55, 59}}, {{54, 53}, {55, 56}}, {{60, 57}, {59, 58}}, {53, 54}, {54, 55}, {55, 56}, {56, 53}, {57, 58}, {58, 59}, {59, 60}, {60, 57}}, {{\(-4.`\), \(-2.`\), 0.`}, {\(-3.`\), \(-3.`\), 0.`}, {\(-3.1`\), \(-2.`\), 0.2`}, {\(-2.`\), \(-1.`\), 0.3`}, {\(-0.75`\), \(-1.`\), 0.4`}, {\(-0.75`\), 1.`, 0.4`}, {\(-2.`\), 1.`, 0.3`}, {\(-3.1`\), 2.`, 0.2`}, {\(-3.`\), 3.`, 0.`}, {\(-4.`\), 2.`, 0.`}, {\(-3.55`\), 2.`, 0.1`}, {\(-3.55`\), \(-2.`\), 0.1`}, {\(-3.1`\), \(-2.`\), \(-0.2`\)}, {\(-2.`\), \(-1.`\), \ \(-0.3`\)}, {\(-0.75`\), \(-1.`\), \(-0.4`\)}, {\(-0.75`\), 1.`, \(-0.4`\)}, {\(-2.`\), 1.`, \(-0.3`\)}, {\(-3.1`\), 2.`, \(-0.2`\)}, {\(-3.55`\), 2.`, \(-0.1`\)}, {\(-3.55`\), \(-2.`\), \(-0.1`\)}, \ {\(-0.75`\), 1.`, 0.`}, {\(-2.`\), 1.`, 0.`}, {\(-3.1`\), 2.`, 0.`}, {\(-0.75`\), \(-1.`\), 0.`}, {\(-2.`\), \(-1.`\), 0.`}, {\(-3.1`\), \(-2.`\), 0.`}, {4.`, \(-2.`\), 0.`}, {3.`, \(-3.`\), 0.`}, {3.1`, \(-2.`\), 0.2`}, {2.`, \(-1.`\), 0.3`}, {0.75`, \(-1.`\), 0.4`}, {0.75`, 1.`, 0.4`}, {2.`, 1.`, 0.3`}, {3.1`, 2.`, 0.2`}, {3.`, 3.`, 0.`}, {4.`, 2.`, 0.`}, {3.55`, 2.`, 0.1`}, {3.55`, \(-2.`\), 0.1`}, {3.1`, \(-2.`\), \(-0.2`\)}, {2.`, \(-1.`\), \(-0.3`\)}, \ {0.75`, \(-1.`\), \(-0.4`\)}, {0.75`, 1.`, \(-0.4`\)}, {2.`, 1.`, \(-0.3`\)}, {3.1`, 2.`, \(-0.2`\)}, {3.55`, 2.`, \(-0.1`\)}, {3.55`, \(-2.`\), \(-0.1`\)}, {0.75`, 1.`, 0.`}, {2.`, 1.`, 0.`}, {3.1`, 2.`, 0.`}, {0.75`, \(-1.`\), 0.`}, {2.`, \(-1.`\), 0.`}, {3.1`, \(-2.`\), 0.`}, {0.75`, 2.`, 0.75`}, {\(-0.75`\), 2.`, 0.75`}, {\(-0.75`\), 2.`, \(-0.75`\)}, {0.75`, 2.`, \(-0.75`\)}, {0.75`, \(-10.`\), 0.75`}, {\(-0.75`\), \(-10.`\), 0.75`}, {\(-0.75`\), \(-10.`\), \(-0.75`\)}, {0.75`, \(-10.`\), \ \(-0.75`\)}}, {{1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {}, {}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {}, {}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {}, {}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {}, {}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}}};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], axe, 0]]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], axe, 2]]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["\<\ The following shape is an umbilic torus. It was formed by taking a slightly \ concave triangle and rotating it around an axis of revolution while rotating \ the triangle once. The result is a torus that has a single crease that wraps \ around the torus three times. (Helaman Ferguson has made a famous sculpture \ of this shape.)\ \>", "Text"], Cell[BoxData[ \(\(umbilicTorus = {{{13, 14}, {14, 15}, {15, 16}, {16, 17}, {17, 18}, {30, 13}, {1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}, {18, 1}, {25, 26}, {26, 27}, {27, 28}, {28, 29}, {29, 30}, {6, 25}, {{7, 8}, {1, 2}}, {{8, 9}, {2, 3}}, {{9, 10}, {3, 4}}, {{10, 11}, {4, 5}}, {{11, 12}, {5, 6}}, {{24, 7}, {18, 1}}, {{1, 2}, {31, 32}}, {{2, 3}, {32, 33}}, {{3, 4}, {33, 34}}, {{4, 5}, {34, 35}}, {{5, 6}, {35, 36}}, {{18, 1}, {12, 31}}, {{31, 32}, {25, 26}}, {{32, 33}, {26, 27}}, {{33, 34}, {27, 28}}, {{34, 35}, {28, 29}}, {{35, 36}, {29, 30}}, {{12, 31}, {6, 25}}, {{25, 26}, {19, 20}}, {{26, 27}, {20, 21}}, {{27, 28}, {21, 22}}, {{28, 29}, {22, 23}}, {{29, 30}, {23, 24}}, {{6, 25}, {36, 19}}, {{19, 20}, {13, 14}}, {{20, 21}, {14, 15}}, {{21, 22}, {15, 16}}, {{22, 23}, {16, 17}}, {{23, 24}, {17, 18}}, {{36, 19}, {30, 13}}, {{13, 14}, {7, 8}}, {{14, 15}, {8, 9}}, {{15, 16}, {9, 10}}, {{16, 17}, {10, 11}}, {{17, 18}, {11, 12}}, {{30, 13}, {24, 7}}}, {{8.464396`, 2.2252011`, 0.`}, {3.7720594`, 2.091005`, 6.5333986`}, {\(-3.3674202`\), 1.704603`, 5.832543`}, {\(-6.134172`\), 1.1126006`, 0.`}, {\(-2.9072814`\), 0.38640213`, \(-5.035559`\)}, {2.9072814`, \(-0.38640213`\), \ \(-5.035559`\)}, {9.378918`, 0.18766785`, 0.`}, {4.6230755`, 0.4350209`, 8.007401`}, {\(-4.509547`\), 0.629904`, 7.810765`}, {\(-8.725132`\), 0.74881136`, 0.`}, {\(-4.1998606`\), 0.7774011`, \(-7.2743716`\)}, {4.0410557`, 0.7122247`, \(-6.999314`\)}, {11.614413`, \(-1.6890078`\), 0.`}, {6.061484`, \(-0.6961711`\), 10.498797`}, {\(-6.0951223`\), 0.380634`, 10.557061`}, {\(-11.80813`\), 1.4115291`, 0.`}, {\(-5.511356`\), 2.272173`, \(-9.545948`\)}, {4.9643607`, 2.8587592`, \(-8.598525`\)}, {8.633752`, \(-1.0455761`\), 0.`}, {4.527979`, \(-0.9346183`\), 7.8426895`}, {\(-4.703407`\), \(-0.7109317`\), 8.14654`}, {\(-9.643999`\), \(-0.4014963`\), 0.`}, {\(-4.869454`\), \(-0.043634485`\), \(-8.434141`\)}, \ {4.8400455`, 0.31949028`, \(-8.383204`\)}, {5.5853505`, \(-1.581769`\), 0.`}, {3.2065756`, \(-2.3007102`\), 5.5539517`}, {\(-3.7441814`\), \(-2.742152`\), 6.485112`}, {\(-8.681298`\), \(-2.8528497`\), 0.`}, {\(-4.924036`\), \(-2.6194518`\), \(-8.528681`\)}, \ {5.4239774`, \(-2.0701091`\), \(-9.394605`\)}, {7.414392`, 0.026809692`, 0.`}, {3.7333136`, \(-0.27179936`\), 6.4662886`}, {\(-3.8196042`\), \(-0.5376254`\), 6.6157484`}, {\(-7.9113197`\), \(-0.73860586`\), 0.`}, {\(-4.1250696`\), \(-0.8504996`\), \(-7.14483`\)}, \ {4.307401`, \(-0.8598105`\), \(-7.4606376`\)}}, {{0.5`}, {0.5`}, {0.5`}, \ {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, \ {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}, {1.`, 0.5`}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], umbilicTorus, 0], PlotRange \[Rule] {{\(-10\), 10}, {\(-2.5\), 2.5}, {\(-10\), 10}}]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], umbilicTorus, 2], PlotRange \[Rule] {{\(-10\), 10}, {\(-2.5\), 2.5}, {\(-10\), 10}}]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["3D shape", "Subsubsection"], Cell["\<\ Here is a more interesting example of a 3D mesh. It consists of 8 cubes \ whose boundary quads are treated as crease surfaces. Note the two edges \ curves on the bottom of the feet of the \"A\" are circles.\ \>", "Text"], Cell[BoxData[ \(\(A = {{{{1, 2}, {3, 4}}, {{3, 4}, {5, 6}}, {{5, 6}, {7, 8}}, {{7, 8}, {9, 10}}, {{9, 10}, {11, 12}}, {{11, 12}, {13, 14}}, {{13, 14}, {15, 16}}, {{4, 14}, {6, 12}}, {6, 12}, {12, 10}, {10, 8}, {8, 6}, {1, 2}, {2, 18}, {18, 17}, {17, 1}, {{18, 17}, {20, 19}}, {{20, 19}, {22, 21}}, {{22, 21}, {24, 23}}, {{24, 23}, {26, 25}}, {{26, 25}, {28, 27}}, {{28, 27}, {30, 29}}, {{30, 29}, {32, 31}}, {{30, 20}, {28, 22}}, {22, 28}, {28, 26}, {26, 24}, {24, 22}, {15, 16}, {16, 32}, {32, 31}, {31, 15}, {{1, 3}, {17, 19}}, {{3, 5}, {19, 21}}, {{5, 7}, {21, 23}}, {{7, 9}, {23, 25}}, {{9, 11}, {25, 27}}, {{11, 13}, {27, 29}}, {{13, 15}, {29, 31}}, {{15, 16}, {31, 32}}, {{16, 14}, {32, 30}}, {{14, 4}, {30, 20}}, {{4, 2}, {20, 18}}, {{2, 1}, {18, 17}}, {{6, 8}, {22, 24}}, {{8, 10}, {24, 26}}, {{10, 12}, {26, 28}}, {{12, 6}, {28, 22}}, {{{1, 2}, {3, 4}}, {{17, 18}, {19, 20}}}, {{{3, 4}, {5, 6}}, {{19, 20}, {21, 22}}}, {{{5, 6}, {7, 8}}, {{21, 22}, {23, 24}}}, {{{7, 8}, {9, 10}}, {{23, 24}, {25, 26}}}, {{{9, 10}, {11, 12}}, {{25, 26}, {27, 28}}}, {{{11, 12}, {13, 14}}, {{27, 28}, {29, 30}}}, {{{13, 14}, {15, 16}}, {{29, 30}, {31, 32}}}, {{{4, 14}, {6, 12}}, {{20, 30}, {22, 28}}}}, \[IndentingNewLine]{{0, 1, 1}, {1, 1, 1}, {0, 2, 1}, {1, 2, 1}, {0, 3, 1}, {1, 3, 1}, {0, 5, 1}, {1, 4, 1}, {3, 5, 1}, {2, 4, 1}, {3, 3, 1}, {2, 3, 1}, {3, 2, 1}, {2, 2, 1}, {3, 1, 1}, {2, 1, 1}, {0, 1, 0}, {1, 1, 0}, {0, 2, 0}, {1, 2, 0}, {0, 3, 0}, {1, 3, 0}, {0, 5, 0}, {1, 4, 0}, {3, 5, 0}, {2, 4, 0}, {3, 3, 0}, {2, 3, 0}, {3, 2, 0}, {2, 2, 0}, {3, 1, 0}, {2, 1, 0}}, \[IndentingNewLine]{{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}};\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayLines[ Nest[Composition[weightedCellAverage, linearSub], A, 1]]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], A, 1]]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Mesh conversion function", "Subsubsection"], Cell["\<\ This function converts a cubic mesh to polygonal meshes used in the rest of \ chapter 7.\ \>", "Text"], Cell[BoxData[ \(cube2polygon[{M_, p_}] := \[IndentingNewLine]{Table[\[IndentingNewLine]If[ Length[Dimensions[ M\[LeftDoubleBracket]i\[RightDoubleBracket]]] \[Equal] 0, {M\[LeftDoubleBracket] i\[RightDoubleBracket]}, \[IndentingNewLine]If[ Length[Dimensions[ M\[LeftDoubleBracket]i\[RightDoubleBracket]]] \[Equal] 2, {M\[LeftDoubleBracket]i, 1, 1\[RightDoubleBracket], M\[LeftDoubleBracket]i, 1, 2\[RightDoubleBracket], M\[LeftDoubleBracket]i, 2, 2\[RightDoubleBracket], M\[LeftDoubleBracket]i, 2, 1\[RightDoubleBracket]}, \[IndentingNewLine]M\ \[LeftDoubleBracket]i\[RightDoubleBracket]]], {i, Length[M]}], p}\)], "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Creating surfaces of revolution by revolving cubic meshes", "Section"], Cell[CellGroupData[{ Cell["\<\ Revolving a 1D cubic mesh to make a 2D cubic mesh for a surface of \ revolution.\ \>", "Subsubsection"], Cell[TextData[{ Cell[BoxData[ \(revolve\)]], " takes a profile curve represented as a 1D tensioned cubic mesh in the ", Cell[BoxData[ \(xz\)]], " plane and makes ", Cell[BoxData[ \(m\)]], " copies of the mesh to form a 2D tensioned cubic mesh in ", Cell[BoxData[ \(xyz\)]], " space. The limit of this 2D mesh under subdivision is the surface \ defined by revolving the profile curve around the ", Cell[BoxData[ \(z\)]], " axis. Vertices in ", Cell[BoxData[ \(p\)]], " that lies on the ", Cell[BoxData[ \(z\)]], " axis are collapsed to a single vertex in the new 2D mesh." }], "Text"], Cell[BoxData[ \(revolve[{M_, p_, \[CapitalSigma]_}, m_] := Module[{newP = {}, newM, new\[CapitalSigma], idx, currIdx = 1, \[Beta] = \(2 \[Pi]\)\/m}, \[IndentingNewLine]Do[ If[p\[LeftDoubleBracket]i, 1\[RightDoubleBracket] \[Equal] 0, \[IndentingNewLine]idx[i, _] = \(currIdx++\); newP = Append[ newP, {0, 0, p\[LeftDoubleBracket]i, 2\[RightDoubleBracket]}], \[IndentingNewLine]idx[i, m] = currIdx; Do[idx[i, j] = \(currIdx++\); newP = Append[ newP, \[IndentingNewLine]{\[Beta]\ Csc[\[Beta]] Cos[j\ \[Beta]\ ] p\[LeftDoubleBracket]i, 1\[RightDoubleBracket], \[Beta]\ Csc[\[Beta]] Sin[j\ \[Beta]\ ] p\[LeftDoubleBracket]i, 1\[RightDoubleBracket], p\[LeftDoubleBracket]i, 2\[RightDoubleBracket]}], \[IndentingNewLine]{j, 0, m - 1}]], {i, Length[p]}]; \[IndentingNewLine]newM = Flatten[Table[{Map[Function[k, idx[k, j]], M\[LeftDoubleBracket]i\[RightDoubleBracket], {\(-1\)}], Map[Function[k, idx[k, j + 1]], M\[LeftDoubleBracket] i\[RightDoubleBracket], {\(-1\)}]}, \ \[IndentingNewLine]{i, Length[M]}, {j, 0, m - 1}], 1]; \[IndentingNewLine]new\[CapitalSigma] = Flatten[Table[ Prepend[\[CapitalSigma]\[LeftDoubleBracket] i\[RightDoubleBracket], Cos[\[Beta]]], {i, Length[\[CapitalSigma]]}, {j, 0, m - 1}], 1]; \[IndentingNewLine]{newM, newP, new\[CapitalSigma]}]\)], "Input", InitializationCell->True] }, Open ]], Cell[CellGroupData[{ Cell["Mathematical shapes", "Subsubsection"], Cell["Here is the definition of the profile curve for a sphere", "Text"], Cell[BoxData[ \(\(sphere\ = \ {{{2, 1}, {3, 2}}, {{0, 3.0}, {3.0, 0.0}, {0, \(-3.0\)}}, {{0.0}, {0.0}}};\)\)], "Input", InitializationCell->True], Cell["Here are several rounds of subdivision for the profile curve", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(curvePlot[Nest[Composition[weightedCellAverage, linearSub], sphere, 0], 0.03, PlotRange \[Rule] {{\(-5\), 5}, {\(-3\), 3}}]\), "\[IndentingNewLine]", \(curvePlot[Nest[Composition[weightedCellAverage, linearSub], sphere, 3], 0.03, PlotRange \[Rule] {{\(-5\), 5}, {\(-3\), 3}}]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["Here are several rounds of subdivision for the revolved mesh", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[sphere, 4], 0], PlotRange \[Rule] {{\(-5\), 5}, {\(-5\), 5}, {\(-3\), 3}}]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[sphere, 4], 3], PlotRange \[Rule] {{\(-5\), 5}, {\(-5\), 5}, {\(-3\), 3}}]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["Here is a profile curve for a circle (a diamond)", "Text"], Cell[BoxData[ \(\(torus\ = \ {{{2, 1}, {3, 2}, {4, 3}, {1, 4}}, {{2.0, 1.5, 0.0}, {5.0, 1.5, 0.0}, {5.0, \(-1.5\), 0.0}, {2.0, \(-1.5\), 0.0}}, {{0.0}, {0.0}, {0.0}, {0.0}}};\)\)], "Input", InitializationCell->True], Cell["\<\ Here is plot of subdivision for the resulting surface of revolution\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[torus, 4], 0], PlotRange \[Rule] {{\(-8\), 8}, {\(-8\), 8}, {\(-2\), 2}}]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[torus, 4], 3], PlotRange \[Rule] {{\(-8\), 8}, {\(-8\), 8}, {\(-2\), 2}}]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Chess pieces", "Subsubsection"], Cell["\<\ As an example of the power of this method, Scott Schaefer created a \ collection of chess pieces constructed as surfaces of revolution. Here is an \ example of the pawn after revolution.\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[pawn, 4], 0], PlotRange \[Rule] {{\(-2.5\), 2.5}, {\(-2.5\), 2.5}, {\(-0.25\), 5.25}}, Axes \[Rule] True]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[pawn, 4], 1], PlotRange \[Rule] {{\(-2.5\), 2.5}, {\(-2.5\), 2.5}, {\(-0.25\), 5.25}}, Axes \[Rule] True]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell["Rook as a surface of revolution", "Text"], Cell[BoxData[ \(\(rook\ = \ {{{2, 1}, 2, {3, 2}, {4, 3}, {5, 4}, {6, 5}, {7, 6}, {8, 7}, {9, 8}, {10, 9}, {11, 10}, 10, {12, 11}, {13, 12}, {14, 13}, {15, 14}, {16, 15}, 4, 1, 11, 14, 16, {17, 16}, 17, {18, 17}, {19, 18}}, {{0.`, 0.`}, {1.4814816`, \(-0.014306068`\)}, {1.5740738`, 0.39999962`}, {1.3888893`, 0.47500038`}, {1.4506168`, 0.6000004`}, {1.4814816`, 0.9250002`}, {1.0802469`, 1.0749998`}, {1.1111107`, 1.6999998`}, {0.6172838`, 1.8999996`}, {0.49382687`, 3.7052932`}, {0.709877`, 3.7052932`}, {0.833333`, 4.1344776`}, {0.95679`, 4.2203145`}, {0.833333`, 4.449213`}, {1.1111107`, 4.620887`}, {1.0802469`, 5.7939916`}, {0.80246925`, 5.7939916`}, {0.77160454`, 4.964235`}, {0.`, 4.7639484`}}, \[IndentingNewLine]{{1}, {}, {1}, {1}, {1}, {1}, \ {1}, {1}, {1}, {1}, {1}, {}, {1}, {1}, {1}, {1}, {1}, {}, {}, {}, {}, {}, \ {1}, {}, {1}, {1}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[rook, 4], 0], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 6}}] displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[rook, 4], 2], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 6}}]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}], " ", RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}]}]], "Output"] }, Open ]], Cell["Bishop as a surface of revolution", "Text"], Cell[BoxData[ \(\(bishop\ = \ {{{2, 1}, 2, {3, 2}, {4, 3}, {5, 4}, {6, 5}, {7, 6}, {8, 7}, {9, 8}, {10, 9}, {11, 10}, 10, {12, 11}, {13, 12}, {14, 13}, {15, 14}, {16, 15}, 4, 1, {17, 16}, {18, 17}, {19, 18}, 11, 13, 15, 16, 18, {20, 19}, {21, 20}, 21, {22, 21}, {23, 22}, {24, 23}}, {{0.`, 0.`}, {1.4814816`, \(-0.014306068`\)}, {1.5740738`, 0.39999962`}, {1.3888893`, 0.47500038`}, {1.4506168`, 0.6000004`}, {1.4814816`, 0.9250002`}, {1.0802469`, 1.0749998`}, {1.1111107`, 1.6999998`}, {0.6172838`, 1.8999996`}, {0.49382687`, 3.7052932`}, {1.310751`, 3.7439222`}, {1.1929312`, 4.165316`}, {0.9572897`, 4.132901`}, {0.8394699`, 4.52188`}, {0.5154638`, 4.619125`}, {0.5154638`, 4.975689`}, {0.72164917`, 5.1701784`}, {0.544919`, 5.332253`}, {0.92783546`, 5.721232`}, {0.72164917`, 6.3695297`}, {0.16200256`, 7.244733`}, {0.39764404`, 7.4392223`}, {0.33873367`, 7.8282013`}, {0.`, 8.055105`}}, {{1}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {}, {1}, {1}, {1}, {1}, {1}, {}, {}, {1}, {1}, {1}, {}, {}, {}, {}, {}, \ {1}, {1}, {}, {1}, {1}, {1}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[bishop, 4], 0], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 8}}] displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[bishop, 4], 2], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 8}}]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}], " ", RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}]}]], "Output"] }, Open ]], Cell["Queen as a surface of revolution", "Text"], Cell[BoxData[ \(\(queen\ = \ {{{2, 1}, 2, {3, 2}, {4, 3}, {5, 4}, {6, 5}, {7, 6}, {8, 7}, {9, 8}, {10, 9}, {11, 10}, 10, 4, 1, 11, {12, 11}, {13, 12}, 13, {14, 13}, {15, 14}, {16, 15}, 15, 16, {17, 16}, {18, 17}, {19, 18}, {20, 19}, {21, 20}, {22, 21}, 22, {23, 22}, {24, 23}, 24, {25, 24}, {26, 25}, {27, 26}, 18}, {{0.`, 0.`}, {1.6431923`, \(-0.015649796`\)}, {1.7057905`, 0.45383453`}, {1.5492954`, 0.54773045`}, {1.7057905`, 0.7355242`}, {1.5179968`, 1.1737089`}, {1.330203`, 1.1424103`}, {1.3615026`, 1.7683878`}, {0.82942104`, 1.9248829`}, {0.54773045`, 4.804382`}, {1.3928013`, 4.804382`}, {1.3615026`, 5.273865`}, {1.0485134`, 5.367762`}, {0.9859152`, 5.6807513`}, {0.57903004`, 5.6807513`}, {0.54773045`, 6.025039`}, {0.82942104`, 6.181534`}, {0.57903004`, 6.400626`}, {0.8607197`, 7.089202`}, {1.2050076`, 7.71518`}, {1.4240999`, 8.090767`}, {0.9859152`, 8.403756`}, {0.6416273`, 8.372457`}, {0.23474216`, 8.591549`}, {0.45383453`, 8.748044`}, {0.42253494`, 9.186229`}, {0.`, 9.405321`}}, {{1}, {}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, \ {1}, {}, {}, {}, {}, {1}, {1}, {}, {1}, {1}, {1}, {}, {}, {1}, {1}, {1}, {1}, \ {1}, {1}, {}, {1}, {1}, {}, {1}, {1}, {1}, {}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[queen, 4], 0], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 10}}] displayQuads[ Nest[Composition[weightedCellAverage, linearSub], revolve[queen, 4], 2], \[IndentingNewLine]PlotRange \[Rule] {{\(-2.7\), 2.7}, {\(-2.7\), 2.7}, {\(-0.1\), 10}}]\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}], " ", RowBox[{"(", TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False], ")"}]}]], "Output"] }, Open ]], Cell["\<\ This is a king defined intially as a surface of revolution and then modified \ to add a 3D cross to his head.\ \>", "Text"], Cell[BoxData[ \(\(king = {{{2, 3}, {3, 4}, {4, 5}, {5, 2}, {34, 35}, {35, 36}, {36, 37}, {37, 34}, {10, 11}, {11, 12}, {12, 13}, {13, 10}, {1, 1}, {1, 1}, {1, 1}, {1, 1}, {38, 39}, {39, 40}, {40, 41}, {41, 38}, {46, 47}, {47, 48}, {48, 49}, {49, 46}, {54, 55}, {55, 56}, {56, 57}, {57, 54}, {58, 59}, {59, 60}, {60, 61}, {61, 58}, {82, 83}, {83, 84}, {84, 85}, {85, 82}, {90, 91}, {91, 92}, {92, 93}, {93, 90}, {66, 67}, {67, 68}, {68, 69}, {69, 66}, {{2, 3}, {1, 1}}, {{3, 4}, {1, 1}}, {{4, 5}, {1, 1}}, {{5, 2}, {1, 1}}, {{6, 7}, {2, 3}}, {{7, 8}, {3, 4}}, {{8, 9}, {4, 5}}, {{9, 6}, {5, 2}}, {{10, 11}, {6, 7}}, {{11, 12}, {7, 8}}, {{12, 13}, {8, 9}}, {{13, 10}, {9, 6}}, {{14, 15}, {10, 11}}, {{15, 16}, {11, 12}}, {{16, 17}, {12, 13}}, {{17, 14}, {13, 10}}, {{18, 19}, {14, 15}}, {{19, 20}, {15, 16}}, {{20, 21}, {16, 17}}, {{21, 18}, {17, 14}}, {{22, 23}, {18, 19}}, {{23, 24}, {19, 20}}, {{24, 25}, {20, 21}}, {{25, 22}, {21, 18}}, {{26, 27}, {22, 23}}, {{27, 28}, {23, 24}}, {{28, 29}, {24, 25}}, {{29, 26}, {25, 22}}, {{30, 31}, {26, 27}}, {{31, 32}, {27, 28}}, {{32, 33}, {28, 29}}, {{33, 30}, {29, 26}}, {{34, 35}, {30, 31}}, {{35, 36}, {31, 32}}, {{36, 37}, {32, 33}}, {{37, 34}, {33, 30}}, {{38, 39}, {34, 35}}, {{39, 40}, {35, 36}}, {{40, 41}, {36, 37}}, {{41, 38}, {37, 34}}, {{42, 43}, {38, 39}}, {{43, 44}, {39, 40}}, {{44, 45}, {40, 41}}, {{45, 42}, {41, 38}}, {{46, 47}, {42, 43}}, {{47, 48}, {43, 44}}, {{48, 49}, {44, 45}}, {{49, 46}, {45, 42}}, {{50, 51}, {46, 47}}, {{51, 52}, {47, 48}}, {{52, 53}, {48, 49}}, {{53, 50}, {49, 46}}, {{54, 55}, {50, 51}}, {{55, 56}, {51, 52}}, {{56, 57}, {52, 53}}, {{57, 54}, {53, 50}}, {{58, 59}, {54, 55}}, {{59, 60}, {55, 56}}, {{60, 61}, {56, 57}}, {{61, 58}, {57, 54}}, {{62, 63}, {58, 59}}, {{63, 64}, {59, 60}}, {{64, 65}, {60, 61}}, {{65, 62}, {61, 58}}, {{66, 67}, {62, 63}}, {{67, 68}, {63, 64}}, {{68, 69}, {64, 65}}, {{69, 66}, {65, 62}}, {{70, 71}, {66, 67}}, {{71, 72}, {67, 68}}, {{72, 73}, {68, 69}}, {{73, 70}, {69, 66}}, {{74, 75}, {70, 71}}, {{75, 76}, {71, 72}}, {{76, 77}, {72, 73}}, {{77, 74}, {73, 70}}, {{78, 79}, {74, 75}}, {{79, 80}, {75, 76}}, {{80, 81}, {76, 77}}, {{81, 78}, {77, 74}}, {{82, 83}, {78, 79}}, {{83, 84}, {79, 80}}, {{84, 85}, {80, 81}}, {{85, 82}, {81, 78}}, {{86, 87}, {82, 83}}, {{87, 88}, {83, 84}}, {{88, 89}, {84, 85}}, {{89, 86}, {85, 82}}, {{90, 91}, {86, 87}}, {{91, 92}, {87, 88}}, {{92, 93}, {88, 89}}, {{93, 90}, {89, 86}}, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, {90, 94}, {91, 95}, {92, 96}, {93, 97}, {94, 98}, {95, 99}, {95, 100}, {96, 101}, {96, 102}, {97, 103}, {97, 104}, {94, 105}, {98, 110}, {99, 111}, {100, 112}, {101, 113}, {102, 114}, {103, 115}, {104, 116}, {105, 117}, {106, 110}, {107, 111}, {107, 112}, {108, 113}, {108, 114}, {109, 115}, {109, 116}, {106, 117}, {106, 118}, {107, 119}, {108, 120}, {109, 121}, {118, 119}, {119, 120}, {120, 121}, {121, 118}, {94, 95}, {95, 96}, {96, 97}, {97, 94}, {98, 99}, {100, 101}, {102, 103}, {104, 105}, {106, 107}, {107, 108}, {108, 109}, {109, 106}, {110, 111}, {112, 113}, {114, 115}, {116, 117}, {{90, 91}, {94, 95}}, {{91, 92}, {95, 96}}, {{92, 93}, {96, 97}}, {{93, 90}, {97, 94}}, {{94, 95}, {98, 99}}, {{95, 96}, {100, 101}}, {{96, 97}, {102, 103}}, {{97, 94}, {104, 105}}, {{98, 99}, {110, 111}}, {{100, 101}, {112, 113}}, {{102, 103}, {114, 115}}, {{104, 105}, {116, 117}}, {{94, 98}, {106, 110}}, {{99, 95}, {111, 107}}, {{95, 100}, {107, 112}}, {{101, 96}, {113, 108}}, {{96, 102}, {108, 114}}, {{103, 97}, {115, 109}}, {{97, 104}, {109, 116}}, {{105, 94}, {117, 106}}, {{116, 117}, {109, 106}}, {{110, 111}, {106, 107}}, {{112, 113}, {107, 108}}, {{114, 115}, {108, 109}}, {{106, 107}, {118, 119}}, {{107, 108}, {119, 120}}, {{108, 109}, {120, 121}}, {{109, 106}, {121, 118}}, {{118, 119}, {121, 120}}}, {{0.`, 0.`, 0.`}, {\(-1.8251277`\), 1.8251277`, \(-0.015649796`\)}, {1.8251277`, 1.8251277`, \(-0.015649796`\)}, {1.8251277`, \(-1.8251277`\), \ \(-0.015649796`\)}, {\(-1.8251277`\), \(-1.8251277`\), \(-0.015649796`\)}, \ {\(-1.8946569`\), 1.8946569`, 0.45383453`}, {1.8946569`, 1.8946569`, 0.45383453`}, {1.8946569`, \(-1.8946569`\), 0.45383453`}, {\(-1.8946569`\), \(-1.8946569`\), 0.45383453`}, {\(-1.7208345`\), 1.7208345`, 0.54773045`}, {1.7208345`, 1.7208345`, 0.54773045`}, {1.7208345`, \(-1.7208345`\), 0.54773045`}, {\(-1.7208345`\), \(-1.7208345`\), 0.54773045`}, {\(-1.8946569`\), 1.8946569`, 0.7355242`}, {1.8946569`, 1.8946569`, 0.7355242`}, {1.8946569`, \(-1.8946569`\), 0.7355242`}, {\(-1.8946569`\), \(-1.8946569`\), 0.7355242`}, {\(-1.6860704`\), 1.6860704`, 1.1737089`}, {1.6860704`, 1.6860704`, 1.1737089`}, {1.6860704`, \(-1.6860704`\), 1.1737089`}, {\(-1.6860704`\), \(-1.6860704`\), 1.1737089`}, {\(-1.4774841`\), 1.4774841`, 1.1424103`}, {1.4774841`, 1.4774841`, 1.1424103`}, {1.4774841`, \(-1.4774841`\), 1.1424103`}, {\(-1.4774841`\), \(-1.4774841`\), 1.1424103`}, {\(-1.5122494`\), 1.5122494`, 1.7683878`}, {1.5122494`, 1.5122494`, 1.7683878`}, {1.5122494`, \(-1.5122494`\), 1.7683878`}, {\(-1.5122494`\), \(-1.5122494`\), 1.7683878`}, {\(-0.9212552`\), 0.9212552`, 1.9248829`}, {0.9212552`, 0.9212552`, 1.9248829`}, {0.9212552`, \(-0.9212552`\), 1.9248829`}, {\(-0.9212552`\), \(-0.9212552`\), 1.9248829`}, {\(-0.6083756`\), 0.6083756`, 4.804382`}, {0.6083756`, 0.6083756`, 4.804382`}, {0.6083756`, \(-0.6083756`\), 4.804382`}, {\(-0.6083756`\), \(-0.6083756`\), 4.804382`}, {\(-1.5470134`\), 1.5470134`, 4.804382`}, {1.5470134`, 1.5470134`, 4.804382`}, {1.5470134`, \(-1.5470134`\), 4.804382`}, {\(-1.5470134`\), \(-1.5470134`\), 4.804382`}, {\(-1.5122494`\), 1.5122494`, 5.273865`}, {1.5122494`, 1.5122494`, 5.273865`}, {1.5122494`, \(-1.5122494`\), 5.273865`}, {\(-1.5122494`\), \(-1.5122494`\), 5.273865`}, {\(-1.1646056`\), 1.1646056`, 5.367762`}, {1.1646056`, 1.1646056`, 5.367762`}, {1.1646056`, \(-1.1646056`\), 5.367762`}, {\(-1.1646056`\), \(-1.1646056`\), 5.367762`}, {\(-1.0950764`\), 1.0950764`, 5.6807513`}, {1.0950764`, 1.0950764`, 5.6807513`}, {1.0950764`, \(-1.0950764`\), 5.6807513`}, {\(-1.0950764`\), \(-1.0950764`\), 5.6807513`}, {\(-0.6431407`\), 0.6431407`, 5.6807513`}, {0.6431407`, 0.6431407`, 5.6807513`}, {0.6431407`, \(-0.6431407`\), 5.6807513`}, {\(-0.6431407`\), \(-0.6431407`\), 5.6807513`}, {\(-0.6083756`\), 0.6083756`, 6.025039`}, {0.6083756`, 0.6083756`, 6.025039`}, {0.6083756`, \(-0.6083756`\), 6.025039`}, {\(-0.6083756`\), \(-0.6083756`\), 6.025039`}, {\(-0.9212552`\), 0.9212552`, 6.181534`}, {0.9212552`, 0.9212552`, 6.181534`}, {0.9212552`, \(-0.9212552`\), 6.181534`}, {\(-0.9212552`\), \(-0.9212552`\), 6.181534`}, {\(-0.6431407`\), 0.6431407`, 6.400626`}, {0.6431407`, 0.6431407`, 6.400626`}, {0.6431407`, \(-0.6431407`\), 6.400626`}, {\(-0.6431407`\), \(-0.6431407`\), 6.400626`}, {\(-0.9560192`\), 0.9560192`, 7.089202`}, {0.9560192`, 0.9560192`, 7.089202`}, {0.9560192`, \(-0.9560192`\), 7.089202`}, {\(-0.9560192`\), \(-0.9560192`\), 7.089202`}, {\(-1.338427`\), 1.338427`, 7.71518`}, {1.338427`, 1.338427`, 7.71518`}, {1.338427`, \(-1.338427`\), 7.71518`}, {\(-1.338427`\), \(-1.338427`\), 7.71518`}, {\(-1.5817772`\), 1.5817772`, 8.090767`}, {1.5817772`, 1.5817772`, 8.090767`}, {1.5817772`, \(-1.5817772`\), 8.090767`}, {\(-1.5817772`\), \(-1.5817772`\), 8.090767`}, {\(-1.0950764`\), 1.0950764`, 8.403756`}, {1.0950764`, 1.0950764`, 8.403756`}, {1.0950764`, \(-1.0950764`\), 8.403756`}, {\(-1.0950764`\), \(-1.0950764`\), 8.403756`}, {\(-0.7126688`\), 0.7126688`, 8.372457`}, {0.7126688`, 0.7126688`, 8.372457`}, {0.7126688`, \(-0.7126688`\), 8.372457`}, {\(-0.7126688`\), \(-0.7126688`\), 8.372457`}, {\(-0.26`\), 0.26`, 8.6`}, {0.26`, 0.26`, 8.6`}, {0.26`, \(-0.26`\), 8.6`}, {\(-0.26`\), \(-0.26`\), 8.6`}, {\(-0.26`\), 0.26`, 9.12`}, {0.26`, 0.26`, 9.12`}, {0.26`, \(-0.26`\), 9.12`}, {\(-0.26`\), \(-0.26`\), 9.12`}, {\(-0.26`\), 0.78`, 9.12`}, {0.26`, 0.78`, 9.12`}, {0.78`, 0.26`, 9.12`}, {0.78`, \(-0.26`\), 9.12`}, {0.26`, \(-0.78`\), 9.12`}, {\(-0.26`\), \(-0.78`\), 9.12`}, {\(-0.78`\), \(-0.26`\), 9.12`}, {\(-0.78`\), 0.26`, 9.12`}, {\(-0.26`\), 0.26`, 9.68`}, {0.26`, 0.26`, 9.68`}, {0.26`, \(-0.26`\), 9.68`}, {\(-0.26`\), \(-0.26`\), 9.68`}, {\(-0.26`\), 0.78`, 9.68`}, {0.26`, 0.78`, 9.68`}, {0.78`, 0.26`, 9.68`}, {0.78`, \(-0.26`\), 9.68`}, {0.26`, \(-0.78`\), 9.68`}, {\(-0.26`\), \(-0.78`\), 9.68`}, {\(-0.78`\), \(-0.26`\), 9.68`}, {\(-0.78`\), 0.26`, 9.68`}, {\(-0.26`\), 0.26`, 10.24`}, {0.26`, 0.26`, 10.24`}, {0.26`, \(-0.26`\), 10.24`}, {\(-0.26`\), \(-0.26`\), 10.24`}}, {{0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, \ {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, \ {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, \ {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, {0.0}, \ {0.0}, {0.0}, {0.0}, {0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {1.0, 0.0}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, \ {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, \ {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, \ {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, \ {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, \ {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, \ {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}, {1.0, 1.0}}};\)\)], "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[BoxData[{ \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], king, 0], PlotRange \[Rule] {{\(-2\), 2}, {\(-2\), 2}, {0, 10.25}}]\), "\[IndentingNewLine]", \(displayQuads[ Nest[Composition[weightedCellAverage, linearSub], king, 2], PlotRange \[Rule] {{\(-2\), 2}, {\(-2\), 2}, {0, 10.25}}]\)}], "Input"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]] }, Open ]] }, Closed]] }, Open ]] }, FrontEndVersion->"4.1 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 695}}, AutoGeneratedPackage->None, WindowSize->{1016, 668}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, 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, ScriptMinSize->9], Cell[StyleData[All, "Presentation"], PageWidth->WindowWidth, ScriptMinSize->12, FontSize->16], Cell[StyleData[All, "Condensed"], PageWidth->WindowWidth, CellBracketOptions->{"Margins"->{1, 1}, "Widths"->{0, 5}}, ScriptMinSize->8, FontSize->11], Cell[StyleData[All, "Printout"], PageWidth->PaperWidth, ScriptMinSize->7, FontSize->10, PrivateFontOptions->{"FontType"->"Outline"}] }, Open ]], 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"], Cell[ TextData[ { ValueBox[ "DateLong"]}], "Header"], Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"]}], "Header"]}, {Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"]}], "Header"], Cell[ TextData[ { ValueBox[ "DateLong"]}], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"]}}, PageHeaderLines->{True, True}, PrintingOptions->{"PrintingMargins"->{{108, 72}, {72, 72}}, "FirstPageHeader"->False, "FacingPages"->True}, CellFrameLabelMargins->6, TextJustification->1, LineSpacing->{2, 0}, StyleMenuListing->None, FontSize->12] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Headings", "Section"], Cell[CellGroupData[{ Cell[StyleData["Title"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, TextAlignment->Center, CounterIncrements->"Title", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Subtitle", 0}, {"Chapter", 0}}, FontSize->34, FontColor->GrayLevel[1], Background->RGBColor[0.571389, 0.19675, 0.570504]], Cell[StyleData["Title", "Presentation"], CellMargins->{{0, 0}, {0, 0}}, FontSize->44], Cell[StyleData["Title", "Condensed"], CellMargins->{{0, 0}, {0, 0}}, FontSize->20], Cell[StyleData["Title", "Printout"], CellMargins->{{0, 0}, {0, 0}}, FontSize->24, FontTracking->"Plain", Background->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subtitle"], ShowCellBracket->False, CellMargins->{{0, 0}, {0, 0}}, PageBreakBelow->False, TextAlignment->Center, ParagraphIndent->-96, CounterIncrements->"Subtitle", CounterAssignments->{{"Section", 0}, {"Equation", 0}, {"Figure", 0}, { "Chapter", 0}}, FontFamily->"Helvetica", FontSize->18, FontColor->GrayLevel[1], Background->RGBColor[0.2, 0.700008, 0.700008]], Cell[StyleData["Subtitle", "Presentation"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-157, FontSize->30], Cell[StyleData["Subtitle", "Condensed"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-78, FontSize->14], Cell[StyleData["Subtitle", "Printout"], CellMargins->{{0, 0}, {0, 0}}, ParagraphIndent->-85, FontSize->16, Background->GrayLevel[0.6]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Chapter"], CellFrame->False, ShowCellBracket->True, ShowGroupOpenCloseIcon->False, ShowShortBoxForm->False, CellMargins->{{10, 4}, {50, 150}}, CellGroupingRules->{"SectionGrouping", 20}, PageBreakBelow->False, CellFrameLabels->{{Cell[ TextData[ {"Chapter ", CounterBox[ "Chapter"], ": "}]], None}, {None, None}}, CounterIncrements->"Chapter", CounterAssignments->{{"Section", 0}, {"NumberedEquation", 0}, { "NumberedFigure", 0}, {"NumberedTable", 0}, {"Theorem", 0}}, FontFamily->"Helvetica", FontSize->24, FontSlant->"Italic", Background->GrayLevel[1]], Cell[StyleData["Chapter", "Presentation"], CellMargins->{{8, 10}, {40, 20}}, FontSize->24], Cell[StyleData["Chapter", "Condensed"], CellMargins->{{8, 10}, {12, 8}}, FontSize->12], Cell[StyleData["Chapter", "Printout"], CellMargins->{{9, 10}, {50, 10}}, FontSize->14] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Section"], CellFrame->False, CellDingbat->None, CellMargins->{{12, Inherited}, {4, 24}}, CellGroupingRules->{"SectionGrouping", 30}, PageBreakBelow->False, CellFrameMargins->6, CellFrameLabels->{{Cell[ TextData[ { CounterBox[ "Chapter"], ".", CounterBox[ "Section"], " "}]], None}, {None, None}}, CounterIncrements->"Section", CounterAssignments->{{"Subsection", 0}, {"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->18, FontWeight->"Bold", FontColor->GrayLevel[0]], Cell[StyleData["Section", "Presentation"], CellMargins->{{10, 10}, {8, 32}}, FontSize->24, FontTracking->"Condensed"], Cell[StyleData["Section", "Condensed"], CellMargins->{{8, Inherited}, {2, 12}}, FontSize->12], Cell[StyleData["Section", "Printout"], CellMargins->{{9, 0}, {2, 50}}, FontSize->14, FontTracking->"Plain", FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsection"], CellMargins->{{12, Inherited}, {8, 20}}, CellGroupingRules->{"SectionGrouping", 40}, PageBreakBelow->False, CellFrameLabels->{{Cell[ TextData[ { CounterBox[ "Chapter"], ".", CounterBox[ "Section"], ".", CounterBox[ "Subsection"], " "}]], None}, {None, None}}, CounterIncrements->"Subsection", CounterAssignments->{{"Subsubsection", 0}}, FontFamily->"Helvetica", FontSize->13, FontWeight->"Bold"], Cell[StyleData["Subsection", "Presentation"], CellMargins->{{11, 10}, {8, 32}}, FontSize->22], Cell[StyleData["Subsection", "Condensed"], CellMargins->{{8, Inherited}, {2, 12}}, FontSize->12], Cell[StyleData["Subsection", "Printout"], CellMargins->{{9, 0}, {4, 40}}, FontSize->12] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Subsubsection"], CellDingbat->"\[FilledSquare]", CellMargins->{{25, Inherited}, {8, 12}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, CounterIncrements->"Subsubsection", FontFamily->"Times", FontSize->12, FontWeight->"Bold"], Cell[StyleData["Subsubsection", "Presentation"], CellMargins->{{29, 10}, {8, 26}}, FontSize->18], Cell[StyleData["Subsubsection", "Condensed"], CellMargins->{{22, Inherited}, {2, 12}}, FontSize->10], Cell[StyleData["Subsubsection", "Printout"], CellMargins->{{21, 0}, {4, 20}}, FontSize->11] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Body Text", "Section"], Cell[CellGroupData[{ Cell[StyleData["Text"], CellMargins->{{12, 10}, {5, 5}}, PageBreakWithin->True, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["Text", "Presentation"], CellMargins->{{13, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["Text", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["Text", "Printout"], CellMargins->{{9, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Itemize"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {5, 5}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["Itemize", "Presentation"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["Itemize", "Condensed"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 10}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["Itemize", "Printout"], CellDingbat->"\[FilledSmallCircle]", CellMargins->{{36, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ItemizeFollow"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["ItemizeFollow", "Presentation"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 12}], Cell[StyleData["ItemizeFollow", "Condensed"], CellMargins->{{36, 10}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 4}], Cell[StyleData["ItemizeFollow", "Printout"], CellMargins->{{36, 0}, {0, 0}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["SmallText"], CellMargins->{{12, 10}, {5, 5}}, TextJustification->1, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, ParagraphSpacing->{0, 6}, CounterIncrements->"SmallText", FontFamily->"Helvetica", FontSize->9], Cell[StyleData["SmallText", "Presentation"], CellMargins->{{13, 10}, {8, 8}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->12], Cell[StyleData["SmallText", "Condensed"], CellMargins->{{8, 10}, {2, 2}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->9], Cell[StyleData["SmallText", "Printout"], CellMargins->{{9, 0}, {4, 4}}, TextJustification->1, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSize->7] }, Open ]] }, Open ]], 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.\ \>", "Text"], Cell[CellGroupData[{ Cell[StyleData["Input"], CellMargins->{{52, 10}, {8, 8}}, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, CellLabelMargins->{{5, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontWeight->"Bold", FontColor->GrayLevel[0], Background->RGBColor[0.500008, 1, 0.500008]], Cell[StyleData["Input", "Presentation"], CellMargins->{{62, Inherited}, {10, 10}}], Cell[StyleData["Input", "Condensed"], CellMargins->{{40, 10}, {4, 4}}], Cell[StyleData["Input", "Printout"], CellFrame->True, CellMargins->{{44, 0}, {6, 6}}, Background->None] }, Open ]], Cell[StyleData["InlineInput"], CellFrame->True, Evaluatable->True, CellGroupingRules->"InputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, DefaultFormatType->DefaultInputFormatType, AutoItalicWords->{}, FormatType->InputForm, ShowStringCharacters->True, NumberMarks->True, CounterIncrements->"Input", FontWeight->"Bold", Background->GrayLevel[0.849989]], Cell[CellGroupData[{ Cell[StyleData["Output"], CellMargins->{{52, 10}, {8, 8}}, CellEditDuplicate->True, CellGroupingRules->"OutputGrouping", CellHorizontalScrolling->True, PageBreakWithin->False, GroupPageBreakWithin->False, GeneratedCell->True, CellAutoOverwrite->True, CellLabelMargins->{{3, Inherited}, {Inherited, Inherited}}, DefaultFormatType->DefaultOutputFormatType, FormatType->InputForm, CounterIncrements->"Output", Background->RGBColor[1, 1, 0.300008]], Cell[StyleData["Output", "Presentation"], CellMargins->{{62, Inherited}, {12, 5}}], Cell[StyleData["Output", "Condensed"], CellMargins->{{40, Inherited}, {4, 1}}], Cell[StyleData["Output", "Printout"], CellFrame->True, CellMargins->{{44, 0}, {6, 2}}, Background->None] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Unique Styles", "Section"], Cell[CellGroupData[{ Cell[StyleData["Author"], ShowCellBracket->False, CellMargins->{{10, 4}, {2, 10}}, TextAlignment->Center, FontSize->16, FontSlant->"Italic"], Cell[StyleData["Author", "Presentation"], CellMargins->{{12, 10}, {2, 12}}, ParagraphSpacing->{0, 12}, FontSize->20], Cell[StyleData["Author", "Condensed"], CellMargins->{{8, 10}, {1, 4}}, ParagraphSpacing->{0, 4}, FontSize->12], Cell[StyleData["Author", "Printout"], CellMargins->{{9, 0}, {4, 12}}, ParagraphSpacing->{0, 6}, FontSize->14] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Copyright"], ShowCellBracket->False, CellMargins->{{10, 10}, {40, 2}}, FontFamily->"Helvetica", FontSize->9], Cell[StyleData["Copyright", "Presentation"], CellMargins->{{12, 10}, {50, 2}}, FontSize->12], Cell[StyleData["Copyright", "Condensed"], CellMargins->{{8, 10}, {12, 1}}, FontSize->9], Cell[StyleData["Copyright", "Printout"], CellMargins->{{9, 0}, {72, 4}}, FontSize->7] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Equations, Figures, Theorems etc.", "Section"], Cell["\<\ The following styles are 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[StyleData["Reference"], CellFrame->False, PageBreakWithin->False, GroupPageBreakWithin->False, CellFrameLabels->{{Cell[ TextData[ {"[", CounterBox[ "Reference"], "] "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Reference"], Cell[CellGroupData[{ Cell[StyleData["Example"], CellMargins->{{12, 10}, {5, 12}}, PageBreakBelow->False, ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Bold"], Cell[StyleData["Example", "Presentation"], CellMargins->{{18, 10}, {8, 20}}, ParagraphSpacing->{0, 12}], Cell[StyleData["Example", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, ParagraphSpacing->{0, 4}], Cell[StyleData["Example", "Printout"], CellMargins->{{9, 0}, {4, 10}}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ExampleCode"], CellMargins->{{24, 10}, {0, 10}}, PageBreakBelow->False, DefaultNewCellStyle->"ExampleCodeExplanation", ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Plain", FontColor->RGBColor[0, 0, 0.996109]], Cell[StyleData["ExampleCode", "Presentation"], CellMargins->{{18, 10}, {8, 10}}, ParagraphSpacing->{0, 12}], Cell[StyleData["ExampleCode", "Condensed"], CellMargins->{{8, 10}, {4, 10}}, ParagraphSpacing->{0, 4}], Cell[StyleData["ExampleCode", "Printout"], CellMargins->{{9, 0}, {0, 10}}, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["ExampleCodeExplanation"], CellMargins->{{24, 10}, {10, 0}}, PageBreakAbove->False, DefaultNewCellStyle->"ExampleCode", ParagraphSpacing->{0, 12}, CounterIncrements->"Example", FontFamily->"Times", FontWeight->"Plain", FontColor->GrayLevel[0.749996]], Cell[StyleData["ExampleCodeExplanation", "Presentation"], CellMargins->{{18, 10}, {8, 20}}, PageBreakAbove->False, ParagraphSpacing->{0, 12}], Cell[StyleData["ExampleCodeExplanation", "Condensed"], CellMargins->{{8, 10}, {4, 8}}, PageBreakAbove->False, ParagraphSpacing->{0, 4}], Cell[StyleData["ExampleCodeExplanation", "Printout"], CellMargins->{{9, 0}, {4, 0}}, PageBreakAbove->False, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Proof"], CellFrame->False, CellMargins->{{52, 10}, {0, 0}}, PageBreakWithin->False, PageBreakBelow->False, GroupPageBreakWithin->False, CellLabelMargins->{{23, Inherited}, {Inherited, Inherited}}, CellFrameLabels->{{Cell[ TextData[ {"Proof "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Proof", FontFamily->"Helvetica", FontWeight->"Bold", FontColor->RGBColor[0.2, 0.700008, 0.700008], Background->None], Cell[StyleData["Proof", "Presentation"], CellMargins->{{62, Inherited}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Proof", "Condensed"], CellMargins->{{40, 10}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Proof", "Printout"], CellMargins->{{44, 0}, {0, 0}}, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Theorem"], CellFrame->False, CellMargins->{{52, 10}, {0, 0}}, PageBreakWithin->False, PageBreakBelow->False, GroupPageBreakWithin->False, CellLabelMargins->{{23, Inherited}, {Inherited, Inherited}}, CellFrameLabels->{{Cell[ TextData[ {"Theorem ", CounterBox[ "Chapter"], ".", CounterBox[ "Theorem"], " "}]], None}, {None, None}}, ShowStringCharacters->True, CounterIncrements->"Theorem", FontFamily->"Helvetica", FontWeight->"Bold", FontColor->RGBColor[0.571389, 0.19675, 0.570504], Background->None], Cell[StyleData["Theorem", "Presentation"], CellMargins->{{62, Inherited}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Theorem", "Condensed"], CellMargins->{{40, 10}, {0, 0}}, PageBreakBelow->False], Cell[StyleData["Theorem", "Printout"], CellMargins->{{44, 0}, {0, 0}}, PageBreakBelow->False] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Exercise"], CellDingbat->"\[FilledDownTriangle]", CellMargins->{{23, Inherited}, {4, 18}}, CellGroupingRules->{"SectionGrouping", 50}, PageBreakBelow->False, CounterIncrements->"Subsubsection", FontFamily->"Times", FontSize->13, FontWeight->"Bold", FontColor->RGBColor[0.571389, 0.19675, 0.570504], Background->None], Cell[StyleData["Exercise", "Presentation"], CellMargins->{{33, 10}, {8, 26}}, FontSize->18], Cell[StyleData["Exercise", "Condensed"], CellMargins->{{17, Inherited}, {2, 12}}, FontSize->10], Cell[StyleData["Exercise", "Printout"], CellFrame->{{0, 0}, {0.5, 0}}, CellDingbat->None, CellMargins->{{9, 0}, {6, 20}}, FontSize->11, FontColor->GrayLevel[0]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["TheoremProofText"], CellMargins->{{52, 10}, {5, 5}}, TextJustification->1, ParagraphSpacing->{0, 12}, CounterIncrements->"Text", FontFamily->"Times"], Cell[StyleData["TheoremProofText", "Presentation"], CellMargins->{{52, 10}, {8, 8}}, TextJustification->1, ParagraphSpacing->{0, 12}], Cell[StyleData["TheoremProofText", "Condensed"], CellMargins->{{8, 10}, {4, 4}}, TextJustification->1, ParagraphSpacing->{0, 4}], Cell[StyleData["TheoremProofText", "Printout"], CellMargins->{{52, 0}, {4, 4}}, TextJustification->1, ParagraphSpacing->{0, 6}] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["NumberedEquation"], CellMargins->{{62, 10}, {Inherited, Inherited}}, CellFrameLabels->{{None, Cell[ TextData[ {"(", CounterBox[ "Chapter"], ".", CounterBox[ "NumberedEquation"], ")"}]]}, {None, None}}, DefaultFormatType->DefaultInputFormatType, TextAlignment->Center, CounterIncrements->"NumberedEquation", FormatTypeAutoConvert->False], Cell[StyleData["NumberedEquation", "Presentation"], CellMargins->{{74, 10}, {Inherited, Inherited}}], Cell[StyleData["NumberedEquation", "Condensed"], CellMargins->{{52, 10}, {Inherited, Inherited}}], Cell[StyleData["NumberedEquation", "Printout"], CellMargins->{{54, 0}, {Inherited, Inherited}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["Equation"], CellMargins->{{62, 10}, {Inherited, Inherited}}, DefaultFormatType->DefaultInputFormatType, TextAlignment->Center, FormatTypeAutoConvert->False], Cell[StyleData["Equation", "Presentation"], CellMargins->{{74, 10}, {Inherited, Inherited}}], Cell[StyleData["Equation", "Condensed"], CellMargins->{{52, 10}, {Inherited, Inherited}}], Cell[StyleData["Equation", "Printout"], CellMargins->{{54, 0}, {Inherited, Inherited}}] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["NumberedFigure"], CellMargins->{{0, 0}, {0, 24}}, CellFrameLabels->{{None, None}, {Cell[ TextData[ {"Figure ", CounterBox[ "Chapter"], ".", CounterBox[ "NumberedFigure"]}]], None}}, TextAlignment->Center, CounterIncrements->"NumberedFigure", FormatTypeAutoConvert->False], Cell[StyleData["NumberedFigure", "Presentation"]], Cell[StyleData["NumberedFigure", "Condensed"]], Cell[StyleData["NumberedFigure", "Printout"]] }, Open ]], Cell[CellGroupData[{ Cell[StyleData["Caption"], CellMargins->{{72, 72}, {24, 0}}, PageBreakAbove->False, PageBreakWithin->False, TextAlignment->Center, Hyphenation->True, HyphenationOptions->{"HyphenationCharacter"->"\[Hyphen]"}, FontSlant->"Italic"], Cell[StyleData["Caption", "Presentation"]], Cell[StyleData["Caption", "Condensed"]], Cell[StyleData["Caption", "Printout"]] }, Closed]] }, Open ]], Cell[CellGroupData[{ Cell["Styles for Headers and Footers", "Section"], Cell[StyleData["Header"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontSlant->"Italic"], Cell[StyleData["Footer"], CellMargins->{{0, 0}, {0, 4}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->6], Cell[StyleData["PageNumber"], CellMargins->{{0, 0}, {4, 1}}, StyleMenuListing->None, FontFamily->"Helvetica", FontSize->9, FontWeight->"Bold"] }, Open ]], 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->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`NotebookLocate[ #2]}]&), Active->True, ButtonFrame->"None", ButtonNote->ButtonData}], Cell[StyleData["Hyperlink", "Presentation"]], Cell[StyleData["Hyperlink", "Condensed"]], Cell[StyleData["Hyperlink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, 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->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "MainBook", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["MainBookLink", "Presentation"]], Cell[StyleData["MainBookLink", "Condensed"]], Cell[StyleData["MainBookLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["AddOnsLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "AddOns", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["AddOnsLink", "Presentation"]], Cell[StyleData["AddOnsLink", "Condensed"]], Cell[StyleData["AddOnLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["RefGuideLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontFamily->"Courier", FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "RefGuideLink", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["RefGuideLink", "Presentation"]], Cell[StyleData["RefGuideLink", "Condensed"]], Cell[StyleData["RefGuideLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["GettingStartedLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "GettingStarted", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["GettingStartedLink", "Presentation"]], Cell[StyleData["GettingStartedLink", "Condensed"]], Cell[StyleData["GettingStartedLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]], Cell[CellGroupData[{ Cell[StyleData["OtherInformationLink"], StyleMenuListing->None, ButtonStyleMenuListing->Automatic, FontColor->GrayLevel[1], Background->RGBColor[1, 0.4, 0], ButtonBoxOptions->{ButtonFunction:>(FrontEndExecute[ { FrontEnd`HelpBrowserLookup[ "OtherInformation", #]}]&), Active->True, ButtonFrame->"None"}], Cell[StyleData["OtherInformationLink", "Presentation"]], Cell[StyleData["OtherInformationLink", "Condensed"]], Cell[StyleData["OtherInformationLink", "Printout"], FontColor->GrayLevel[0], Background->GrayLevel[1]] }, Closed]] }, 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->{ "CHA polyhedral"->{ Cell[1727, 52, 143, 2, 272, "Chapter", CounterAssignments->{{"Chapter", 6}}, CellTags->"CHA polyhedral"]} } *) (*CellTagsIndex CellTagsIndex->{ {"CHA polyhedral", 102136, 2613} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1727, 52, 143, 2, 272, "Chapter", CounterAssignments->{{"Chapter", 6}}, CellTags->"CHA polyhedral"], Cell[1873, 56, 635, 11, 103, "Text"], Cell[2511, 69, 537, 10, 103, "Text"], Cell[3051, 81, 174, 3, 41, "Text"], Cell[CellGroupData[{ Cell[3250, 88, 74, 0, 71, "Section"], Cell[3327, 90, 993, 34, 103, "Text"], Cell[4323, 126, 754, 32, 72, "Text"], Cell[5080, 160, 195, 6, 41, "Text"], Cell[5278, 168, 874, 14, 150, "Input", InitializationCell->True], Cell[6155, 184, 52, 0, 41, "Text"], Cell[CellGroupData[{ Cell[6232, 188, 166, 3, 50, "Input"], Cell[6401, 193, 130, 3, 49, "Output"] }, Open ]], Cell[6546, 199, 109, 3, 41, "Text"], Cell[6658, 204, 527, 8, 110, "Input", InitializationCell->True], Cell[7188, 214, 88, 2, 41, "Text"], Cell[CellGroupData[{ Cell[7301, 220, 105, 2, 70, "Input"], Cell[7409, 224, 132, 3, 49, "Output"], Cell[7544, 229, 132, 3, 49, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[7713, 237, 60, 0, 51, "Subsubsection"], Cell[7776, 239, 1049, 19, 90, "Input", InitializationCell->True], Cell[8828, 260, 1029, 18, 210, "Input", InitializationCell->True], Cell[9860, 280, 1138, 22, 210, "Input", InitializationCell->True] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[11047, 308, 95, 2, 51, "Section"], Cell[11145, 312, 629, 23, 78, "Text"], Cell[CellGroupData[{ Cell[11799, 339, 2823, 49, 533, "Input", InitializationCell->True], Cell[14625, 390, 179, 3, 24, "Message"], Cell[14807, 395, 185, 3, 24, "Message"] }, Open ]], Cell[CellGroupData[{ Cell[15029, 403, 177, 3, 50, "Input"], Cell[15209, 408, 130, 3, 49, "Output"] }, Open ]], Cell[15354, 414, 127, 5, 41, "Text"], Cell[CellGroupData[{ Cell[15506, 423, 64, 1, 50, "Input"], Cell[15573, 426, 132, 3, 49, "Output"] }, Open ]], Cell[15720, 432, 486, 13, 72, "Text"], Cell[16209, 447, 2995, 56, 550, "Input", InitializationCell->True], Cell[19207, 505, 66, 0, 41, "Text"], Cell[CellGroupData[{ Cell[19298, 509, 198, 3, 50, "Input"], Cell[19499, 514, 130, 3, 49, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[19678, 523, 91, 2, 51, "Section"], Cell[CellGroupData[{ Cell[19794, 529, 48, 0, 51, "Subsubsection"], Cell[19845, 531, 362, 6, 72, "Text"], Cell[20210, 539, 5842, 89, 770, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[26077, 632, 253, 6, 70, "Input"], Cell[26333, 640, 132, 3, 49, "Output"], Cell[26468, 645, 132, 3, 49, "Output"] }, Open ]], Cell[26615, 651, 47, 0, 41, "Text"], Cell[26665, 653, 2607, 42, 350, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[29297, 699, 247, 6, 70, "Input"], Cell[29547, 707, 132, 3, 49, "Output"], Cell[29682, 712, 132, 3, 49, "Output"] }, Open ]], Cell[29829, 718, 130, 3, 41, "Text"], Cell[29962, 723, 5223, 77, 630, "Input"], Cell[CellGroupData[{ Cell[35210, 804, 234, 5, 70, "Input"], Cell[35447, 811, 132, 3, 49, "Output"], Cell[35582, 816, 132, 3, 49, "Output"] }, Open ]], Cell[35729, 822, 356, 6, 72, "Text"], Cell[36088, 830, 3925, 59, 550, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[40038, 893, 417, 8, 70, "Input"], Cell[40458, 903, 132, 3, 49, "Output"], Cell[40593, 908, 132, 3, 49, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[40774, 917, 33, 0, 51, "Subsubsection"], Cell[40810, 919, 232, 4, 72, "Text"], Cell[41045, 925, 2603, 36, 370, "Input"], Cell[CellGroupData[{ Cell[43673, 965, 230, 5, 70, "Input"], Cell[43906, 972, 132, 3, 49, "Output"], Cell[44041, 977, 132, 3, 49, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[44222, 986, 49, 0, 51, "Subsubsection"], Cell[44274, 988, 112, 3, 41, "Text"], Cell[44389, 993, 819, 14, 130, "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[45257, 1013, 76, 0, 51, "Section"], Cell[CellGroupData[{ Cell[45358, 1017, 113, 3, 51, "Subsubsection"], Cell[45474, 1022, 656, 23, 72, "Text"], Cell[46133, 1047, 1840, 35, 244, "Input", InitializationCell->True] }, Open ]], Cell[CellGroupData[{ Cell[48010, 1087, 44, 0, 51, "Subsubsection"], Cell[48057, 1089, 72, 0, 41, "Text"], Cell[48132, 1091, 167, 3, 50, "Input", InitializationCell->True], Cell[48302, 1096, 76, 0, 41, "Text"], Cell[CellGroupData[{ Cell[48403, 1100, 342, 5, 70, "Input"], Cell[48748, 1107, 130, 3, 49, "Output"], Cell[48881, 1112, 130, 3, 49, "Output"] }, Open ]], Cell[49026, 1118, 76, 0, 41, "Text"], Cell[CellGroupData[{ Cell[49127, 1122, 417, 8, 70, "Input"], Cell[49547, 1132, 132, 3, 49, "Output"], Cell[49682, 1137, 132, 3, 49, "Output"] }, Open ]], Cell[49829, 1143, 64, 0, 41, "Text"], Cell[49896, 1145, 252, 4, 70, "Input", InitializationCell->True], Cell[50151, 1151, 91, 2, 41, "Text"], Cell[CellGroupData[{ Cell[50267, 1157, 415, 8, 70, "Input"], Cell[50685, 1167, 132, 3, 49, "Output"], Cell[50820, 1172, 132, 3, 49, "Output"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[51001, 1181, 37, 0, 51, "Subsubsection"], Cell[51041, 1183, 211, 4, 41, "Text"], Cell[CellGroupData[{ Cell[51277, 1191, 475, 8, 110, "Input"], Cell[51755, 1201, 132, 3, 49, "Output"], Cell[51890, 1206, 132, 3, 49, "Output"] }, Open ]], Cell[52037, 1212, 47, 0, 41, "Text"], Cell[52087, 1214, 1114, 19, 170, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[53226, 1237, 455, 8, 110, "Input"], Cell[53684, 1247, 339, 9, 49, "Output"] }, Open ]], Cell[54038, 1259, 49, 0, 41, "Text"], Cell[54090, 1261, 1376, 23, 210, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[55491, 1288, 459, 8, 110, "Input"], Cell[55953, 1298, 339, 9, 49, "Output"] }, Open ]], Cell[56307, 1310, 48, 0, 41, "Text"], Cell[56358, 1312, 1502, 23, 250, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[57885, 1339, 459, 8, 110, "Input"], Cell[58347, 1349, 339, 9, 49, "Output"] }, Open ]], Cell[58701, 1361, 133, 3, 41, "Text"], Cell[58837, 1366, 13881, 207, 1730, "Input", InitializationCell->True], Cell[CellGroupData[{ Cell[72743, 1577, 370, 7, 70, "Input"], Cell[73116, 1586, 132, 3, 49, "Output"], Cell[73251, 1591, 132, 3, 49, "Output"] }, Open ]] }, Open ]] }, Closed]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)