(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.1' 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[ 1791523, 52388]*) (*NotebookOutlinePosition[ 1792207, 52412]*) (* CellTagsIndexPosition[ 1792163, 52408]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell["Interactive Illustrations for Geometric Modelling", "Title"], Cell[TextData[{ "implemented 2005 with ", StyleBox["Mathematica", FontSlant->"Italic"], " and LiveGraphics3D by Martin Kraus (martin_kraus_germany@yahoo.com)" }], "Subtitle"], Cell[TextData[{ "This notebook contains ", StyleBox["Mathematica", FontSlant->"Italic"], " source code producing Graphics3D objects suitable for the Java applet \ LiveGraphics3D. (In order to interact with these graphics you have to have \ access to the applet, which is free for non-commercial purposes.) The \ graphics correspond to figures from the book \"Curves and Surfaces for CAGD \ \[LongDash] A Practical Guide\", 5th ed. by Gerald Farin. The goal is to \ present and interact with these figures in a course on geometric modeling and \ animation taught in the winter term 2005/2006 at the University of \ Stuttgart." }], "Text"], Cell["\<\ Some of the goals in the implementation of interactive versions of \ these figures are: \[LongDash] merging of separate static figures in one interactive figure \[LongDash] intuitive interaction to show dependencies \[LongDash] consistency of notation LiveGraphics3D has several limitations; thus, another important goal is to \ identify their relevance and propose solutions for some of them. \ \>", "Text"], Cell[TextData[{ "If you have questions about the ", StyleBox["Mathematica", FontSlant->"Italic"], " code, LiveGraphics3D, or the implementation of any of the figures, please \ e-mail martin_kraus_germany @ yahoo.com . If you think that this code \ implements an incorrect figure from the book, I would also be interested in \ your description of the error. " }], "Text"], Cell[CellGroupData[{ Cell["Lessons Learned", "Section"], Cell[CellGroupData[{ Cell["Graphics3D objects for LiveGraphics3D in general", "Subsubsection"], Cell["\<\ \[LongDash] always construct graphics in three dimensions (reuse of \ code, etc.)\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["parametric Graphics3D objects for LiveGraphics3D", "Subsubsection"], Cell[TextData[{ "\[LongDash] if a vector-valued variable is used, define an automatic(!) \ rule to convert it into a list of three components (important for functions \ which expect vectors (e.g. Cross), even more important for functions that are \ Listable (e.g. Plus: for a vector-valued symbol \"a\", the expression \ \"a+{1,0,0}\" should not be evaluated to \"{1+a, a, a}\").\n\[LongDash] use \ Evaluate around arguments of functions with attributes HoldFirst, HoldRest, \ HoldFirst, etc. (e.g If) \n\[LongDash] define lists independentVariables and \ dependentVariables that correspond to the parameters of LiveGraphics3D\n\ \[LongDash] remember that dependentVariables are evaluated sequentially; \ therefore, avoid side effects by introducing new (temporary) variables (e.g. \ \"{ax -> ax / Sqrt[ax*ax+ay*ay+az*az], ay -> ay / Sqrt[ax*ax + ay*ay + \ az*az], az -> az / Sqrt[ax*ax + ay*ay + az*az]}\" will not normalize \"{ax, \ ay, az}\". Instead use \"{aLength -> Sqrt[ax*ax + ay*ay + az*az], ax -> ax / \ aLength, ay -> ay / aLength, az -> az / aLength}\").\n\[LongDash] use \ \"Graphics3D[...] //. Join[independentVariables, dependentVariables]\" to \ produce an object that is displayable in ", StyleBox["Mathematica", FontSlant->"Italic"], " (but note that reassignments of independent variables are ignored this \ way).\n\[LongDash] define new variables for the arguments and the results of \ complex symbolic computations (e.g. solutions of parametrized linear equation \ systems)" }], "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Functions for Preparing Graphics3D Objects", "Section"], Cell[CellGroupData[{ Cell["Functions for Writing the Input File", "Subsection"], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{ StyleBox[\(LiveForm[graphics_, animOpts___] := Module[{graphics3d = Switch[graphics, _ContourGraphics, Graphics3D[ SurfaceGraphics[graphics]], _DensityGraphics, Graphics3D[ SurfaceGraphics[graphics]], _SurfaceGraphics, Graphics3D[graphics], _, graphics] //. SequenceForm[x___] \[RuleDelayed] StringForm[StringJoin[Table["\<``\>", {Length[{x}]}]], x]}, Switch[ graphics3d, _List, \(HoldForm[ShowAnimation]\)[ Map[LiveForm, graphics3d], InputForm[N[Flatten[{animOpts}]]]], _, InputForm[N[graphics3d]]]];\), FontFamily->"Courier", FontSize->13], "\[IndentingNewLine]"}], "\[IndentingNewLine]", \(WriteLiveForm[ filename_, graphics_, animOpts___] := Module[{ps, x}, ps = Unprotect[Real]; Format[x_Real, InputForm] := OutputForm[ NumberForm[x, 5, NumberFormat \[Rule] \((If[#3 \[Equal] "\<\>", #1, SequenceForm[#1, "\<*^\>", #3]] &)\)]]; Protect @@ ps; \[IndentingNewLine]WriteString[filename, ToString[LiveForm[graphics, animOpts], CharacterEncoding \[Rule] None]]; Close[filename]; \[IndentingNewLine]ps = Unprotect[Real]; Format[x_Real, InputForm] =. ; Protect @@ ps;];\)}], "Input", InitializationCell->True], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(LiveForm\\)\\\" is similar to existing \ symbol \\\"\\!\\(LineForm\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Functions for Writing the HTML File", "Subsection"], Cell[BoxData[ \(\(WriteHtmlPage[filename_, text_, inputfile_, width_, height_, independentVariables_, dependentVariables_, params_] := Module[{}, WriteString[ filename, "\<\n\n\>" <> ToString[ text] <> "\<" <> ToString[width] <> "\< HEIGHT=\>" <> ToString[height] <> "\< ALIGN=LEFT>\n\>" <> params <> "\<\n" <> ToString[ InputForm[ N[independentVariables]]] <> "\<\">\n" <> ToString[InputForm[N[dependentVariables]]] <> "\<\">\n \n " <> inputfile <> "\<\">\n\n\>"]; Close[filename];];\)\)], "Input", InitializationCell->True] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Global Settings", "Section"], Cell[BoxData[ \(\(newTextStyle = {FontFamily \[Rule] "\", FontSize \[Rule] 48};\)\)], "Input", InitializationCell->True] }, Open ]], Cell[CellGroupData[{ Cell["Symbols", "Section"], Cell[CellGroupData[{ Cell["Overview", "Subsubsection"], Cell["\<\ These symbols represent particular variables from the book Gerald \ Farin, \"Curves and Surfaces for CAGD\" using StyleForm, StringForm, \ Subscript, Superscript, and Subsuperscript. The symbols should be used in \ Text primitives inside Graphics3D objects and can then be converted using \ toTextPrimitivesRules to Text primitives that are understood by \ LiveGraphics3D.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Implementation", "Subsubsection"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(symbolItalic[x_] := StyleForm[ToString[x], FontSlant \[Rule] "\"];\)\), "\[IndentingNewLine]", \(\(symbolBold[x_] := StyleForm[ToString[x], FontWeight \[Rule] "\"];\)\), "\[IndentingNewLine]", \(\(symbolRoman[x_] := ToString[x];\)\), "\[IndentingNewLine]", \(\(rmA := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmB := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmC := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmD := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmE := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmF := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmG := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmH := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmI := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmJ := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmK := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmM := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmN := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmO := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmX := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmY := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(rmZ := symbolRoman["\"];\)\), "\[IndentingNewLine]", \(\(itB := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itH := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itU := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itN := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(ita := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itb := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itc := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itd := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(iti := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itf := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itn := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(its := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itt := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itu := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itv := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(itw := symbolItalic["\"];\)\), "\[IndentingNewLine]", \(\(bfa := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfb := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfc := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfd := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfi := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfl := symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfm := symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfn := symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfp := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfq := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bft := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfu := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfv := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(\(bfw := \ symbolBold["\"];\)\), "\[IndentingNewLine]", \(bfx := \ symbolBold["\"]\), "\[IndentingNewLine]", \(\(bfxu := Subscript[bfx, itu];\)\), "\[IndentingNewLine]", \(\(bfxv := Subscript[bfx, itv];\)\), "\[IndentingNewLine]", \(\(taui[i_] := Subscript["\<\[Tau]\>", i];\)\), "\[IndentingNewLine]", \(\(itBin[i_, n_] := Subsuperscript[itB, i, n];\)\), "\[IndentingNewLine]", \(\(itBinu[i_, n_, u_] := StringForm["\<``(``)\>", Subsuperscript[itB, i, n], u];\)\), "\[IndentingNewLine]", \(\(itHi[i_] := Subscript[itH, i];\)\), "\[IndentingNewLine]", \(\(itHin[i_, n_] := Subsuperscript[itH, i, n];\)\), "\[IndentingNewLine]", \(itHinu[i_, n_, u_] := StringForm["\<``(``)\>", Subsuperscript[itH, i, n], u]; itUin[i_, n_] := Subsuperscript[itU, i, n];\), "\[IndentingNewLine]", \(\(itNin[i_, n_] := Subsuperscript[itN, i, n];\)\), "\[IndentingNewLine]", \(\(itti[i_] := Subscript[itt, i];\)\), "\[IndentingNewLine]", \(\(itbi[i_] := Subscript[itb, i];\)\), "\[IndentingNewLine]", \(\(itui[i_] := Subscript[itu, i];\)\), "\[IndentingNewLine]", \(\(bfli[i_] := StringForm["\<``(``)\>", bfl, i];\)\), "\[IndentingNewLine]", \(\(bfmi[i_] := Subscript[bfm, i];\)\), "\[IndentingNewLine]", \(\(bfci[i_] := Subscript[bfc, i];\)\), "\[IndentingNewLine]", \(\(bfdi[i_] := Subscript[bfd, i];\)\), "\[IndentingNewLine]", \(\(bfbi[i_] := Subscript[bfb, i];\)\), "\[IndentingNewLine]", \(\(bfbst[s_, t_] := StringForm["\<``[``,``]\>", bfb, s, t];\)\), "\[IndentingNewLine]", \(\(bfpi[i_] := Subscript[bfp, i];\)\), "\[IndentingNewLine]", \(\(bfpir[i_, r_] := Subsuperscript[bfp, i, r];\)\), "\[IndentingNewLine]", \(\(bfbt[t_] := StringForm["\<``(``)\>", bfb, t];\)\), "\[IndentingNewLine]", \(\(bfb1[t1_] := StringForm["\<``[``]\>", bfb, t1];\)\), "\[IndentingNewLine]", \(\(bfb2[t1_, t2_] := StringForm["\<``[``,``]\>", bfb, t1, t2];\)\), "\[IndentingNewLine]", \(bfb3[t1_, t2_, t3_] := StringForm["\<``[``,``,``]\>", bfb, t1, t2, t3]; bfb3spaced[t1_, t2_, t3_] := StringForm["\<``[``,``,``]\>", bfb, t1, t2, t3];\), "\[IndentingNewLine]", \(\(bfbi[i_] := Subscript[bfb, i];\)\), "\[IndentingNewLine]", \(\(bfbir[i_, r_] := Subsuperscript[bfb, i, r];\)\), "\[IndentingNewLine]", \(\(bfbirt[i_, r_, t_] := StringForm["\<``(``)\>", Subsuperscript[bfb, i, r], t];\)\), "\[IndentingNewLine]", \(\(bfbir1[i_, r_, t1_] := StringForm["\<``[``]\>", Subsuperscript[bfb, i, r], t1];\)\), "\[IndentingNewLine]", \(\(bfbir2[i_, r_, t1_, t2_] := StringForm["\<``[``,``]\>", Subsuperscript[bfb, i, r], t1, t2];\)\), "\[IndentingNewLine]", \(\(bfbir3[i_, r_, t1_, t2_, t3_] := StringForm["\<``[``,``,``]\>", Subsuperscript[bfb, i, r], t1, t2, t3];\)\), "\[IndentingNewLine]", \(\(symbolseq[x__] := StringForm[StringJoin[Table["\<``\>", {Length[List[x]]}]], x];\)\), "\[IndentingNewLine]", \(\)}], "Input", InitializationCell->True], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itb\\)\\\" is similar to existing symbol \ \\\"\\!\\(itB\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itn\\)\\\" is similar to existing symbol \ \\\"\\!\\(itN\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itu\\)\\\" is similar to existing symbol \ \\\"\\!\\(itU\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfxu\\)\\\" is similar to existing symbols \ \\!\\({bfu, bfx}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfxv\\)\\\" is similar to existing symbols \ \\!\\({bfv, bfx, bfxu}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itBinu\\)\\\" is similar to existing symbol \ \\\"\\!\\(itBin\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itHi\\)\\\" is similar to existing symbols \ \\!\\({itH, iti}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itHin\\)\\\" is similar to existing symbols \ \\!\\({itBin, itHi}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itHinu\\)\\\" is similar to existing symbols \ \\!\\({itBinu, itHin}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itUin\\)\\\" is similar to existing symbols \ \\!\\({itBin, itHin}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itNin\\)\\\" is similar to existing symbols \ \\!\\({itBin, itHin, itUin}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itti\\)\\\" is similar to existing symbols \ \\!\\({iti, itt}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itbi\\)\\\" is similar to existing symbols \ \\!\\({itb, iti, itti}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(itui\\)\\\" is similar to existing symbols \ \\!\\({itbi, iti, itti, itu}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfli\\)\\\" is similar to existing symbols \ \\!\\({bfi, bfl}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfmi\\)\\\" is similar to existing symbols \ \\!\\({bfi, bfli, bfm}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfci\\)\\\" is similar to existing symbols \ \\!\\({bfc, bfi, bfli, bfmi}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfdi\\)\\\" is similar to existing symbols \ \\!\\({bfci, bfd, bfi, bfli, bfmi}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\ \\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfbi\\)\\\" is similar to existing symbols \ \\!\\({bfb, bfci, bfdi, bfi, bfli, bfmi}\\). \\!\\(\\*ButtonBox[\\\"More\ \[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfpi\\)\\\" is similar to existing symbols \ \\!\\({bfbi, bfci, bfdi, bfi, bfli, bfmi, bfp}\\). \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], \ "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfpir\\)\\\" is similar to existing symbol \ \\\"\\!\\(bfpi\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfbt\\)\\\" is similar to existing symbols \ \\!\\({bfb, bfbi, bfbst, bft}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfbir\\)\\\" is similar to existing symbols \ \\!\\({bfbi, bfpir}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bfbirt\\)\\\" is similar to existing symbol \ \\\"\\!\\(bfbir\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Rules for (In-)Dependent Variables", "Section"], Cell[CellGroupData[{ Cell["Overview", "Subsubsection"], Cell["\<\ These sets of rules are useful for vectors, in particular if the \ code for other (in)dependent Variables has to know whether a vector has been \ modified. \[LongDash] defineVector[\"a\"] clears a, ax, ay, az, axOld, ayOld, azOld, \ aIsNew and defines a={ax, ay, az} \[LongDash] independentVariablesForVector[\"a\", {x,y,z}] returns {ax->x, \ ay->y, az->z, axOld->x, ayOld->y, azOld->z} \[LongDash] dependentVariablesForVectorProlog[\"a\"] returns {aIsNew->(ax != \ axOld || ay != ayOld || az != azOld)} \[LongDash] dependentVariablesForVectorEpilog[\"a\"] returns {axOld -> ax, \ ayOld->ay, azOld -> az} \[LongDash] dependentVariablesForReassignmentOfVector[\"a\", expr] returns \ {ax->If[!aIsNew, ax, expr[[1]]], ay->..., az->...} \ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Implementation", "Subsubsection"], Cell[CellGroupData[{ Cell[BoxData[{ \(\(defineVector[name_String] := Module[{}, ClearAll[name, Evaluate[name <> "\"], Evaluate[name <> "\"], Evaluate[name <> "\"], Evaluate[name <> "\"], Evaluate[name <> "\"], Evaluate[name <> "\"], Evaluate[name <> "\"]]; Evaluate[Symbol[name]] = {Symbol[name <> "\"], Symbol[name <> "\"], Symbol[name <> "\"]}];\)\), "\[IndentingNewLine]", \(\(defineVector[list_List] := Map[defineVector, list];\)\), "\[IndentingNewLine]", \(\(independentVariablesForVector[name_String, value_List] := {Symbol[name <> "\"] \[Rule] value[\([1]\)], Symbol[name <> "\"] \[Rule] value[\([2]\)], Symbol[name <> "\"] \[Rule] value[\([3]\)], Symbol[name <> "\"] \[Rule] value[\([1]\)], Symbol[name <> "\"] \[Rule] value[\([2]\)], Symbol[name <> "\"] \[Rule] value[\([3]\)]};\)\), "\[IndentingNewLine]", \(\(dependentVariablesForVectorProlog[ name_String] := {Symbol[ name <> "\"] \[Rule] \((Symbol[name <> "\"] != Symbol[name <> "\"] || Symbol[name <> "\"] != Symbol[name <> "\"] || Symbol[name <> "\"] != Symbol[name <> "\"])\)};\)\), "\[IndentingNewLine]", \ \(\(dependentVariablesForVectorEpilog[ name_String] := {Symbol[name <> "\"] -> Symbol[name <> "\"], Symbol[name <> "\"] -> Symbol[name <> "\"], Symbol[name <> "\"] -> Symbol[name <> "\"]};\)\), "\[IndentingNewLine]", \(\(dependentVariablesForReassignmentOfVector[name_String, triggerName_String, expr_] := Module[{namex = Symbol[name <> "\"], namey = Symbol[name <> "\"], namez = Symbol[name <> "\"], \[IndentingNewLine]nameIsNew = Symbol[triggerName <> "\"]}, {namex \[Rule] If[Evaluate[\(! nameIsNew\)], Evaluate[namex], Evaluate[expr[\([1]\)]]], namey \[Rule] If[Evaluate[\(! nameIsNew\)], Evaluate[namey], Evaluate[expr[\([2]\)]]], namez \[Rule] If[Evaluate[\(! nameIsNew\)], Evaluate[namez], Evaluate[expr[\([3]\)]]]}];\)\), "\[IndentingNewLine]", \(\(dependentVariablesForVector[name_String, \ expr_] := Module[{namex = Symbol[name <> "\"], namey = Symbol[name <> "\"], namez = Symbol[name <> "\"]}, {namex \[Rule] expr[\([1]\)], namey \[Rule] expr[\([2]\)], namez \[Rule] expr[\([3]\)]}];\)\)}], "Input", InitializationCell->True], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(namex\\)\\\" is similar to existing symbol \ \\\"\\!\\(name\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(namey\\)\\\" is similar to existing symbols \ \\!\\({name, namex}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(namez\\)\\\" is similar to existing symbols \ \\!\\({name, namex, namey}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Figures To Do", "Section"], Cell["\<\ 14.1, 14.7, 15.1, 15.5, 15.6, 16.15, 16.16, 16.19, 17.1, 19.1, \ 19.2, 19.3, 19.4, 19.6, 22.1, 22.3, 22.6. \ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Figures for Chapter 1", "Section"], Cell[CellGroupData[{ Cell["Figure 1.2 and 1.3, page 3", "Subsection"], Cell["Input: three 2D points a, b, c", "Text"], Cell["\<\ Interaction: \[LongDash] if point a is moved, project it to unit sphere around b \[LongDash] if point c is moved, project it to unit sphere around b \[LongDash] if point b is moved, move a and c accordingly \ \>", "Text"], Cell["\<\ Output: \[LongDash] the fourth corner d of a parallelogram abcd \[LongDash] an arc from a to c with tagents ab and bc \[LongDash] \"wodden\" frame of parallelogram and strings within frame\ \>", \ "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(defineVector[{"\", "\", "\", "\"}]\)], "Input"], Cell[BoxData[ \({{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}, {dx, dy, dz}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(independentVariables = Flatten[{independentVariablesForVector["\", {0, 0, 0}], independentVariablesForVector["\", {0, 1, 0}], independentVariablesForVector["\", {1, 1, 0}]}]\)], "Input"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(ayOld\\)\\\" is similar to existing symbol \ \\\"\\!\\(axOld\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(azOld\\)\\\" is similar to existing symbols \ \\!\\({axOld, ayOld}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bxOld\\)\\\" is similar to existing symbol \ \\\"\\!\\(axOld\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(byOld\\)\\\" is similar to existing symbols \ \\!\\({ayOld, bxOld}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bzOld\\)\\\" is similar to existing symbols \ \\!\\({azOld, bxOld, byOld}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"stop"\), \(\(:\)\(\ \)\), "\<\"Further output of \ \\!\\(General :: \\\"spell\\\"\\) will be suppressed during this calculation. \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::stop\\\"]\\)\"\>"}]], \ "Message"], Cell[BoxData[ \({ax \[Rule] 0, ay \[Rule] 0, az \[Rule] 0, axOld \[Rule] 0, ayOld \[Rule] 0, azOld \[Rule] 0, bx \[Rule] 0, by \[Rule] 1, bz \[Rule] 0, bxOld \[Rule] 0, byOld \[Rule] 1, bzOld \[Rule] 0, cx \[Rule] 1, cy \[Rule] 1, cz \[Rule] 0, cxOld \[Rule] 1, cyOld \[Rule] 1, czOld \[Rule] 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dependentVariables = Flatten[{dependentVariablesForVectorProlog["\"], dependentVariablesForVectorProlog["\"], dependentVariablesForVectorProlog["\"], \ \[IndentingNewLine]dependentVariablesForReassignmentOfVector["\", \ "\", b - {bxOld, byOld, bzOld} + a], \[IndentingNewLine]\ dependentVariablesForReassignmentOfVector["\", "\", b - {bxOld, byOld, bzOld} + c], \[IndentingNewLine]abLength \[Rule] Sqrt[\((a - b)\) . \((a - b)\)], \[IndentingNewLine]cbLength \[Rule] Sqrt[\((c - b)\) . \((c - b)\)], \[IndentingNewLine]\ dependentVariablesForReassignmentOfVector["\", "\", \((b + \((a - b)\)/abLength)\)], dependentVariablesForReassignmentOfVector["\", "\", \((b + \ \((c - b)\)/ cbLength)\)], \ \[IndentingNewLine]dependentVariablesForVector["\", \((a + c - b)\)], \[IndentingNewLine]dependentVariablesForVectorEpilog["\ \"], dependentVariablesForVectorEpilog["\"], dependentVariablesForVectorEpilog["\"]}]\)], "Input"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(cbLength\\)\\\" is similar to existing \ symbol \\\"\\!\\(abLength\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(bIsNew\\)\\\" is similar to existing symbol \ \\\"\\!\\(aIsNew\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(cIsNew\\)\\\" is similar to existing symbols \ \\!\\({aIsNew, bIsNew}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ \({aIsNew \[Rule] ax \[NotEqual] axOld || ay \[NotEqual] ayOld || az \[NotEqual] azOld, bIsNew \[Rule] bx \[NotEqual] bxOld || by \[NotEqual] byOld || bz \[NotEqual] bzOld, cIsNew \[Rule] cx \[NotEqual] cxOld || cy \[NotEqual] cyOld || cz \[NotEqual] czOld, ax \[Rule] If[\(! bIsNew\), ax, ax + bx - bxOld], ay \[Rule] If[\(! bIsNew\), ay, ay + by - byOld], az \[Rule] If[\(! bIsNew\), az, az + bz - bzOld], cx \[Rule] If[\(! bIsNew\), cx, bx - bxOld + cx], cy \[Rule] If[\(! bIsNew\), cy, by - byOld + cy], cz \[Rule] If[\(! bIsNew\), cz, bz - bzOld + cz], abLength \[Rule] \@\(\((ax - bx)\)\^2 + \((ay - by)\)\^2 + \((az - \ bz)\)\^2\), cbLength \[Rule] \@\(\((\(-bx\) + cx)\)\^2 + \((\(-by\) + cy)\)\^2 + \ \((\(-bz\) + cz)\)\^2\), ax \[Rule] If[\(! aIsNew\), ax, \(ax - bx\)\/abLength + bx], ay \[Rule] If[\(! aIsNew\), ay, \(ay - by\)\/abLength + by], az \[Rule] If[\(! aIsNew\), az, \(az - bz\)\/abLength + bz], cx \[Rule] If[\(! cIsNew\), cx, bx + \(\(-bx\) + cx\)\/cbLength], cy \[Rule] If[\(! cIsNew\), cy, by + \(\(-by\) + cy\)\/cbLength], cz \[Rule] If[\(! cIsNew\), cz, bz + \(\(-bz\) + cz\)\/cbLength], dx \[Rule] ax - bx + cx, dy \[Rule] ay - by + cy, dz \[Rule] az - bz + cz, axOld \[Rule] ax, ayOld \[Rule] ay, azOld \[Rule] az, bxOld \[Rule] bx, byOld \[Rule] by, bzOld \[Rule] bz, cxOld \[Rule] cx, cyOld \[Rule] cy, czOld \[Rule] cz}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(linePoints = Table[b + \((c - b)\)*\((0.9 - 0.8*Sin[i/6*Pi/2])\) + \((a - b)\)*\((0.9 - 0.8*Cos[i/6*Pi/2])\), {i, 0, 6}]; \), "\[IndentingNewLine]", \(lineBCs = Table[\((0.9 - 0.8*Sin[i/6*Pi/2])\), {i, 0, 6}]; \), "\[IndentingNewLine]", \(lineBAs = Table[\((0.9 - 0.8*Cos[i/6*Pi/2])\), {i, 0, 6}]; \)}], "Input"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(lineBAs\\)\\\" is similar to existing symbol \ \\\"\\!\\(lineBCs\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"] }, Open ]], Cell[BoxData[ \(chap1fig2 := Graphics3D[{{PointSize[0.04], RGBColor[0. , 1, 0. ], Point[a + {0, 0, 0.01}], Point[b + {0, 0, 0.01}], Point[c + {0, 0, 0.01}]}, {PointSize[0.02], GrayLevel[0. ], Point[d], Map[Point, linePoints], Map[Point[b + \((c - b)\)*#] &, lineBCs], Map[Point[b + \((c - b)\)*# + \((a - b)\)] &, lineBCs], Map[Point[b + \((a - b)\)*#] &, lineBAs], Map[Point[b + \((a - b)\)*# + \((c - b)\)] &, lineBAs]}, {Thickness[0.01], Line[{a, b, c, d, a}], Thickness[0.01], Line[linePoints], Thickness[0.0025], Map[Line[{b + \((c - b)\)*#, b + \((c - b)\)*# + \((a - b)\)}] &, lineBCs], Map[Line[{b + \((a - b)\)*#, b + \((a - b)\)*# + \((c - b)\)}] &, lineBAs]}, {Text[rmA, a, {1, 1}], Text[rmB, b, {1, \(-1\)}], Text[rmC, c, {\(-1\), \(-1\)}]}}, ViewPoint \[Rule] {0, 0, 4}, ViewVertical \[Rule] {0, 1, 0}, SphericalRegion \[Rule] True, PlotRange \[Rule] {{\(-0.1\), 1.7}, {\(-0.7\), 1.1}, {\(-0.1\), 0.1}}, Boxed \[Rule] False, Axes \[Rule] False, Ticks \[Rule] Automatic, AxesLabel \[Rule] {"\", "\", "\"}, TextStyle \[Rule] newTextStyle]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ chap1fig2 //. Join[independentVariables, dependentVariables]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics3D %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -0 1 0 1 [ [ 0 0 0 0 ] [ 1 1 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 1 L 0 1 L closepath clip newpath 0 g .0025 w [ ] 0 setdash .19166 .46146 m .57708 .46146 L s .19166 .54126 m .57708 .54126 L s .19166 .61563 m .57708 .61563 L s .19166 .67949 m .57708 .67949 L s .19166 .72849 m .57708 .72849 L s .19166 .75929 m .57708 .75929 L s .19166 .7698 m .57708 .7698 L s .2302 .80834 m .2302 .42292 L s .24071 .80834 m .24071 .42292 L s .27151 .80834 m .27151 .42292 L s .32051 .80834 m .32051 .42292 L s .38437 .80834 m .38437 .42292 L s .45874 .80834 m .45874 .42292 L s .53854 .80834 m .53854 .42292 L s .01 w .24071 .54126 m .2302 .46146 L s .27151 .61563 m .24071 .54126 L s .32051 .67949 m .27151 .61563 L s .38437 .72849 m .32051 .67949 L s .45874 .75929 m .38437 .72849 L s .53854 .7698 m .45874 .75929 L s .57708 .42292 m .19166 .42292 L s .57708 .80834 m .57708 .42292 L s .19166 .80834 m .57708 .80834 L s .19166 .42292 m .19166 .80834 L s .02 w .57708 .46146 Mdot .57708 .54126 Mdot .57708 .61563 Mdot .57708 .67949 Mdot .57708 .72849 Mdot .57708 .75929 Mdot .57708 .7698 Mdot .19166 .46146 Mdot .19166 .54126 Mdot .19166 .61563 Mdot .19166 .67949 Mdot .19166 .72849 Mdot .19166 .75929 Mdot .19166 .7698 Mdot .2302 .42292 Mdot .24071 .42292 Mdot .27151 .42292 Mdot .32051 .42292 Mdot .38437 .42292 Mdot .45874 .42292 Mdot .53854 .42292 Mdot .2302 .80834 Mdot .24071 .80834 Mdot .27151 .80834 Mdot .32051 .80834 Mdot .38437 .80834 Mdot .45874 .80834 Mdot .53854 .80834 Mdot .2302 .46146 Mdot .24071 .54126 Mdot .27151 .61563 Mdot .32051 .67949 Mdot .38437 .72849 Mdot .45874 .75929 Mdot .53854 .7698 Mdot .57708 .42292 Mdot 0 1 0 r .04 w .57719 .80877 Mdot .19123 .80877 Mdot .19123 .42281 Mdot 0 g gsave .19166 .42292 -99.625 -54 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (A) show 97.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .19166 .80834 -97 -4 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (B) show 95.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .57708 .80834 -61 -4 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (C) show 95.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{288, 288}, ImageMargins->{{43, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgkooooo000Fooooo`03ogMgMol0003o8B4Q017ooooo 00GoEEEEo`000?l0003o0000oc8bGooooo000aooooo`_o0?l01?ooool6o`0000Kooooo0ol0 000;ooooo`?o00004?ooool3o`0001;ooooo0ol0000Dooooo`?o00002?ooool3o`0007Wooooo000a ooooo`_o0?l00oooool8o`0000Cooooo1Ol00009ooooo`Go00003_ooool5o`00013ooooo1Ol0000B ooooo`Go00001_ooool5o`0007Sooooo000aooooo`_o0?l0K?l0001hooooo`00ooooo`Go0000 4?ooool5o`0001;ooooo1Ol00003ooooo`_o0?l0MOooool0037ooooo2ol0o`04ooooo`Ko00001_oo ool3o`0000_ooooo0ol0000@ooooo`?o00004_ooool3o`0001Cooooo0ol00004ooooo`_o0?l0MOoo ool003;ooooo2Ol0o`1Vooooo`Wo0?l0M_ooool003?ooooo1ol0o`1Xooooo`Oo0?l0Moooool003Co oooo1Ol0o`1Zooooo`Go0?l0N?ooool00?oooooo8Oooool00?oooooo8Oooool00?oooooo8Oooool0 0?oooooo8Oooool00?oooooo8Oooool00?oooooo8Oooool00?oooooo8Oooool001Kooooo4_l00000 1?lbooooo`05okZj^_l@413o0000ob4Q8Oo^k^h0Foooool001[ooooo1?l0000>ooooo`05oc8b<_l0 003o0000o`000?nHV9P0Noooool01OmEEEGo0000o`000?l0003oEEEE013ooooo00Cok^k^odA4A?l0 003oooooo`05oiRHV?l0003o0000o`000?m4A4@0N_ooool01OnY ZJWo0000o`000?l0003oA4A401?ooooo00?oIVIVolcoooo o`05omgMgOl0003o0000o`000?l@4100NOooool00oo^k^ko0000o`000002o`000003onk^k_oooooo oooo06kooooo000Jooooo`Co00003oooool4o`0007Wooooo00GoMgMgo`000?l0003o0000ogMgM`1a ooooo`006_ooool4o`0000oooooo1?l0001iooooo`05oa0@4?l0003o0000o`000?o^k^h0LOooool0 01[ooooo1?l0000>ooooo`03omgMgOl0003o000000;o0000N?ooool01Oo"], ImageRangeCache->{{{0, 287}, {287, 0}} -> {-5.00005*^-6, -5.00005*^-6, \ 0.00348436, 0.00348436}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(SetDirectory["\"]\)], "Input"], Cell[BoxData[ \("/Users/martin/Desktop/mmasources"\)], "Output"] }, Open ]], Cell[BoxData[ \(WriteLiveForm["\", chap1fig2]\)], "Input"], Cell[BoxData[ \(WriteHtmlPage["\", "\<Figures 1.2 and \ 1.3 [Farin 2002, page 3]\>", "\", 800, 500, independentVariables, \ dependentVariables, "\<\n\n\n\>"]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Figure 1.5, page 5", "Subsection"], Cell["Input: three 3D points a, b, c", "Text"], Cell["\<\ Interaction: \[LongDash] any movement in 3D\ \>", "Text"], Cell["\<\ Output: \[LongDash] the fourth corner d of a parallelogram abcd \[LongDash] an arc from a to c with tagents ab and bc\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(defineVector[{"\", \ "\", \ "\", "\"}]\)], "Input"], Cell[BoxData[ \({{ax, ay, az}, {bx, by, bz}, {cx, cy, cz}, {dx, dy, dz}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(independentVariables = Flatten[{independentVariablesForVector["\", {0, 0, 0}], independentVariablesForVector["\", {0, 1, 0}], independentVariablesForVector["\", {1, 1, 0}]}]\)], "Input"], Cell[BoxData[ \({ax \[Rule] 0, ay \[Rule] 0, az \[Rule] 0, axOld \[Rule] 0, ayOld \[Rule] 0, azOld \[Rule] 0, bx \[Rule] 0, by \[Rule] 1, bz \[Rule] 0, bxOld \[Rule] 0, byOld \[Rule] 1, bzOld \[Rule] 0, cx \[Rule] 1, cy \[Rule] 1, cz \[Rule] 0, cxOld \[Rule] 1, cyOld \[Rule] 1, czOld \[Rule] 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dependentVariables = Flatten[{\[IndentingNewLine]dependentVariablesForVector["\", \((a + c - b)\)]}]\)], "Input"], Cell[BoxData[ \({dx \[Rule] ax - bx + cx, dy \[Rule] ay - by + cy, dz \[Rule] az - bz + cz}\)], "Output"] }, Open ]], Cell[BoxData[ \(linePoints = Table[b + \((c - b)\)*\((1 - Sin[i/32*Pi/2])\) + \((a - b)\)*\((1 - Cos[i/32*Pi/2])\), {i, 0, 32}]; \)], "Input"], Cell[BoxData[ \(chap1fig5 := Graphics3D[{{PointSize[0.04], RGBColor[0. , 1, 0. ], Point[a], Point[b], Point[c]}, {PointSize[0.02], GrayLevel[0. ], Point[d]}, {Thickness[0.01], Line[{a, b, c}], Thickness[0.01], Line[linePoints], Thickness[0.005], Line[{a, d, c}]}}, ViewPoint \[Rule] {0, 0, 4}, ViewVertical \[Rule] {0, 1, 0}, SphericalRegion \[Rule] True, PlotRange \[Rule] {{\(-0.2\), 1.2}, {\(-0.2\), 1.2}, {\(-0.1\), 0.1}}, Boxed \[Rule] False, Axes \[Rule] False, Ticks \[Rule] Automatic, AxesLabel \[Rule] {"\", "\", "\"}, TextStyle \[Rule] newTextStyle]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ chap1fig5 //. Join[independentVariables, dependentVariables]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics3D %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -0 1 0 1 [ [ 0 0 0 0 ] [ 1 1 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 1 L 0 1 L closepath clip newpath 0 g .005 w [ ] 0 setdash .74726 .25274 m .74726 .74726 L s .25274 .25274 m .74726 .25274 L s .01 w .25333 .277 m .25274 .25274 L s .25512 .30121 m .25333 .277 L s .25809 .3253 m .25512 .30121 L s .26224 .34922 m .25809 .3253 L s .26756 .3729 m .26224 .34922 L s .27403 .39629 m .26756 .3729 L s .28165 .41934 m .27403 .39629 L s .29038 .44198 m .28165 .41934 L s .30022 .46417 m .29038 .44198 L s .31113 .48586 m .30022 .46417 L s .32309 .50697 m .31113 .48586 L s .33608 .52748 m .32309 .50697 L s .35006 .54733 m .33608 .52748 L s .36499 .56646 m .35006 .54733 L s .38084 .58484 m .36499 .56646 L s .39758 .60242 m .38084 .58484 L s .41516 .61916 m .39758 .60242 L s .43354 .63501 m .41516 .61916 L s .45267 .64994 m .43354 .63501 L s .47252 .66392 m .45267 .64994 L s .49303 .67691 m .47252 .66392 L s .51414 .68887 m .49303 .67691 L s .53583 .69978 m .51414 .68887 L s .55802 .70962 m .53583 .69978 L s .58066 .71835 m .55802 .70962 L s .60371 .72597 m .58066 .71835 L s .6271 .73244 m .60371 .72597 L s .65078 .73776 m .6271 .73244 L s .6747 .74191 m .65078 .73776 L s .69879 .74488 m .6747 .74191 L s .723 .74667 m .69879 .74488 L s .74726 .74726 m .723 .74667 L s .25274 .74726 m .74726 .74726 L s .25274 .25274 m .25274 .74726 L s .02 w .74726 .25274 Mdot 0 1 0 r .04 w .74726 .74726 Mdot .25274 .74726 Mdot .25274 .25274 Mdot % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{458, 458}, ImageMargins->{{48, 0}, {0, 2}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgo`3o0?ooooooDOooool006_o oooo4?l0o`3Hooooo`Go0000L_ooool006_ooooo4?l0o`3Gooooo`Oo0000LOooool006[ooooo4_l0 o`3Eooooo`Wo0000L?ooool006[ooooo4_l0o`3Eooooo`Wo0000L?ooool006[ooooo4_l0o`3No`00 073ooooo001Zoooooa;o0?l0g_l0001`ooooo`00J_oooolBo`3o0=Gooooo2Ol0001`ooooo`00J_oo oolBo`3o0=Kooooo1ol0001aooooo`00Joooool@o`3o0=Sooooo1Ol0001booooo`00Joooool@o`3o 0=Wooooo0_l0001dooooo`00K?ooool>o`3o0=[ooooo0_l0001dooooo`00KOoooolooooo`;o0000M?ooool0077o oooo1?l0000?ooool7o`000:3ooooo0_l0001dooooo`00LOooool4o`0003Wooooo 1ol0002Oooooo`;o0000M?ooool0077ooooo1?l0000jooooo`Oo0000W_ooool2o`0007Cooooo001a ooooo`Co0000>oooool8o`0009cooooo0_l0001dooooo`00LOooool4o`0003cooooo2?l0002Koooo o`;o0000M?ooool0077ooooo1?l0000mooooo`So0000V_ooool2o`0007Cooooo001aooooo`Co0000 ?_ooool8o`0009Wooooo0_l0001dooooo`00LOooool4o`00043ooooo1ol0002Hooooo`;o0000M?oo ool0077ooooo1?l00011ooooo`Oo0000Uoooool2o`0007Cooooo001aooooo`Co0000@_ooool7o`00 09Kooooo0_l0001dooooo`00LOooool4o`0004?ooooo2?l0002Dooooo`;o0000M?ooool0077ooooo 1?l00014ooooo`So0000Toooool2o`0007Cooooo001aooooo`Co0000AOooool8o`0009;ooooo0_l0 001dooooo`00LOooool4o`0004Kooooo2?l0002Aooooo`;o0000M?ooool0077ooooo1?l00018oooo o`Oo0000T?ooool2o`0007Cooooo001aooooo`Co0000BOooool7o`0008oooooo0_l0001dooooo`00 LOooool4o`0004[ooooo1ol0002>ooooo`;o0000M?ooool0077ooooo1?l0001;ooooo`Oo0000SOoo ool2o`0007Cooooo001aooooo`Co0000C?ooool8o`0008_ooooo0_l0001dooooo`00LOooool4o`00 04gooooo2?l0002:ooooo`;o0000M?ooool0077ooooo1?l0001>ooooo`So0000ROooool2o`0007Co oooo001aooooo`Co0000Coooool8o`0008Sooooo0_l0001dooooo`00LOooool4o`00057ooooo1ol0 0027ooooo`;o0000M?ooool0077ooooo1?l0001Booooo`Oo0000Q_ooool2o`0007Cooooo001aoooo o`Co0000Doooool7o`0008Gooooo0_l0001dooooo`00LOooool4o`0005Cooooo2?l00023ooooo`;o 0000M?ooool0077ooooo1?l0001Eooooo`So0000P_ooool2o`0007Cooooo001aooooo`Co0000E_oo ool9o`00083ooooo0_l0001dooooo`00LOooool4o`0005Oooooo2Ol0001oooooo`;o0000M?ooool0 077ooooo1?l0001Iooooo`Wo0000OOooool2o`0007Cooooo001aooooo`Co0000F_ooool9o`0007co oooo0_l0001dooooo`00LOooool4o`0005cooooo2Ol0001jooooo`;o0000M?ooool0077ooooo1?l0 001Mooooo`[o0000N?ooool2o`0007Cooooo001aooooo`Co0000Goooool9o`0007Oooooo0_l0001d ooooo`00LOooool4o`00063ooooo2_l0001eooooo`;o0000M?ooool0077ooooo1?l0001Rooooo`[o 0000Loooool2o`0007Cooooo001aooooo`Co0000I?ooool9o`0007;ooooo0_l0001dooooo`00LOoo ool4o`0006Gooooo2_l0001`ooooo`;o0000M?ooool0077ooooo1?l0001Wooooo`[o0000K_ooool2 o`0007Cooooo001aooooo`Co0000JOooool:o`0006cooooo0_l0001dooooo`00LOooool4o`0006[o oooo2_l0001[ooooo`;o0000M?ooool0077ooooo1?l0001/ooooo`[o0000JOooool2o`0007Cooooo 001aooooo`Co0000K_ooool:o`0006Oooooo0_l0001dooooo`00LOooool4o`00073ooooo2_l0001U ooooo`;o0000M?ooool0077ooooo1?l0001aooooo`_o0000Hoooool2o`0007Cooooo001aooooo`Co 0000Loooool;o`00067ooooo0_l0001dooooo`00LOooool4o`0007Gooooo2ol0001Oooooo`;o0000 M?ooool0077ooooo1?l0001gooooo`_o0000GOooool2o`0007Cooooo001aooooo`Co0000NOooool; o`0005_ooooo0_l0001dooooo`00LOooool4o`0007_ooooo3?l0001Hooooo`;o0000M?ooool0077o oooo1?l0001mooooo`co0000E_ooool2o`0007Cooooo001aooooo`Co0000Oooooolo`0004Cooooo0_l0001dooooo`00LOooool4 o`0008oooooo3ol00011ooooo`;o0000M?ooool0077ooooo1?l0002Boooooa3o0000?Oooool2o`00 07Cooooo001aooooo`Co0000UOoooolAo`0003Wooooo0_l0001dooooo`00LOooool4o`0009Sooooo 4Ol0000fooooo`;o0000M?ooool0073ooooo1_l0o`2Joooooa;o0000o`3o06kooooo001[oooooa3o0?l0 Y?oooolDo`0001[ooooo4?l0o`1]ooooo`00Joooool@o`3o0:Sooooo6Ol0000Aoooooa3o0?l0KOoo ool006[ooooo4_l0o`2Zooooob7o00001OoooolBo`3o06cooooo001Zoooooa;o0?l0d?l0000Bo`3o 06cooooo001Zoooooa;o0?l0d?l0000Bo`3o06cooooo001Zoooooa;o0?l0d?l0000Bo`3o06cooooo 001Zoooooa;o0?l0d?l0000Bo`3o06cooooo001Zoooooa;o0?l0d?oooolBo`3o06cooooo001[oooo oa3o0?l0d_ooool@o`3o06gooooo001[oooooa3o0?l0d_ooool@o`3o06gooooo001/ooooo`ko0?l0 e?ooool>o`3o06kooooo001]ooooo`co0?l0e_ooool"], ImageRangeCache->{{{0, 457}, {457, 0}} -> {-5.00005*^-6, -5.00005*^-6, \ 0.00218821, 0.00218821}}], Cell[BoxData[ TagBox[\(\[SkeletonIndicator] Graphics3D \[SkeletonIndicator]\), False, Editable->False]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(SetDirectory["\"]\)], "Input"], Cell[BoxData[ \("/Users/martin/Desktop/mmasources"\)], "Output"] }, Open ]], Cell[BoxData[ \(WriteLiveForm["\", chap1fig5]\)], "Input"], Cell[BoxData[ \(WriteHtmlPage["\", "\<Figure 1.5 \ [Farin 2002, page 5]\>", "\", 800, 500, independentVariables, \ dependentVariables, "\<\n\n\>"]\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Figure 1.10, page 8", "Subsection"], Cell["Input: four 3D points o, m, n, b", "Text"], Cell["\<\ Interaction: \[LongDash] any movement in 3D\ \>", "Text"], Cell["\<\ Output: \[LongDash] the remaining corners y, x, a, c of a parallelepiped \[LongDash] arcs from o to a, o to n, combination from o to b\ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(defineVector[{"\", "\", "\", "\", "\", "\", \ "\", "\"}]\)], "Input"], Cell[BoxData[ \({{ox, oy, oz}, {mx, my, mz}, {nx, ny, nz}, {bx, by, bz}, {xx, xy, xz}, {yx, yy, yz}, {ax, ay, az}, {cx, cy, cz}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(independentVariables = Flatten[{independentVariablesForVector["\", {0, 0, 0}], independentVariablesForVector["\", {0, 0, \(-1\)}], independentVariablesForVector["\", {0, 1, \(-1\)}], independentVariablesForVector["\", {1, 1, \(-1\)}]}]\)], "Input"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(oxOld\\)\\\" is similar to existing symbols \ \\!\\({axOld, bxOld, cxOld}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(oyOld\\)\\\" is similar to existing symbols \ \\!\\({ayOld, byOld, cyOld, oxOld}\\). \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\ \\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(ozOld\\)\\\" is similar to existing symbols \ \\!\\({azOld, bzOld, czOld, oxOld, oyOld}\\). \\!\\(\\*ButtonBox[\\\"More\ \[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"stop"\), \(\(:\)\(\ \)\), "\<\"Further output of \ \\!\\(General :: \\\"spell\\\"\\) will be suppressed during this calculation. \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::stop\\\"]\\)\"\>"}]], \ "Message"], Cell[BoxData[ \({ox \[Rule] 0, oy \[Rule] 0, oz \[Rule] 0, oxOld \[Rule] 0, oyOld \[Rule] 0, ozOld \[Rule] 0, mx \[Rule] 0, my \[Rule] 0, mz \[Rule] \(-1\), mxOld \[Rule] 0, myOld \[Rule] 0, mzOld \[Rule] \(-1\), nx \[Rule] 0, ny \[Rule] 1, nz \[Rule] \(-1\), nxOld \[Rule] 0, nyOld \[Rule] 1, nzOld \[Rule] \(-1\), bx \[Rule] 1, by \[Rule] 1, bz \[Rule] \(-1\), bxOld \[Rule] 1, byOld \[Rule] 1, bzOld \[Rule] \(-1\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dependentVariables = Flatten[{\[IndentingNewLine]dependentVariablesForVector["\", \((o + b - n)\)], dependentVariablesForVector["\", \((o + n - m)\)], dependentVariablesForVector["\", \((o + b - m)\)], dependentVariablesForVector["\", \((m + b - n)\)]}]\)], "Input"], Cell[BoxData[ \({xx \[Rule] bx - nx + ox, xy \[Rule] by - ny + oy, xz \[Rule] bz - nz + oz, yx \[Rule] \(-mx\) + nx + ox, yy \[Rule] \(-my\) + ny + oy, yz \[Rule] \(-mz\) + nz + oz, ax \[Rule] bx - mx + ox, ay \[Rule] by - my + oy, az \[Rule] bz - mz + oz, cx \[Rule] bx + mx - nx, cy \[Rule] by + my - ny, cz \[Rule] bz + mz - nz}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ \(maxI = 12; \), "\[IndentingNewLine]", \(linePointsA = Table[o + \((x - o)\)*\((1 - Sqrt[1 - \((i/maxI)\)^2])\) + \((y - o)\)* i/maxI, {i, 0, maxI}]; \), "\[IndentingNewLine]", \(linePointsN = Table[o + \((m - o)\)*Sqrt[1 - \((1 - i/maxI)\)^2] + \((y - o)\)* i/maxI, {i, 0, maxI}]; \), "\[IndentingNewLine]", \(linePointsB = Table[o + \((m - o)\)*Sqrt[1 - \((1 - i/maxI)\)^2] + \((y - o)\)* i/maxI + \((x - o)\)*\((1 - Sqrt[1 - \((i/maxI)\)^2])\), {i, 0, maxI}]; \), "\[IndentingNewLine]", \(linesA = Map[Line, Transpose[{linePointsB, linePointsA}]]; \), "\[IndentingNewLine]", \(linesN = Map[Line, Transpose[{linePointsB, \ linePointsN}]]; \), "\[IndentingNewLine]", \(maxI = 48; \), "\[IndentingNewLine]", \(linePointsAFull = Table[o + \((x - o)\)*\((1 - Sqrt[1 - \((i/maxI)\)^2])\) + \((y - o)\)* i/maxI, {i, 0, maxI}]; \), "\[IndentingNewLine]", \(linePointsNFull = Table[o + \((m - o)\)*Sqrt[1 - \((1 - i/maxI)\)^2] + \((y - o)\)* i/maxI, {i, 0, maxI}]; \), "\[IndentingNewLine]", \(linePointsBFull = Table[o + \((m - o)\)*Sqrt[1 - \((1 - i/maxI)\)^2] + \((y - o)\)* i/maxI + \((x - o)\)*\((1 - Sqrt[1 - \((i/maxI)\)^2])\), {i, 0, maxI}]; \)}], "Input"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linePointsA\\)\\\" is similar to existing \ symbol \\\"\\!\\(linePoints\\)\\\". \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], \ "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linePointsN\\)\\\" is similar to existing \ symbols \\!\\({linePoints, linePointsA}\\). \\!\\(\\*ButtonBox[\\\"More\ \[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linePointsB\\)\\\" is similar to existing \ symbols \\!\\({linePoints, linePointsA, linePointsN}\\). \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], \ "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linesN\\)\\\" is similar to existing symbol \ \\\"\\!\\(linesA\\)\\\". \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", \ ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell1"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linePointsNFull\\)\\\" is similar to \ existing symbol \\\"\\!\\(linePointsAFull\\)\\\". \\!\\(\\*ButtonBox[\\\"More\ \[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\\\", ButtonFrame->None, \ ButtonData:>\\\"General::spell1\\\"]\\)\"\>"}]], "Message"], Cell[BoxData[ RowBox[{\(General::"spell"\), \(\(:\)\(\ \)\), "\<\"Possible spelling \ error: new symbol name \\\"\\!\\(linePointsBFull\\)\\\" is similar to \ existing symbols \\!\\({linePointsAFull, linePointsNFull}\\). \ \\!\\(\\*ButtonBox[\\\"More\[Ellipsis]\\\", ButtonStyle->\\\"RefGuideLinkText\ \\\", ButtonFrame->None, ButtonData:>\\\"General::spell\\\"]\\)\"\>"}]], \ "Message"] }, Open ]], Cell[BoxData[ \(stretchedArc[o_, m_, n_, b_, t_] := o + \((m - o)\)*Sqrt[1 - \((1 - t)\)^2] + \((n - m)\)* t + \((b - n)\)*\((1 - Sqrt[1 - t^2])\); \)], "Input"], Cell[BoxData[ \(chap1fig10 := Graphics3D[{{PointSize[0.04], RGBColor[0. , 1, 0. ], Point[o], Point[m], Point[n], Point[b]}, {PointSize[0.02], GrayLevel[0. ], Point[x], Point[y], Point[a], Point[c]}, {Thickness[0.01], Line[linePointsBFull], Thickness[0.005], Line[linePointsAFull], Line[linePointsNFull], Thickness[0.0025], linesA, linesN, Thickness[0.005], Line[{o, y, n}], Line[{m, c, x, o}], Line[{x, a, y}], Line[{a, b, c}], Thickness[0.01], Line[{o, m, n, b}]}, {Text[rmO, o, {1.4, 1.4}], Text[rmY, y, {1.4, 1.4}], Text[rmX, x, {\(-1.4\), 1.4}], Text[rmZ, m, {1.4, 1.4}], Text[rmM, m, {\(-1.4\), \(-1.4\)}], Text[rmN, n, {\(-1.4\), 1.4}], Text[rmB, b, {\(-1.4\), \(-1.4\)}]}}, ViewPoint \[Rule] {\(-2\), 4, \(-3\)}, ViewVertical \[Rule] {\(-0.02\), 0, \(-1\)}, SphericalRegion \[Rule] True, PlotRange \[Rule] {{\(-0.2\), 1.2}, {\(-0.2\), 1.2}, {\(-1.2\), 0.2}}, Boxed \[Rule] False, Axes \[Rule] False, Ticks \[Rule] Automatic, AxesLabel \[Rule] {"\", "\", "\"}, TextStyle \[Rule] newTextStyle]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Show[ chap1fig10 //. Join[independentVariables, dependentVariables]]\)], "Input"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics3D %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations -0 1 0 1 [ [ 0 0 0 0 ] [ 1 1 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 1 L 0 1 L closepath clip newpath 0 g .005 w [ ] 0 setdash .58158 .48301 m .76495 .27717 L s .58158 .48301 m .24044 .39416 L s .59446 .8077 m .58158 .48301 L s .02 w .58158 .48301 Mdot .01 w .24044 .39416 m .22844 .72839 L s .005 w .24044 .39416 m .39829 .16869 L s .0025 w .24044 .39416 m .24044 .39416 L s .005 w .24044 .39416 m .24117 .454 L s .24044 .39416 m .24351 .38991 L s .01 w .24044 .39416 m .24125 .45402 L s 0 1 0 r .04 w .24044 .39416 Mdot 0 g .005 w .24351 .38991 m .24674 .38568 L s .24674 .38568 m .25015 .38148 L s .25015 .38148 m .25372 .37731 L s .0025 w .24947 .50566 m .25372 .37731 L s .005 w .25372 .37731 m .25746 .37316 L s .25746 .37316 m .26138 .36903 L s .26138 .36903 m .26547 .36494 L s .26547 .36494 m .26974 .36087 L s .0025 w .26441 .54109 m .26974 .36087 L s .005 w .26974 .36087 m .27418 .35683 L s .01 w .24125 .45402 m .2436 .47649 L s .005 w .24117 .454 m .24329 .47642 L s .27418 .35683 m .27881 .35283 L s .27881 .35283 m .28362 .34885 L s .28362 .34885 m .28862 .3449 L s .0025 w .28308 .56311 m .28862 .3449 L s .005 w .28862 .3449 m .29382 .34099 L s .79362 .61974 m .59446 .8077 L s .22844 .72839 m .59446 .8077 L s .02 w .59446 .8077 Mdot .005 w .29382 .34099 m .2992 .33711 L s .01 w .2436 .47649 m .24638 .49272 L s .005 w .24329 .47642 m .24566 .49254 L s .2992 .33711 m .30479 .33327 L s .30479 .33327 m .31058 .32946 L s .0025 w .30548 .5778 m .31058 .32946 L s .005 w .31058 .32946 m .31657 .3257 L s .31657 .3257 m .32278 .32197 L s .01 w .24638 .49272 m .24947 .50566 L s .005 w .24566 .49254 m .24819 .50534 L s .32278 .32197 m .32921 .31829 L s .32921 .31829 m .33586 .31465 L s .0025 w .33182 .58756 m .33586 .31465 L s .005 w .33586 .31465 m .34274 .31105 L s .0025 w .24947 .50566 m .24819 .50534 L s .01 w .24947 .50566 m .25284 .51648 L s .005 w .24819 .50534 m .25082 .51599 L s .34274 .31105 m .34987 .30751 L s .34987 .30751 m .35724 .30402 L s .35724 .30402 m .36487 .30058 L s .0025 w .36245 .5937 m .36487 .30058 L s .005 w .36487 .30058 m .37276 .2972 L s .01 w .25284 .51648 m .25646 .52578 L s .005 w .25082 .51599 m .25353 .52506 L s .37276 .2972 m .38094 .29389 L s .38094 .29389 m .3894 .29063 L s .3894 .29063 m .39817 .28745 L s .01 w .25646 .52578 m .26031 .5339 L s .005 w .25353 .52506 m .25631 .53293 L s .0025 w .39798 .59704 m .39817 .28745 L s .005 w .39817 .28745 m .40726 .28435 L s .76495 .27717 m .79362 .61974 L s .76495 .27717 m .39829 .16869 L s .68934 .26079 m .76495 .27717 L s .02 w .76495 .27717 Mdot .005 w .40726 .28435 m .41668 .28132 L s .41668 .28132 m .42647 .27838 L s .42647 .27838 m .43663 .27554 L s .01 w .26031 .5339 m .26441 .54109 L s .005 w .25631 .53293 m .25914 .53982 L s .0025 w .43928 .59827 m .43663 .27554 L s .005 w .43663 .27554 m .4472 .27279 L s .4472 .27279 m .45821 .27016 L s .45821 .27016 m .4697 .26766 L s .4697 .26766 m .4817 .26529 L s .0025 w .26441 .54109 m .25914 .53982 L s .01 w .26441 .54109 m .26873 .5475 L s .005 w .65585 .2569 m .68934 .26079 L s .0025 w .4879 .59806 m .4817 .26529 L s .005 w .4817 .26529 m .49428 .26307 L s .25914 .53982 m .26203 .54588 L s .49428 .26307 m .50749 .26102 L s .50749 .26102 m .52141 .25918 L s .62952 .25514 m .65585 .2569 L s .52141 .25918 m .53616 .25756 L s .0025 w .54677 .59735 m .53616 .25756 L s .005 w .53616 .25756 m .55186 .25621 L s .60699 .25449 m .62952 .25514 L s .55186 .25621 m .56869 .25519 L s .01 w .26873 .5475 m .27328 .55325 L s .0025 w .62336 .5982 m .60699 .25449 L s .005 w .58694 .25458 m .60699 .25449 L s .56869 .25519 m .58694 .25458 L s .26203 .54588 m .26497 .55125 L s .01 w .27328 .55325 m .27807 .55843 L s .005 w .26497 .55125 m .26795 .556 L s .01 w .27807 .55843 m .28308 .56311 L s .005 w .26795 .556 m .27097 .5602 L s .0025 w .28308 .56311 m .27097 .5602 L s .01 w .28308 .56311 m .28833 .56734 L s .005 w .27097 .5602 m .27403 .56392 L s .01 w .22844 .72839 m .39808 .52122 L s 0 1 0 r .04 w .22844 .72839 Mdot 0 g .01 w .28833 .56734 m .29381 .57118 L s .005 w .27403 .56392 m .27712 .56719 L s .01 w .29381 .57118 m .29952 .57465 L s .005 w .27712 .56719 m .28025 .57005 L s .01 w .29952 .57465 m .30548 .5778 L s .005 w .28025 .57005 m .28341 .57253 L s .0025 w .30548 .5778 m .28341 .57253 L s .01 w .30548 .5778 m .31168 .58064 L s .005 w .28341 .57253 m .2866 .57466 L s .01 w .31168 .58064 m .31814 .5832 L s .31814 .5832 m .32485 .5855 L s .005 w .2866 .57466 m .28983 .57645 L s .01 w .32485 .5855 m .33182 .58756 L s .005 w .28983 .57645 m .29308 .57793 L s .0025 w .33182 .58756 m .29636 .57912 L s .01 w .33182 .58756 m .33905 .5894 L s .005 w .29308 .57793 m .29636 .57912 L s .39829 .16869 m .39808 .52122 L s .02 w .39829 .16869 Mdot .01 w .33905 .5894 m .34657 .59102 L s .005 w .29636 .57912 m .29967 .58002 L s .01 w .34657 .59102 m .35436 .59245 L s .005 w .29967 .58002 m .30301 .58065 L s .01 w .35436 .59245 m .36245 .5937 L s .0025 w .36245 .5937 m .30977 .58114 L s .01 w .36245 .5937 m .37085 .59477 L s .005 w .30301 .58065 m .30638 .58102 L s .01 w .37085 .59477 m .37956 .59567 L s .005 w .30638 .58102 m .30977 .58114 L s .01 w .37956 .59567 m .3886 .59643 L s .005 w .30977 .58114 m .31318 .58102 L s .01 w .3886 .59643 m .39798 .59704 L s .0025 w .39798 .59704 m .32359 .57926 L s .01 w .39798 .59704 m .40771 .59752 L s .005 w .31318 .58102 m .31663 .58066 L s .01 w .40771 .59752 m .41783 .59788 L s .005 w .31663 .58066 m .32009 .58007 L s .01 w .41783 .59788 m .42835 .59812 L s .42835 .59812 m .43928 .59827 L s .005 w .32009 .58007 m .32359 .57926 L s .0025 w .43928 .59827 m .33779 .5739 L s .01 w .43928 .59827 m .45067 .59832 L s .39808 .52122 m .79362 .61974 L s .71224 .6049 m .79362 .61974 L s 0 1 0 r .04 w .79362 .61974 Mdot 0 g .01 w .45067 .59832 m .46254 .59829 L s .005 w .32359 .57926 m .3271 .57824 L s .01 w .46254 .59829 m .47494 .5982 L s .005 w .3271 .57824 m .33064 .577 L s .01 w .47494 .5982 m .4879 .59806 L s .0025 w .4879 .59806 m .35236 .56529 L s .01 w .4879 .59806 m .50149 .59788 L s .50149 .59788 m .51577 .59768 L s .005 w .33064 .577 m .33421 .57555 L s .01 w .67613 .60121 m .71224 .6049 L s .51577 .59768 m .53082 .5975 L s .53082 .5975 m .54677 .59735 L s .005 w .33421 .57555 m .33779 .5739 L s .0025 w .54677 .59735 m .36728 .5536 L s .01 w .54677 .59735 m .56375 .59729 L s .6477 .59928 m .67613 .60121 L s .56375 .59729 m .58196 .59735 L s .62336 .5982 m .6477 .59928 L s .58196 .59735 m .60168 .59761 L s .0025 w .62336 .5982 m .38252 .5389 L s .01 w .60168 .59761 m .62336 .5982 L s .005 w .33779 .5739 m .3414 .57204 L s .3414 .57204 m .34503 .56999 L s .34503 .56999 m .34869 .56773 L s .34869 .56773 m .35236 .56529 L s .35236 .56529 m .35606 .56265 L s .35606 .56265 m .35978 .55982 L s .35978 .55982 m .36352 .5568 L s .36352 .5568 m .36728 .5536 L s .36728 .5536 m .37106 .5502 L s .37106 .5502 m .37486 .54662 L s .37486 .54662 m .37868 .54286 L s .37868 .54286 m .38252 .5389 L s .38252 .5389 m .38638 .53476 L s .38638 .53476 m .39026 .53043 L s .39026 .53043 m .39416 .52592 L s .39416 .52592 m .39808 .52122 L s 0 1 0 r .04 w .39808 .52122 Mdot 0 g gsave .24044 .39416 -107.35 -64 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (O) show 97.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .39829 .16869 -107.35 -64 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Y) show 97.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .58158 .48301 -53.275 -64 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (X) show 97.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .22844 .72839 -100.975 -64 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Z) show 92.312 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .22844 .72839 -51.675 6 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (M) show 105.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .39808 .52122 -53.275 -64 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (N) show 97.625 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 .79362 .61974 -53.8 6 Mabsadd m 1 1 Mabs scale currentpoint translate 0 58 translate 1 -1 scale /g { setgray} bind def /k { setcmykcolor} bind def /p { gsave} bind def /r { setrgbcolor} bind def /w { setlinewidth} bind def /C { curveto} bind def /F { fill} bind def /L { lineto} bind def /rL { rlineto} bind def /P { grestore} bind def /s { stroke} bind def /S { show} bind def /N {currentpoint 3 -1 roll show moveto} bind def /Msf { findfont exch scalefont [1 0 0 -1 0 0 ] makefont setfont} bind def /m { moveto} bind def /Mr { rmoveto} bind def /Mx {currentpoint exch pop moveto} bind def /My {currentpoint pop exch moveto} bind def /X {0 rmoveto} bind def /Y {0 exch rmoveto} bind def 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (B) show 95.000 41.000 moveto %%IncludeResource: font Times-Roman %%IncludeFont: Times-Roman /Times-Roman findfont 48.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 % End of Graphics MathPictureEnd \ \>"], "Graphics", ImageSize->{508, 508}, ImageMargins->{{56, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgooooo`00Zoooool4o`000?ooooooC_ooool00:_o oooo1?l0003oooooodkooooo002[ooooo`Co0000oooooom>ooooo`00Zoooool4o`000?ooooooC_oo ool00:_ooooo1?l0003oooooodkooooo002[ooooo`Co0000oooooom>ooooo`00Zoooool4o`000?oo ooooC_ooool00:_ooooo1?l0003oooooodkooooo002Zooooo`03ojVYZOl0003o000000;o000000?o ZJVYooooooooool0oooooom;ooooo`00ZOooool00oo^k^ko0000o`000003o`000003oa0@4?o^k^ko oooo0?ooooooBoooool00:Wooooo00?oA4A4o`000?l000000_l000000om4A4Co0000ofIVIP3ooooo odcooooo002Xooooo`03ojVYZOl0003o000000;o000000GoZJVYonk^k_l0003o0000okZj^P3ooooo od_ooooo002Wooooo`03onk^k_l0003o000000;o000000KoA4A4ooooooooooooV9RHo`000?lQ8B7o oooood_ooooo002Wooooo`03odA4A?l0003o000000;o000000Ook^k^oooooooooooooooooc8b<_l0 003oMgMg0?ooooooB_ooool00:Kooooo00?oZJVYo`000?l000000_l000000onj^[[oooooooooo`02 ooooo`04omgMgOl0003o0000omgMgOooooooBOooool00:Gooooo00?ok^k^o`000?l000000_l00000 0omVIVKoooooooooo`04ooooo`03ogMgMol0003oooooo`So0000oooooolMooooo`00`oooool3o`0000;ooooo0_l0000Booooo`Oo0000oooo oolJooooo`00`oooool2o`0000?ooooo0_l0000Eooooo`So0000oooooolFooooo`00`_ooool3o`00 00?ooooo0_l0000Hooooo`So0000oooooolCooooo`00`Oooool3o`0000Cooooo0_l0000Looooo`So 0000ooooool?ooooo`00`Oooool2o`0000Gooooo0_l0000Oooooo`So0000ooooool_ooool8o`00 0?3ooooo002jooooo`?o00002oooool2o`0003kooooo1ol0003]ooooo`00^_ooool2o`0000cooooo 0_l00011ooooo`So0000jOooool00;Wooooo0ol0000Kooooo002h ooooo`?o00003Oooool2o`0004Sooooo1ol0003Sooooo`00^?ooool2o`0000kooooo0_l0001;oooo o`So0000goooool00;Oooooo0ol0000>ooooo`;o0000C_ooool8o`000=cooooo002fooooo`?o0000 3oooool2o`0005;ooooo2?l0003Hooooo`00]Oooool3o`00013ooooo0_l0001Eooooo`So0000eOoo ool00;Gooooo0_l0000Aooooo`;o0000FOooool7o`000=;ooooo002dooooo`?o00004Oooool2o`00 05cooooo2?l0003>ooooo`00/oooool3o`0001;ooooo0_l0001Oooooo`So0000boooool00;?ooooo 0_l0000Cooooo`;o0000Hoooool8o`000