(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 4.0, MathReader 4.0, or any compatible application. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 14092, 549]*) (*NotebookOutlinePosition[ 15160, 586]*) (* CellTagsIndexPosition[ 15050, 579]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[{ "NERCOMP ", StyleBox["\[FilledSmallCircle]", FontSlant->"Plain"], " Amherst College ", StyleBox["\[FilledSmallCircle]", FontSlant->"Plain"], " 22 Feb 2000" }], "Subsubtitle", TextAlignment->Center, TextJustification->0], Cell["Rigid motions of the plane", "Title"], Cell[CellGroupData[{ Cell["Objects and transformations for examples", "Section"], Cell[CellGroupData[{ Cell["A triangle as a graphics object", "Subsection"], Cell[TextData[{ "We shall use a triangle as an example. First we form the list ", StyleBox["pairs", FontFamily->"Courier"], " of pairs of coordinates of its vertices and the ", StyleBox["Line", FontFamily->"Courier"], " (that is, broken line) primitive graphics object:" }], "Text"], Cell[BoxData[{ \(pairs\ = \ {{\(-1\), 1\ }, \ {0.25, \ \(-1\)}, \ {0.75, \ 0.65}, {\(-1\), 1\ }\ }; \), "\n", \(edges\ = \ Line[pairs]\)}], "Input"], Cell[TextData[{ "To see the triangle's three edges, form a ", StyleBox["Graphics", FontFamily->"Courier"], " object..." }], "Text"], Cell[BoxData[ \(Graphics[edges]\)], "Input"], Cell[TextData[{ "... and then ", StyleBox["Show", FontFamily->"Courier"], " that ", StyleBox["Graphics", FontFamily->"Courier"], " object:" }], "Text"], Cell[BoxData[ \(Show[Graphics[edges]]; \)], "Input"], Cell[TextData[{ "The triangle's vertices will constitute a list of ", StyleBox["Point", FontFamily->"Courier"], " primitive graphics objects: " }], "Text"], Cell[BoxData[ \(vertices\ = \ Map[Point, \ pairs]\)], "Input"], Cell["Here are the edges and vertices together...", "Text"], Cell[BoxData[ \(Show[Graphics[{edges, \ vertices}]]; \)], "Input"], Cell[TextData[{ "... but it's rather hard to see the vertices because they are so small. \ So we enlarge the points by using the ", StyleBox["PointSize", FontFamily->"Courier"], " graphics directive. (The parameter to ", StyleBox["PointSize", FontFamily->"Courier"], " is expressed as a fraction of the graphics image width.)" }], "Text"], Cell[BoxData[ \(triangle\ = \ {edges, PointSize[0.025], \ vertices}\)], "Input"], Cell["Now we can see vertices as well as edges:", "Text"], Cell[BoxData[ \(Show[Graphics[triangle]]; \)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Two plane transformations", "Subsection"], Cell[TextData[{ "Below we'll use two transformations of the plane\[LongDash]reflection \ across the ", StyleBox["vertical", FontSlant->"Italic"], " axis and translation by the vector ", Cell[BoxData[ \(TraditionalForm\`\((1, \ 2)\)\)]], ":" }], "Text"], Cell[BoxData[{ \(reflect[ p_]\ := \ \ \ {\(-p\[LeftDoubleBracket]1\[RightDoubleBracket]\), \ p\[LeftDoubleBracket]2\[RightDoubleBracket]}\), "\n", \(translate[p_]\ := \ p\ + \ {1, 2}\)}], "Input"], Cell["For example:", "Text"], Cell[BoxData[ \(reflect[{\ 0.75, \ 0.65}]\)], "Input"], Cell[BoxData[ \(translate[\ {0.75, \ 0.65}]\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "Graphics utility ", StyleBox["view", FontFamily->"Courier"] }], "Section"], Cell[CellGroupData[{ Cell["Definitions", "Subsection"], Cell[BoxData[ \(\(view::usage\ = \ \n\t\t"\";\)\)], "Input"], Cell[BoxData[ \(view[objects_, \ low_:\ - 1, \ high_: 1]\ := \ Show[makeFigure[objects, \ low, \ high]]\)], "Input"], Cell[BoxData[ \(makeFigure[objects_, \ low_:\ - 1, \ high_: 1]\ := \ \t\n\t Graphics[objects, \ PlotRange\ \[Rule] \ {{low, \ high}, \ {low, \ high}}, \n\t\t\ AspectRatio\ \[Rule] \ Automatic, \ Axes\ \[Rule] \ True]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Examples", "Subsection"], Cell[BoxData[ \(view[triangle]; \)], "Input"], Cell[BoxData[ \(view[triangle, \ \(-2\), \ 2]; \)], "Input"], Cell[BoxData[ \(\(view[{RGBColor[1, 0, 0], \ triangle}, \ \(-2\), \ 2];\)\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "Transformation utility \"", StyleBox["image", FontFamily->"Courier"], "\"" }], "Section"], Cell[CellGroupData[{ Cell["Definitions", "Subsection"], Cell[BoxData[ \(\(image::usage\ = \ \n\t\t"\";\)\)], "Input"], Cell[BoxData[ \(image[T_, \ object_]\ := \ object\ /. \ pt_?Point2DQ\ \[RuleDelayed] \ T[pt]\)], "Input"], Cell[BoxData[ \(Point2DQ[p_] := VectorQ[p, NumericQ] && Length[p] == 2\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Examples", "Subsection"], Cell[BoxData[ \(triangle\)], "Input"], Cell[BoxData[ \(image[reflect, \ triangle]\)], "Input"], Cell[BoxData[ \(view[image[reflect, \ triangle]]; \)], "Input"], Cell[CellGroupData[{ Cell["Exploit infix notation:", "Subsubsection"], Cell[BoxData[ \(Log[2, \ 32]\)], "Input"], Cell[BoxData[ \(2\ ~Log~\ 32\)], "Input"], Cell[BoxData[ \(reflect~image~triangle\)], "Input"], Cell[BoxData[ \(view[reflect~image~triangle]; \)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Viewing object and its image", "Subsubsection"], Cell[BoxData[ \(view[{triangle, \ image[reflect, \ triangle]}]; \)], "Input"], Cell["Distinguish the original from the image by using color:", "Text"], Cell[BoxData[ \(view[{triangle, \ RGBColor[1, 0, 0], image[reflect, \ triangle]}]; \)], "Input"] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Images under composition of transformations", "Section"], Cell["\<\ To get the image of an object under the composition of two (or more) \ transformations, just apply the transformations in order. For example:\ \>", "Text"], Cell[BoxData[ \(stretch[v_]\ := \ 0.6\ v\)], "Input"], Cell[BoxData[{ \(stretch[{1, \ 2}]\), "\n", \(reflect[%]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (*\ \ %\ means\ the\ the\ last\ result\ *) \), "\n", \(reflect[stretch[{1, 2}]]\)}], "Input"], Cell[TextData[{ "The expression for applying first one transformation, then the other, gets \ a bit complicated when it is used with the function ", StyleBox["image", FontFamily->"Courier"], ":" }], "Text"], Cell[BoxData[ \(\(view[image[reflect, \ image[stretch, triangle]], \ \(-2\), \ 2];\)\)], "Input"], Cell[BoxData[ \(\(view[reflect\ ~image~\ stretch\ ~\ image~\ triangle, \ \(-2\), \ 2];\)\)], "Input"], Cell["\<\ A way to simplify expressions such as in the preceding input cell is \ explained in the next section.\ \>", "Text"] }, Closed]], Cell[CellGroupData[{ Cell["Composition notation", "Section"], Cell[CellGroupData[{ Cell[TextData[{ "Prefix notation ", StyleBox["@", FontFamily->"Times", FontWeight->"Bold", FontSlant->"Plain"], " for composition" }], "Subsection"], Cell[BoxData[ \(reflect[stretch[{1, \ 2}]]\)], "Input"], Cell[BoxData[ \(reflect@stretch[{1, \ 2}]\)], "Input"], Cell[BoxData[ \(view[image[reflect\ @\ stretch, \ triangle], \ \(-2\), \ 2]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "Function ", StyleBox["Composition", FontFamily->"Courier"] }], "Subsection"], Cell[BoxData[ \(\(Composition[reflect, \ stretch]\)[{1, \ 2}]\)], "Input"], Cell[BoxData[ \(\(view[image[Composition[reflect, \ stretch], \ triangle], \ \(-2\), \ 2];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ StyleBox["Notation", FontFamily->"Courier"], " package" }], "Subsection"], Cell[BoxData[ \(Needs["\"]\)], "Input"], Cell[BoxData[ RowBox[{"InfixNotation", "[", RowBox[{ TagBox["\[SmallCircle]", NotationBoxTag, TagStyle->"NotationTemplateStyle"], ",", TagBox["Composition", Identity]}], "]"}]], "Input", CellTags->{"Notation:S1", "Notation:S1.3"}], Cell[BoxData[ \(\((reflect\[SmallCircle]\ stretch)\)[{1, 2}]\)], "Input"], Cell[BoxData[ \(image[reflect\ \[SmallCircle]\ stretch, \ triangle]\)], "Input"], Cell[BoxData[ \(\(view[image[reflect\ \[SmallCircle]\ stretch, triangle], \ \(-2\), \ 2];\)\)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["Exercises", "Section"], Cell[CellGroupData[{ Cell["1. Do stretch and reflect commute? ", "Subsection"], Cell[BoxData[ \(\(view[{image[reflect\ \[SmallCircle]\ stretch, triangle], \ image[stretch\ \[SmallCircle]\ reflect, triangle]}, \ \(-2\), \ 2];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "2. Does ", StyleBox["reflect", FontFamily->"Courier"], " commute with translation by ", StyleBox["{1, -1}", FontFamily->"Courier"], "?" }], "Subsection"], Cell[BoxData[ \(Clear[translate]\)], "Input"], Cell[BoxData[ \(translate[p_]\ := \ p\ + \ \ {1. , \ \(-1. \)}\)], "Input"], Cell[BoxData[ \(translate[{1, \ 2}]\)], "Input"], Cell[BoxData[ \(\(view[{triangle, \ RGBColor[1, 0, 0], \ translate\ ~image~\ triangle}, \ \(-2\), \ 2];\)\)], "Input"], Cell[BoxData[ \(\(view[{\((translate\ \[SmallCircle]\ reflect)\)\ ~\ image~\ triangle, \ \((reflect\ \[SmallCircle]\ translate)\)\ ~image~\ triangle}, \ \(-2\), \ 2];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "3. Does ", StyleBox["reflect", FontFamily->"Courier"], " commute with rotation through \[Pi]/6?" }], "Subsection"], Cell[BoxData[ RowBox[{\(rot[p_, \ \[Theta]_]\), " ", ":=", " ", RowBox[{ RowBox[{"(", "\[NegativeThinSpace]", GridBox[{ {\(Cos[\[Theta]]\), \(-Sin[\[Theta]]\)}, {\(Sin[\[Theta]]\), \(\(\ \)\(Cos[\[Theta]]\)\)} }], "\[NegativeThinSpace]", ")"}], " ", ".", " ", "p"}]}]], "Input"], Cell[BoxData[ \(rotate[p_]\ := \ rot[p, \ \[Pi]\/6]\)], "Input"], Cell[BoxData[ \(\(view[{triangle, \ RGBColor[1, 0, 0], \ rotate\ ~image~\ triangle}, \ \(-2\), \ 2];\)\)], "Input"], Cell[BoxData[ \(\(view[{\((rotate\ \[SmallCircle]\ reflect)\)\ ~\ image~\ triangle, \ \((reflect\ \[SmallCircle]\ rotate)\)\ ~image~\ triangle}, \ \(-2\), \ 2];\)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["\<\ 4. Study dilation by factor of 0.75 and composites of that dilation with \ \>", "Subsection"], Cell[BoxData[ \(dilate[p_]\ := \ 0.75\ p\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["\<\ 5. Study images of the composite of a horizontal shear and a vertical shear; is this transformation a rigid motion?\ \>", "Subsection"], Cell[BoxData[ RowBox[{\(T[p_]\), " ", ":=", " ", RowBox[{ RowBox[{"(", "\[NegativeThinSpace]", GridBox[{ {"1", "1"}, {"1", "2"} }], "\[NegativeThinSpace]", ")"}], " ", ".", " ", "p"}]}]], "Input"], Cell[BoxData[ \(\(view[{triangle, \ RGBColor[1, 0, 0], \ T~image~\ triangle}, \ \(-3\), \ 3];\)\)], "Input"] }, Closed]], Cell["\<\ 6. Why does \"connecting the dots\" of the images of the original dots \ correctly produce the image of the entire object?\ \>", "Subsection"] }, Closed]], Cell[BoxData[ StyleBox[ ButtonBox[ RowBox[{" ", StyleBox[\(\(Main\)\(\ \)\(notebook\)\(\ \ \ \ \ \)\), FontVariations->{"Underline"->False}]}], ButtonData:>{ FrontEnd`FileName[ { Directory[ ]}, "NERCOMPISSIG.nb", CharacterEncoding -> "WindowsANSI"], None}, ButtonStyle->"Hyperlink", ButtonMargins->10, ButtonNote->"Open main notebook"], FontFamily->"Helvetica"]], "Subsubsection", TextAlignment->Center, TextJustification->0], Cell[TextData[{ "Copyright \[Copyright] 2000 by ", ButtonBox["Murray Eisenberg", ButtonData:>{ URL[ "mailto://murray@math.umass.edu"], None}, ButtonStyle->"Hyperlink"], ". All rights reserved." }], "SmallText", ShowGroupOpenCloseIcon->False, TextAlignment->Center, TextJustification->0] }, FrontEndVersion->"4.0 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 723}}, ScreenStyleEnvironment->"Presentation", WindowToolbars->{}, CellGrouping->Manual, WindowSize->{736, 627}, WindowMargins->{{118, Automatic}, {Automatic, 17}}, StyleDefinitions -> "TalkStyle.nb" ] (*********************************************************************** 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->{ "Notation:S1"->{ Cell[9630, 385, 290, 8, 50, "Input", CellTags->{"Notation:S1", "Notation:S1.3"}]}, "Notation:S1.3"->{ Cell[9630, 385, 290, 8, 50, "Input", CellTags->{"Notation:S1", "Notation:S1.3"}]} } *) (*CellTagsIndex CellTagsIndex->{ {"Notation:S1", 14818, 569}, {"Notation:S1.3", 14932, 572} } *) (*NotebookFileOutline Notebook[{ Cell[1717, 49, 257, 10, 88, "Subsubtitle"], Cell[1977, 61, 43, 0, 67, "Title"], Cell[CellGroupData[{ Cell[2045, 65, 59, 0, 78, "Section"], Cell[CellGroupData[{ Cell[2129, 69, 53, 0, 46, "Subsection"], Cell[2185, 71, 301, 8, 48, "Text"], Cell[2489, 81, 170, 3, 70, "Input"], Cell[2662, 86, 141, 5, 29, "Text"], Cell[2806, 93, 48, 1, 50, "Input"], Cell[2857, 96, 169, 8, 29, "Text"], Cell[3029, 106, 56, 1, 50, "Input"], Cell[3088, 109, 165, 5, 29, "Text"], Cell[3256, 116, 67, 1, 50, "Input"], Cell[3326, 119, 59, 0, 29, "Text"], Cell[3388, 121, 70, 1, 50, "Input"], Cell[3461, 124, 358, 9, 48, "Text"], Cell[3822, 135, 85, 1, 50, "Input"], Cell[3910, 138, 57, 0, 29, "Text"], Cell[3970, 140, 59, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[4066, 146, 47, 0, 30, "Subsection"], Cell[4116, 148, 272, 9, 29, "Text"], Cell[4391, 159, 225, 4, 70, "Input"], Cell[4619, 165, 28, 0, 29, "Text"], Cell[4650, 167, 58, 1, 50, "Input"], Cell[4711, 170, 60, 1, 50, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[4820, 177, 99, 4, 51, "Section"], Cell[CellGroupData[{ Cell[4944, 185, 33, 0, 46, "Subsection"], Cell[4980, 187, 256, 5, 130, "Input"], Cell[5239, 194, 130, 2, 50, "Input"], Cell[5372, 198, 278, 5, 90, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[5687, 208, 30, 0, 30, "Subsection"], Cell[5720, 210, 49, 1, 50, "Input"], Cell[5772, 213, 64, 1, 50, "Input"], Cell[5839, 216, 90, 1, 50, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[5978, 223, 117, 5, 51, "Section"], Cell[CellGroupData[{ Cell[6120, 232, 33, 0, 46, "Subsection"], Cell[6156, 234, 183, 3, 90, "Input"], Cell[6342, 239, 119, 2, 50, "Input"], Cell[6464, 243, 87, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[6588, 249, 30, 0, 30, "Subsection"], Cell[6621, 251, 41, 1, 50, "Input"], Cell[6665, 254, 59, 1, 50, "Input"], Cell[6727, 257, 67, 1, 50, "Input"], Cell[CellGroupData[{ Cell[6819, 262, 48, 0, 37, "Subsubsection"], Cell[6870, 264, 45, 1, 50, "Input"], Cell[6918, 267, 45, 1, 50, "Input"], Cell[6966, 270, 55, 1, 50, "Input"], Cell[7024, 273, 63, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[7124, 279, 53, 0, 29, "Subsubsection"], Cell[7180, 281, 81, 1, 50, "Input"], Cell[7264, 284, 71, 0, 29, "Text"], Cell[7338, 286, 109, 2, 50, "Input"] }, Closed]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[7508, 295, 62, 0, 50, "Section"], Cell[7573, 297, 166, 3, 29, "Text"], Cell[7742, 302, 58, 1, 50, "Input"], Cell[7803, 305, 220, 4, 90, "Input"], Cell[8026, 311, 216, 6, 29, "Text"], Cell[8245, 319, 110, 2, 50, "Input"], Cell[8358, 323, 114, 2, 50, "Input"], Cell[8475, 327, 125, 3, 29, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[8637, 335, 39, 0, 50, "Section"], Cell[CellGroupData[{ Cell[8701, 339, 166, 7, 46, "Subsection"], Cell[8870, 348, 59, 1, 50, "Input"], Cell[8932, 351, 58, 1, 50, "Input"], Cell[8993, 354, 92, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[9122, 360, 101, 4, 31, "Subsection"], Cell[9226, 366, 78, 1, 50, "Input"], Cell[9307, 369, 118, 2, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[9462, 376, 97, 4, 31, "Subsection"], Cell[9562, 382, 65, 1, 50, "Input"], Cell[9630, 385, 290, 8, 50, "Input", CellTags->{"Notation:S1", "Notation:S1.3"}], Cell[9923, 395, 77, 1, 50, "Input"], Cell[10003, 398, 84, 1, 50, "Input"], Cell[10090, 401, 117, 2, 50, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[10256, 409, 28, 0, 50, "Section"], Cell[CellGroupData[{ Cell[10309, 413, 57, 0, 46, "Subsection"], Cell[10369, 415, 183, 3, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[10589, 423, 188, 8, 31, "Subsection"], Cell[10780, 433, 49, 1, 50, "Input"], Cell[10832, 436, 81, 1, 50, "Input"], Cell[10916, 439, 52, 1, 50, "Input"], Cell[10971, 442, 133, 2, 50, "Input"], Cell[11107, 446, 211, 3, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[11355, 454, 141, 5, 31, "Subsection"], Cell[11499, 461, 348, 7, 61, "Input"], Cell[11850, 470, 69, 1, 60, "Input"], Cell[11922, 473, 130, 2, 50, "Input"], Cell[12055, 477, 205, 3, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[12297, 485, 104, 2, 30, "Subsection"], Cell[12404, 489, 58, 1, 50, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[12499, 495, 149, 3, 48, "Subsection"], Cell[12651, 500, 266, 7, 61, "Input"], Cell[12920, 509, 123, 2, 50, "Input"] }, Closed]], Cell[13058, 514, 152, 3, 30, "Subsection"] }, Closed]], Cell[13225, 520, 547, 15, 53, "Subsubsection"], Cell[13775, 537, 313, 10, 37, "SmallText"] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)