(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 4.2' 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[ 38755, 1012]*) (*NotebookOutlinePosition[ 42207, 1098]*) (* CellTagsIndexPosition[ 42046, 1090]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ StyleBox["The ", FontSize->36], StyleBox["L2Primitives", FontSize->36, FontSlant->"Italic", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontSize->36, FontSlant->"Italic"], StyleBox["Package for ", FontSize->36], StyleBox["Mathematica", FontSize->36, FontSlant->"Italic"], "\nby I. Knezevic, R. Sazdanovic, S. Vukmirovic\n ", StyleBox["(", FontSize->14], StyleBox["knele@yubc.net, seasmile@galeb.etf.bg.ac.yu, \ vsrdjan@matf.bg.ac.yu)", FontFamily->"Arial", FontSize->14, FontWeight->"Plain"], "\n", StyleBox["(User's Guide for version 1.1, 16.01.2002)", FontWeight->"Plain"] }], "Chapter"], Cell["\<\ L2Primitives is a package for manipulation with basic objects of the \ Lobachevskian plane (L2) and their representation in three models of that \ geometry. Basic objects include: points, polygonal lines, polygons, circles \ and disks. Transformations that can be applied on the objects are: reflection \ with respect to a point or line, rotation and hyperbolic translation. Models \ of the Lobachevskian plane supported are: PoincareDisk(PD) , KleinDisk (KD) \ and HalfPlane (HP).\ \>", "Text"], Cell["\<\ Basic objects are abstract most of the time. That means that user has only \ two contacts with their representation in a certain model. As first, he enters L2 points in a chosen model using the commands PDPoint, \ KDPoint, HPPoint. Then they become abstract points internally called LPoint. \ User then can manipulate them without thinking how they are internally \ represented. He can make of them any basic object(line, circle...) which is \ purely abstract. Such abstract objects can be isometrically mapped into \ other abstract objects. When the objects are created, user can graphically represent them in a model \ of his choice using the function LToGraphics.\ \>", "Text"], Cell[BoxData[ FormBox[GridBox[{ { StyleBox[\(KDPoint[{x, y}]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"-> False}], \(returns\ LPoint\ representing\ point\ with\ \ coordinates\ \((x, y)\)\ in\ KleinDisk\ model . \ Point\ \((x, y)\)\ should\ belong\ to\ the\ unit\ \(\(disk\)\(.\)\)\)}, { StyleBox[\(PDPoint[{x, y}]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"-> False}], \(returns\ LPoint\ representing\ point\ with\ \ coordinates\ \((x, y)\)\ in\ HalfPlane\ model . \ Point\ \((x, y)\)\ should\ belong\ to\ the\ unit\ \(\(disk\)\(.\)\)\)}, { StyleBox[\(HPPoint[{x, y}]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"-> False}], \(returns\ LPoint\ representing\ point\ with\ \ coordinates\ \((x, y)\)\ in\ HalfPlane\ model . \ Point\ \((x, y)\)\ should\ satisfy\ y > 0. \)}, { RowBox[{ StyleBox[ RowBox[{"L", StyleBox["Point", "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}]}]], StyleBox["[", "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], StyleBox[\({x, y}\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], StyleBox["]", "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"-> False}]}], \(internal\ representation\ of\ a\ point\ in\ L2 \ . \ Coordinates\ correspond\ to\ those\ in\ \(\(KDPoint\)\(.\)\(\ \)\)\)} }], NotebookDefault]], "DefinitionBox", CellMargins->{{19.5625, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0, GridBoxOptions->{ColumnAlignments->{Right, Left}}, CellTags->{"Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell["Inputing L2 points in various models.", "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell["\<\ This loads the package (change the path to the location where you have \ copied L2Primitives.m).\ \>", "Text"], Cell[BoxData[ \(<< c://L2Primitives.m\)], "Input"], Cell["\<\ Here we define three LPoints using different models (usually, it doesn't make \ much sense).\ \>", "Text"], Cell[BoxData[{ \(\(a\ = \ PDPoint[{\(-1\)/3, \ 1/3}];\)\), "\[IndentingNewLine]", \(\(b = \ KDPoint[{1/2, \ 1/3}];\)\), "\[IndentingNewLine]", \(\(c = \ HPPoint[{1, \ 3}];\)\)}], "Input"], Cell["Each of them has internal LPoint representation.", "Text"], Cell[BoxData[ \(\(?a\)\)], "Input"], Cell["All other basic objects are based on LPoints", "Text"], Cell[BoxData[ FormBox[GridBox[{ { StyleBox[\(LLine[{pt1, \ ... , \ ptn}]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ RowBox[{ "represents", " ", "the", " ", "polygonal", " ", "line", " ", "connecting", " ", "LPoint", " ", "objects", " ", StyleBox["pt1", FontFamily->"Courier New"]}], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["...", FontFamily->"Courier New"], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["ptn", FontFamily->"Courier New"]}]}, { StyleBox[\(LPolygon[{pt1, \ ... , \ ptn}]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ RowBox[{ "represents", " ", "the", " ", \((filled)\), " ", "polygon", " ", "whose", " ", "vertices", " ", "are", " ", "LPoint", " ", "objects", " ", StyleBox["pt1", FontFamily->"Courier New"]}], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["...", FontFamily->"Courier New"], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], RowBox[{ RowBox[{ StyleBox["ptn", FontFamily->"Courier New"], ".", " ", "The"}], " ", "first", " ", "and", " ", "the", " ", "last", " ", "point", " ", "may"}], ",", " ", \(but\ must\ not\ be\ the\ \(\(same\)\(.\)\)\)}]}, { StyleBox[\(LCircle[centre, \ radius]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ RowBox[{ "represent", " ", "the", " ", "circle", " ", "whose", " ", "L2", " ", "centre", " ", "is", " ", "a", " ", "LPoint", " ", "object", " ", StyleBox["centre", FontFamily->"Courier New"]}], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], RowBox[{ StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["L2", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["radius", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["is", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], "a", " ", StyleBox["positive", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["number", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(\(radius\)\(.\)\), FontFamily->"Courier New"]}]}]}, { StyleBox[\(LDisk[centre, \ radius]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ RowBox[{ "represent", " ", "the", " ", \((filled)\), "disk", " ", "whose", " ", "L2", " ", "centre", " ", "is", " ", "a", " ", "LPoint", " ", "object", " ", StyleBox["centre", FontFamily->"Courier New"]}], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], RowBox[{ StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["L2", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["radius", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["is", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], "a", " ", StyleBox["positive", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["number", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(\(radius\)\(.\)\), FontFamily->"Courier New"]}]}]} }], NotebookDefault]], "DefinitionBox", CellMargins->{{19.5625, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0, GridBoxOptions->{ColumnAlignments->{Right, Left}}, CellTags->{"Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell["Basic L2 objects are based on the LPoints", "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[TextData[{ "We define triangle polygonal line and filled triangle determined by the \ points ", StyleBox["a, b, c.", FontWeight->"Bold"] }], "Text"], Cell[BoxData[{ \(\(tr\ = \ LLine[{a, \ b, \ c, \ a}];\)\), "\[IndentingNewLine]", \(\(poltr\ = \ LPolygon[{a, \ b, \ c}];\)\)}], "Input"], Cell["\<\ Here are isometric transformations that can be applied to a basic object or \ to a list of them\ \>", "Text"], Cell[BoxData[ FormBox[GridBox[{ { StyleBox[\(\(L2Reflection[line]\)[x]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ "returns", " ", "L2", " ", "reflection", " ", "of", " ", "a", " ", \((list\ of)\), " ", "basic", " ", "object", " ", StyleBox["x", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["with", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["respect", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["to", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["a", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["LLine", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["object", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["line", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["determined", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["by", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], "two", " ", RowBox[{"points", StyleBox[".", FontFamily->"Courier New"]}]}]}, { StyleBox[\(\(L2Reflection[pt]\)[x]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ "returns", " ", "L2", " ", "reflection", " ", "of", " ", "a", " ", \((list\ of)\), "basic", " ", "object", " ", StyleBox["x", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["with", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["respect", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["to", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["a", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["point", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], RowBox[{ StyleBox["pt", FontFamily->"Courier New"], StyleBox[".", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["This", FontFamily->"Times New Roman"]}], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["is", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["equivalent", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["to", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["the", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["rotation", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["around", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["pt", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["by", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["the", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["angle", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Courier New"], StyleBox[\(\(\[Pi]\)\(.\)\), FontFamily->"Courier New"]}]}, { StyleBox[\(\(L2Rotation[pt, \ \[Theta]]\)[x]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ RowBox[{ "returns", " ", "L2", " ", "rotation", " ", "of", " ", "a", " ", \((list\ of)\), "basic", " ", "object", " ", StyleBox["x", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], "around", " ", "a", " ", "point", StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["pt", FontFamily->"Courier New"]}], StyleBox[",", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], RowBox[{ StyleBox["by", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["an", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["angle", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Courier New"], StyleBox[\(\(\[Theta]\)\(.\)\(\ \)\), FontFamily->"Courier New"]}]}]}, { StyleBox[\(\(L2Translation[pt1, \ pt2]\)[x]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ "returns", " ", "L2", " ", "translation", " ", "of", " ", "a", " ", \((list\ of)\), "basic", " ", "object", " ", RowBox[{ StyleBox["x", FontFamily->"Courier New"], StyleBox[".", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["Translations", FontFamily->"Times New Roman"]}], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["in", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["L2", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["have", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["not", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["the", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["same", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["properties", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["as", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["Euclidean", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(translations . \ This\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["translation", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["maps", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["point", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["pt1", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["to", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["point", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["pt2", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["preserves", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["the", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["line", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["determined", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["by", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(\(them\)\(.\)\), FontFamily->"Times New Roman"]}]} }], NotebookDefault]], "DefinitionBox", CellMargins->{{19.5625, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0, GridBoxOptions->{ColumnAlignments->{Right, Left}}, CellTags->{"Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell["Isometric transformations of L2", "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell["\<\ We reflect the triangle over the its edges and obtain another three \ triangles.\ \>", "Text"], Cell[BoxData[{ \(\(tr1\ = \ \ \(L2Reflection[LLine[{a, b}]]\)[ tr];\)\), "\[IndentingNewLine]", \(\(tr2\ = \ \ \(L2Reflection[LLine[{a, c}]]\)[ tr];\)\), "\[IndentingNewLine]", \(\(tr3\ = \ \ \(L2Reflection[LLine[{b, c}]]\)[tr];\)\)}], "Input"], Cell["\<\ Finally, we can draw in a model of choice the objects that we have created. We use the function LToGraphics to represent a basic object or a list of \ them as a Graphics primitive depending on the chosen model.\ \>", "Text"], Cell[BoxData[ FormBox[GridBox[{ { StyleBox[\(LToGraphics[obj, \ options]\), FontFamily->"Courier New"], RowBox[{ "returns", " ", "Graphics", " ", "primitive", " ", "representing", " ", "basic", " ", "L2", " ", "object", " ", RowBox[{ StyleBox["obj", FontFamily->"Courier New"], StyleBox[".", FontFamily->"Courier New"], StyleBox["If", FontFamily->"Times New Roman"]}], StyleBox[" ", FontFamily->"Courier New"], StyleBox["obj", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["is", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["a", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["LLine", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\((LPolygon)\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["returns", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["Line", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\((Polygon)\), FontFamily->"Times New Roman"], " ", StyleBox["object", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["in", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["any", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(model . \ \ If\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["obj", FontFamily->"Courier New"], StyleBox[" ", FontFamily->"Courier New"], StyleBox["is", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["a", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["LCircle", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\((LDisk)\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["returns", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["Circle", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\((Disk)\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["in", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["PoincareDisk", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["HalfPlane", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["and", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["Line", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\((Polygon)\), FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["in", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox["KleinDisk", FontFamily->"Times New Roman"], StyleBox[" ", FontFamily->"Times New Roman"], StyleBox[\(\(model\)\(.\)\), FontFamily->"Times New Roman"]}]}, { StyleBox[\(LToGraphics[{obj1, \ ... , \ objn}, \ options]\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"->False}], RowBox[{ "returns", " ", "the", " ", "list", " ", "of", " ", "Graphics", " ", "primitives", " ", "representing", " ", "basic", " ", "L2", " ", "objects", " ", RowBox[{ StyleBox["obji", FontFamily->"Courier New"], "."}]}]}, { StyleBox[\(Model -> HalfPlane, \ PoincareDisk\ or\ KleinDisk\), FontFamily-> "Courier New"], \(option\ of\ LToGraphics\ which\ specifies\ \ in\ which\ model\ to\ represent\ L2\ basic\ objects . The\ default\ model\ is\ \(\(KleinDisk\)\(.\)\)\)}, { StyleBox[\(PlotPoints -> number\), "MR", FontFamily->"Courier New", FontSize->12, FontWeight->"Plain", FontSlant->"Plain", FontColor->GrayLevel[0], FontVariations->{"Underline"->False, "StrikeThrough"-> False}], \(option\ of\ LToGraphics\ which\ specifies\ by\ how\ \ many\ line\ segments\ to\ approximate\ the\ arc\ representing\ L2\ object . \ \ The\ default\ value\ is\ 40. \)} }], NotebookDefault]], "DefinitionBox", CellMargins->{{19.5625, Inherited}, {Inherited, Inherited}}, TextAlignment->Left, TextJustification->0, GridBoxOptions->{ColumnAlignments->{Right, Left}}, CellTags->{"Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell["Transforming a basic L2 object into Graphics object", "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell["\<\ Now,we apply LToGraphics to the list of our object and obtain a list of \ Graphics primitives representing them. Then we apply Graphics. \ \>", "Text"], Cell[BoxData[ \(\(grPD\ = \ Graphics[ LToGraphics[{a, \ b, \ c, \ poltr, \ tr1, \ tr2, \ tr3}, \ Model \[Rule] PoincareDisk]];\)\)], "Input"], Cell["\<\ We create the unit circle representing the points at the infinity in \ KleinDisk and PoincareDisk model. \ \>", "Text"], Cell[BoxData[ \(\(absolut = \ Graphics[Circle[{0, 0}, \ 1]];\)\)], "Input"], Cell["\<\ Now,we draw the objects in a PoincareDisk model as ordinary Graphics objects. \ \ \>", "Text"], Cell[BoxData[ \(\(Show[{grPD, absolut}, \ PlotRange \[Rule] {{\(-1\), 1}, \ {\(-1\), 1}}, \ AspectRatio \[Rule] Automatic];\)\)], "Input"], Cell["\<\ We create their representation in remaining models in order to show them \ together. \ \>", "Text"], Cell[BoxData[{ \(\(grKD\ = \ Graphics[ LToGraphics[{a, \ b, \ c, \ poltr, \ tr1, \ tr2, \ tr3}, \ Model \[Rule] KleinDisk]];\)\), "\[IndentingNewLine]", \(\(grHP\ = \ Graphics[ LToGraphics[{a, \ b, \ c, \ poltr, \ tr1, \ tr2, \ tr3}, \ Model \[Rule] HalfPlane]];\)\)}], "Input"], Cell[BoxData[ \(\(Show[ GraphicsArray[{\[IndentingNewLine]Show[absolut, \ grPD, \ PlotRange \[Rule] {{\(-1\), 1}, \ {\(-1\), 1}}, \ AspectRatio \[Rule] Automatic, \ DisplayFunction \[Rule] Identity], \[IndentingNewLine]Show[ absolut, \ grKD, \ PlotRange \[Rule] {{\(-1\), 1}, \ {\(-1\), 1}}, \ AspectRatio \[Rule] Automatic, DisplayFunction \[Rule] Identity], \[IndentingNewLine]Show[ grHP, \ PlotRange \[Rule] {{\(-1\), 3}, \ {0, 4}}, \ AspectRatio \[Rule] Automatic, \ Axes \[Rule] {True, \ True}, DisplayFunction \[Rule] Identity]\[IndentingNewLine]}]];\)\)], "Input"], Cell[TextData[{ "Finally, we are going to rotate triangle ", StyleBox["tr", "Input"], ", around its vertex ", StyleBox["a.", "Input"], " Output of LToGraphics can be treated as any Graphics primitive. For \ example, we color triangle in each instance of time by a different colour. " }], "Text"], Cell[BoxData[ \(\(Table[\[IndentingNewLine]Show[ absolut, \[IndentingNewLine]\ \ \ \ \ \ \ \ \ Graphics[{RGBColor[ Cos[t/4], \ Sin[t/4], 0.5], \[IndentingNewLine]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ LToGraphics[ LPolygon[{a, \ \(L2Rotation[a, t]\)[b], \(L2Rotation[a, t]\)[ c]}], \ Model -> PoincareDisk]\[IndentingNewLine]\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ }], \[IndentingNewLine]\ \ \ \ \ \ \ \ \ \ PlotRange \ \[Rule] {{\(-1\), 1}, \ {\(-1\), 1}}, \ AspectRatio \[Rule] Automatic], \[IndentingNewLine]\ \ \ \ \ {t, \ 0, \ 2\ Pi, \ 2\ Pi/20}];\)\)], "Input"] }, Open ]] }, FrontEndVersion->"4.2 for Microsoft Windows", ScreenRectangle->{{0, 1280}, {0, 979}}, ScreenStyleEnvironment->"Brackets", WindowToolbars->"RulerBar", WindowSize->{1013, 606}, WindowMargins->{{71, Automatic}, {Automatic, 113}}, CellLabelAutoDelete->True, StyleDefinitions -> "HelpBrowser.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[3675, 104, 3618, 92, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[7296, 198, 102, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[8078, 226, 6660, 165, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[14741, 393, 106, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[15287, 412, 12397, 313, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[27687, 727, 96, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[28416, 748, 7122, 176, 176, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[35541, 926, 116, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}]}, "Notation:S1.1"->{ Cell[3675, 104, 3618, 92, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[7296, 198, 102, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[8078, 226, 6660, 165, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[14741, 393, 106, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[15287, 412, 12397, 313, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[27687, 727, 96, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[28416, 748, 7122, 176, 176, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[35541, 926, 116, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}]}, "Notation:Definition:Notation"->{ Cell[3675, 104, 3618, 92, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[8078, 226, 6660, 165, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[15287, 412, 12397, 313, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[28416, 748, 7122, 176, 176, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}]} } *) (*CellTagsIndex CellTagsIndex->{ {"Notation:S1", 39483, 1031}, {"Notation:S1.1", 40457, 1052}, {"Notation:Definition:Notation", 41446, 1073} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1776, 53, 687, 26, 170, "Chapter"], Cell[2466, 81, 506, 8, 59, "Text"], Cell[2975, 91, 697, 11, 109, "Text"], Cell[3675, 104, 3618, 92, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[7296, 198, 102, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[7401, 201, 121, 3, 25, "Text"], Cell[7525, 206, 54, 1, 29, "Input"], Cell[7582, 209, 116, 3, 25, "Text"], Cell[7701, 214, 202, 3, 69, "Input"], Cell[7906, 219, 64, 0, 25, "Text"], Cell[7973, 221, 39, 1, 29, "Input"], Cell[8015, 224, 60, 0, 25, "Text"], Cell[8078, 226, 6660, 165, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[14741, 393, 106, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[14850, 396, 161, 5, 25, "Text"], Cell[15014, 403, 148, 2, 49, "Input"], Cell[15165, 407, 119, 3, 25, "Text"], Cell[15287, 412, 12397, 313, 140, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[27687, 727, 96, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[27786, 730, 104, 3, 25, "Text"], Cell[27893, 735, 281, 5, 69, "Input"], Cell[28177, 742, 236, 4, 50, "Text"], Cell[28416, 748, 7122, 176, 176, "DefinitionBox", CellTags->{ "Notation:S1", "Notation:S1.1", "Notation:Definition:Notation"}], Cell[35541, 926, 116, 1, 17, "Caption", CellTags->{"Notation:S1", "Notation:S1.1"}], Cell[35660, 929, 161, 3, 25, "Text"], Cell[35824, 934, 178, 4, 29, "Input"], Cell[36005, 940, 129, 3, 25, "Text"], Cell[36137, 945, 79, 1, 29, "Input"], Cell[36219, 948, 104, 3, 25, "Text"], Cell[36326, 953, 160, 3, 29, "Input"], Cell[36489, 958, 109, 3, 25, "Text"], Cell[36601, 963, 353, 8, 49, "Input"], Cell[36957, 973, 748, 13, 109, "Input"], Cell[37708, 988, 306, 7, 45, "Text"], Cell[38017, 997, 722, 12, 149, "Input"] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)