(************** 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[ 612534, 23544]*) (*NotebookOutlinePosition[ 793336, 28147]*) (* CellTagsIndexPosition[ 782241, 27793]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ "About ", StyleBox["Geometrica", FontSlant->"Italic"], "05" }], "ObjectName", CellTags->{"Geo.1", "About Geometrica05"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ", "MR"], "In ", StyleBox["Geometrica", FontSlant->"Italic"], "05, the variables of shape and position are systematically distinguished. \ This way, it is possible to get an object such as, say, a sphere using the \ simple syntax ", StyleBox["Sphere[]", "MR"], StyleBox[". \n The treatment of conics and quadrics is fully unified \ using the algebraic representation of quadrics. Intersections and tests are \ thus greatly simplified. New constructs (pole, polar, conjugate directions, \ ...) and metric notions (areas, volumes) are now available. \n General \ volumes are introduced using parametric points depending on three variables.\n\ CAD applications have been expanded with new and faster ", "MR", FontFamily->"Times New Roman"], StyleBox["Bezier", "MR"], StyleBox[" functions for curves and surfaces and with special objects such \ as staircases. \n Graphics have also been improved with, in particular, an \ automatic painting of surfaces.", "MR", FontFamily->"Times New Roman"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Geometrica02 presented two major innovations with respect to ", StyleBox["Geometrica", FontSlant->"Italic"], "97: the functions have been re-organized to express more clearly the three \ ways of defining a geometrical object: cartesian, euclidean and parametric \ and 3D geometry is introduced.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "In cartesian or analytical geometry, a point is defined by two or three \ coordinates and curves and surfaces by their equation which is a unique \ relation between the coordinates of the points which compose the curve or the \ surface. Such a definition is noted with the capital letter ", StyleBox["C", "TI"], " at the beginning of the function every time a confusion with another \ definition may occur. This is the case for ", StyleBox["CPoint", "MR"], ", ", StyleBox["CLin", "MR"], "e, ", StyleBox["CConic", "MR"], " or ", StyleBox["CPlane", "MR"], " which denote a cartesian point, line, conic or plane.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "In euclidean or synthetic geometry, the point is a primitive and there is \ a variety of ways of defining geometrical objects. This great variety is very \ helpful in practical applications and is unified by theorems. Basic functions \ specifically related to euclidean geometry start with a capital ", StyleBox["E", "TI"], " such as ", StyleBox["ELine", "MR"], " or ", StyleBox["ECircle", "MR"], ". This way, any confusion with other definitions related to the same \ object is avoided.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Parametric or explicit definitions are well adapted for the representation \ of geometrical objects and for elements of objects such as bound points, \ segments, arcs or limited surfaces. It is however not unique. The parametric \ representation chosen in ", StyleBox["Geometrica", FontSlant->"Italic"], " is given by the function ", StyleBox["Pointer", "MR"], ". The capital ", StyleBox["P", "TI"], " in ", StyleBox["PPoint", "MR"], " or ", StyleBox["PRange", "MR"], " denotes the parametric definition. A ", StyleBox["curve", "TI"], " or a ", StyleBox["surface", "TI"], " in ", StyleBox["Geometrica", FontSlant->"Italic"], " is an object of head ", StyleBox["PPoint", "MR"], " depending on one or two parameters in intervals defined by the option ", StyleBox["PRange", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "The functions are written in english and the american spelling is used in \ the documentation but the english spelling is also recognized by ", StyleBox["Geometrica", FontSlant->"Italic"], ". ", StyleBox["Center", "MR"], " and ", StyleBox["Centre", "MR"], " for instance are both accepted. The naming of the functions is in \ accordance with the ", StyleBox["Penguin Dictionary of Mathematics", FontSlant->"Italic"], ", second edition of 1998.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "It is recommended not to use the ", StyleBox["Mathematica", FontSlant->"Italic"], " packages ", StyleBox["Graphics`Polyhedra`", FontSlant->"Italic"], " or ", StyleBox["Graphics`Shapes`", FontSlant->"Italic"], " when ", StyleBox["Geometrica", FontSlant->"Italic"], " is open to avoid conflicts between objects of same name but different \ representations. " }], "Notes", CellTags->{"Geo.1", "About Geometrica05"}] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Calling ", StyleBox["Geometrica", FontSlant->"Italic"] }], "ObjectName", CellTags->{"Geo.1b", "Calling Geometrica"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ", "MR"], "At the beginning of a session dedicated to geometry, ", StyleBox["Geometrica", FontSlant->"Italic"], " is usually called with the command" }], "Notes", CellTags->{"Geo.1b", "Calling Geometrica"}], Cell[BoxData[ \(<< Geometrica`Geometrica05`\)], "Input", CellTags->{"Geo.1b", "Calling Geometrica"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ", "MR"], "Sometimes, within a ", StyleBox["Mathematica", FontSlant->"Italic"], " session, one may need a ", StyleBox["Geometrica", FontSlant->"Italic"], " function without knowing if ", StyleBox["Geometrica", FontSlant->"Italic"], " is activated, then ", StyleBox["Needs ", "MR"], "shall be used because then the program is loaded only at the first call. \ This is for instance the case for the on-line documentation of ", StyleBox["Geometrica", FontSlant->"Italic"], " where each series of examples starts with the statement:" }], "Notes", CellTags->{"Geo.1b", "Calling Geometrica"}], Cell[BoxData[ \(Needs["\"]\)], "Input", InitializationCell->True, CellTags->{"Geo.1b", "Calling Geometrica"}] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " notations used in the documentation of ", StyleBox["Geometrica", FontSlant->"Italic"], " " }], "ObjectName", CellTags->"Mathematica notations"], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["]", "MR"], " expression of operator or ", StyleBox["Head", "MR"], " ", StyleBox["f", "TI"], " and arguments ", StyleBox["x", "TI"], ", ... The arguments may be atoms or expressions. An expression may thus \ have several ", StyleBox["levels", FontSlant->"Italic"], ". The level", StyleBox[" depth", FontSlant->"Italic"], " of an atom is equal to the number of heads necessary to reach the atom. \ The syntax of an expression is always the same in the ", StyleBox["Mathematica", FontSlant->"Italic"], " language but familiar abbreviations are accepted. For instance {", StyleBox["a,", FontSlant->"Italic"], " ", StyleBox["b", FontSlant->"Italic"], "} is internally represented by ", StyleBox["List[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["] ", "MR"], "and ", StyleBox["a*b", FontSlant->"Italic"], " or ", StyleBox["a b", FontSlant->"Italic"], " (", StyleBox["a", FontSlant->"Italic"], "space", StyleBox["b", FontSlant->"Italic"], ") by ", StyleBox["Times[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" Clear[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["]", "MR"], " removes the definition of symbols ", StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], " When, for instance, symbols appear at the right hand of a definition, \ their names may have been used in previous calculations, then their values \ have to be erased. \n\[FilledSmallSquare]", StyleBox[" g@f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["] ", "MR"], "composes the action of ", StyleBox["f", "TI"], " and ", StyleBox["g", "TI"], " on the arguments ", StyleBox["x", "TI"], ", ... It is equivalent to ", StyleBox["g[f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["]]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" g@@f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["] ", "MR"], "replaces the head ", StyleBox["f", "MR"], " by the head ", StyleBox["g", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" u@@@{f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["],g[", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["],", "MR"], StyleBox[" ...", "TI"], StyleBox["} ", "MR"], "replaces the heads ", StyleBox["f", "MR"], " , ", StyleBox["g", "MR"], ", ... in the list by the head ", StyleBox["u", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" g/@f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["] ", "MR"], "maps ", StyleBox["g", "MR"], ", ... to the arguments of ", StyleBox["f", "MR"], " and is equivalent to ", StyleBox["f[g[", "MR"], StyleBox["x", "TI"], StyleBox["],", "MR"], StyleBox[" ...", "TI"], StyleBox["]", "MR"], "\n\[FilledSmallSquare]", StyleBox[" g//@f[", "MR"], StyleBox["x", "TI"], StyleBox["[", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["],", "MR"], StyleBox[" ...", "TI"], StyleBox["] ", "MR"], "maps ", StyleBox["g", "MR"], ", ... to all the levels of ", StyleBox["f", "MR"], " and is equivalent to ", StyleBox["f[g[", "MR"], StyleBox["x", "TI"], StyleBox["[g[", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["]]],", "MR"], StyleBox[" ...", "TI"], StyleBox["]\n", "MR"], "\[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["Geometrica", FontSlant->"Italic"], " is designed to manipulate simple and complex geometrical constructs as \ well. Almost all of the functions have the attribute ", StyleBox["Listable", "MR"], ". The only exceptions are the functions whose arguments are or may be \ lists in their definition and the most notable exceptions are ", StyleBox["Draw", "MR"], " and ", StyleBox["Draw3D", "MR"], ". A function ", StyleBox["f", "TI"], " with the ", StyleBox["Listable", "MR"], " attribute satisfies the following axioms:\n\t", StyleBox["f[{", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" y", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[" },", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["] = {f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["], f[", "MR"], StyleBox[" y", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["], ", "MR"], StyleBox["...", "TI"], StyleBox["}\n\t f[{", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" y", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[" },", "MR"], StyleBox[" ", "TI"], StyleBox["{", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[" },", "MR"], StyleBox[" ...", "TI"], StyleBox["] = {f[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["], f[", "MR"], StyleBox[" y", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["], ", "MR"], StyleBox["...", "TI"], StyleBox["}\n ", "MR"], "The lists may have an arbitrary number of components, they may be located \ at any place inside the function and there may be as many lists as arguments \ in the function but ", StyleBox["all the lists must have the same length", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" f[", "MR"], StyleBox["x_", "TI"], StyleBox[",", "MR"], StyleBox[" ...", "TI"], StyleBox["]", "MR"], " function of variables ", StyleBox["x", "TI"], ", ... \n\[FilledSmallSquare]", StyleBox[" f[", "MR"], StyleBox["#", "TI"], StyleBox[", ", "MR"], StyleBox["y , ...", "TI"], StyleBox["]&", "MR"], " pure function of the dummy first variable. The ", StyleBox["Slot", "MR"], " ", StyleBox["# ", "TI"], "replaces the first variable. A pure function is used when the name of the \ variables is irrelevant. It is also convenient to convert a function of \ several variables into a function of a smaller number of variables by \ assigning constant values to the other variables. The slot is then placed at \ the position of the variable, not necessarily the first one. Several slots \ can be used, they are then numbered: ", StyleBox["#!", "TI"], ", ", StyleBox["#2", "TI"], ", ... The arguments of the ", StyleBox["Geometrica", FontSlant->"Italic"], " function ", StyleBox["PPoint", "MR"], " are pure functions.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["a", "TI"], "\[Rule]", StyleBox["b", "TI"], " rule prepared for the replacement of left hand side ", StyleBox["a", "TI"], " by right hand side ", StyleBox["b", "TI"], " in some expression. The left hand side may be a symbol, an expression or \ a function. All the options of a function are rules.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["exp", "TI"], "/.", StyleBox["a", "TI"], "\[Rule]", StyleBox["b", "TI"], " replaces ", StyleBox["a", "TI"], " by ", StyleBox["b", "TI"], " at the first level of expression ", StyleBox["exp", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["exp", "TI"], "/.", StyleBox["a", "TI"], "\[Rule]", StyleBox["b", "TI"], "/.", StyleBox["c", "TI"], "\[Rule]", StyleBox["d", "TI"], "/.", StyleBox[" ... ", "TI"], StyleBox["or ", "TI", FontSlant->"Plain"], StyleBox["exp", "TI"], "/.{", StyleBox["a", "TI"], "\[Rule]", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], "\[Rule]", StyleBox["d", "TI"], StyleBox[",", FontSlant->"Italic"], ".", StyleBox[" ..", "TI"], StyleBox["} ", "TI", FontSlant->"Plain"], "replaces ", StyleBox["a", "TI"], " by ", StyleBox["b", "TI"], StyleBox[", then", "TI", FontSlant->"Plain"], StyleBox[" c", "TI"], StyleBox[" by ", "TI", FontSlant->"Plain"], StyleBox["d", "TI"], StyleBox[", ... ", "TI", FontSlant->"Plain"], "at the first level of expression ", StyleBox["exp", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["exp/", "TI"], "/.", StyleBox["a", "TI"], "\[Rule]", StyleBox["b/", "TI"], "/.", StyleBox["c", "TI"], "\[Rule]", StyleBox["d/", "TI"], "/.", StyleBox[" ... ", "TI"], StyleBox["or ", "TI", FontSlant->"Plain"], StyleBox["exp/", "TI"], "/.{", StyleBox["a", "TI"], "\[Rule]", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], "\[Rule]", StyleBox["d", "TI"], StyleBox[",", FontSlant->"Italic"], ".", StyleBox[" ..", "TI"], StyleBox["} ", "TI", FontSlant->"Plain"], "replaces ", StyleBox["a", "TI"], " by ", StyleBox["b", "TI"], StyleBox[", then", "TI", FontSlant->"Plain"], StyleBox[" c", "TI"], StyleBox[" by ", "TI", FontSlant->"Plain"], StyleBox["d", "TI"], StyleBox[", ... ", "TI", FontSlant->"Plain"], "at the first level of expression ", StyleBox["exp", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Apply", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["Head", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["Listable", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["Map", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["MapThread", ButtonStyle->"RefGuideLink"], ",", ButtonBox["ReplaceAll", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["Rule", ButtonStyle->"RefGuideLink"], "." }], "Notes", CellTags->"Mathematica notations"] }, Open ]], Cell[CellGroupData[{ Cell["Affine", "ObjectName", CellTags->{"Geo.2", "Affine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Affine[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["]", "MR"], " point, line, polygonal line or conic ", StyleBox["x", "TI"], "' deduced from object of same nature ", StyleBox["x", "TI"], " by affine transformation ", StyleBox["x", "TI"], "' = ", StyleBox["a x ", "TI"], "+ ", StyleBox["b ", "TI"], "of matrix", StyleBox[" a", "TI"], " and vector ", StyleBox[" b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" \[ScriptCapitalA][", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["] ", "MR"], "operator of affinity defined by matrix", StyleBox[" a", "TI"], " and vector ", StyleBox[" b", "TI"], ". The operator is applied to the object to be transformed by affinity in \ the form ", StyleBox["\[ScriptCapitalA][", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["][", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], ". It is portable and can be mapped to an expression.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Image", ButtonData:>{"Image"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Project", ButtonData:>{"Project"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rotate", ButtonData:>{"Rotate"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Translate", ButtonData:>{"Translate"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Zoom", ButtonData:>{"Zoom"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.2", "Affine"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Affine"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(c = Conic[1, 2];\)\), "\[IndentingNewLine]", \(\(a = {{1, 1}, {0, 1}};\)\), "\[IndentingNewLine]", \(\(b = {0, 0};\)\), "\[IndentingNewLine]", \(c1 = Affine[c, a, b]\), "\[IndentingNewLine]", \(\(Draw[Blue, c, Red, c1];\)\)}], "Input", CellTags->"Affine"], Cell[TextData[{ "Same shear for the ellipsoid created by rotation of ellipse ", StyleBox["c", "TI"], " about its focal axis." }], "ExampleText", CellTags->"Affine"], Cell[BoxData[{ \(\(c3D = To3D[c];\)\), "\[IndentingNewLine]", \(\(q = Quadric[c3D];\)\), "\[IndentingNewLine]", \(\(a = {{1, 1, 0}, {0, 1, 0}, {0, 0, 1}};\)\), "\[IndentingNewLine]", \(\(b = {0, 0, 0};\)\), "\[IndentingNewLine]", \(q1 = Affine[q, a, b]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, Red, q1];\)\)}], "Input", CellTags->"Affine"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Altitudes", "ObjectName", CellTags->{"Geo.3", "Altitudes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Altitudes[", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox[" option", "TI"], StyleBox["]", "MR"], " altitudes of triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Segment \[Rule] ", "MR"], StyleBox["v", "TI"], " lines are returned if ", StyleBox["v ", "TI"], "is set to ", StyleBox["False", "MR"], " (default). Segments joining the vertices to the pedals are returned if ", StyleBox["v ", "TI"], "is set to ", StyleBox["True", "MR"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Euler", ButtonData:>{"Euler"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerCircle", ButtonData:>{"EulerCircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerLine", ButtonData:>{"EulerLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Orthocenter", ButtonData:>{"Orthocenter"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.3", "Altitudes"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Altitudes"], Cell["Altitudes of a triangle in the plane.", "ExampleText", CellTags->"Altitudes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(h = Altitudes[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, h];\)\)}], "Input", CellTags->"Altitudes"], Cell[TextData[{ "Altitudes of triangle abc in 3D with option ", StyleBox["Segment", "MR"], " set to ", StyleBox["True", "MR"], "." }], "ExampleText", CellTags->"Altitudes"], Cell[BoxData[{ \(\(t = To3D@Triangle[];\)\), "\[IndentingNewLine]", \(h = Altitudes[t, Segment \[Rule] True]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, h];\)\)}], "Input", CellTags->"Altitudes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Angle", "ObjectName", CellTags->{"Geo.4", "Angle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Angle[", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR"], StyleBox[" ", "TI"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox["]", "MR"], " angle between normal vectors to lines or planes ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ". The angle is defined in the range (-\[Pi], \[Pi]).\n\ \[FilledSmallSquare]", StyleBox[" Angle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox[" O", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["]", "MR"], " angle between vectors ", StyleBox["Oa", "TI"], " and ", StyleBox[" Ob", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Angle[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " angles between the consecutive sides of polygonal line ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Bisector", ButtonData:>{"Bisector"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.4", "Angle"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Angle"], Cell["Angle between two 2D lines.", "ExampleText", CellTags->"Angle"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\({d1, d2} = ELine[a, {b, c}];\)\), "\[IndentingNewLine]", \(Angle[d1, d2]\)}], "Input", CellTags->"Angle"], Cell["Angle defined by three points.", "ExampleText", CellTags->"Angle"], Cell[BoxData[{ \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(Angle[c, a, b]\)}], "Input", CellTags->"Angle"], Cell["Angles of a triangle.", "ExampleText", CellTags->"Angle"], Cell[BoxData[{ \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(Angle[t]\)}], "Input", CellTags->"Angle"], Cell["Angle between two planes.", "ExampleText", CellTags->"Angle"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{0, 1, 1/3, 1/3}, {0, 0, 1, 1}, {0, 0, 0, 1}];\)\), "\[IndentingNewLine]", \(\({p1, p2} = Plane[a, b, {c, d}];\)\), "\[IndentingNewLine]", \(Angle[p1, p2]\)}], "Input", CellTags->"Angle"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Arc", "ObjectName", CellTags->{"Geo.5", "Arc"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Arc[", "MR"], StyleBox["O", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" t", "TI"], StyleBox["]", "MR"], " arc of circle of center ", StyleBox["O", "TI"], " starting at point", StyleBox[" a ", "TI"], "and of angle ", StyleBox["t", "TI"], ". The arc is expressed as a parametric point.\n\[FilledSmallSquare]", StyleBox[" Arc[", "MR"], StyleBox["O", "TI"], StyleBox[",", "MR"], StyleBox[" a", "TI"], StyleBox[",", "MR"], StyleBox[" b", "TI"], StyleBox["]", "MR"], " arc of circle of center ", StyleBox["O", "TI"], " starting at point", StyleBox[" a ", "TI"], "and ending on half line ", StyleBox["Ob", "TI"], " after anti-clockwise rotation. \n\[FilledSmallSquare]", StyleBox[" Arc[", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox[" t", "TI"], StyleBox["]", "MR"], " arc of circle on which the points ", StyleBox["m ", "TI"], "are such that the angle ", StyleBox["amb", "TI"], " is equal to ", StyleBox["t ", "TI"], ", ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], " being the origin and end of segment ", StyleBox["s", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Arc[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox[" ", "TI"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], StyleBox[" ", "TI"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " arc of conic ", StyleBox["c", "TI"], " starting at point of parameter ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ending at point of parameter ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" Arc[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox[" t", "TI"], StyleBox["]", "MR"], " arc obtained by rotation of 3D point ", StyleBox["m", "TI"], " about 3D line ", StyleBox["d", "TI"], ". The angle of rotation is ", StyleBox["t", "TI"], ". Its sense is given by the ", StyleBox["corkscrew rule", FontSlant->"Italic"], ". The orientation of the arc is the same as the sense of rotation of the \ handle of a corkscrew which proceeds from the origin to the end of the vector \ which orients the line.", "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CLine", ButtonData:>{"CLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ELine", ButtonData:>{"ELine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rotate", ButtonData:>{"Rotate"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.5", "Arc"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Arc"], Cell[TextData[{ "Arc of circle with center at ", StyleBox["a", "TI"], ", starting at ", StyleBox["b", "TI"], " and ending on half line ", StyleBox["ac", "TI"], "." }], "ExampleText", CellTags->"Arc"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(ar = Arc[a, b, c]\), "\[IndentingNewLine]", \(\(te = Legend[{"\", "\", "\"}, {a, b, c}];\)\), "\[IndentingNewLine]", \(\(Draw[te, Blue, ar];\)\)}], "Input", CellTags->"Arc"], Cell[TextData[{ "Arc of center ", StyleBox["a", "TI"], ", angle 11\[Pi]/6 and starting at ", StyleBox["b", "TI"], "." }], "ExampleText", CellTags->"Arc"], Cell[BoxData[{ \(ar = Arc[a, b, 11 \[Pi]/6]\), "\[IndentingNewLine]", \(\(te = Legend[{"\", "\"}, {a, b}];\)\), "\[IndentingNewLine]", \(\(Draw[te, Red, ar];\)\)}], "Input", CellTags->"Arc"], Cell[TextData[{ "Arc of points ", StyleBox["m", "TI"], " such that (", StyleBox["ma", "TI"], ", ", StyleBox["mb", "TI"], ") = \[Pi]/6." }], "ExampleText", CellTags->"Arc"], Cell[BoxData[{ \(\(s = Segment[a, b];\)\), "\[IndentingNewLine]", \(ar = Arc[s, \[Pi]/6]\), "\[IndentingNewLine]", \(\(Draw[Blue, s, Red, ar];\)\)}], "Input", CellTags->"Arc"], Cell["\<\ Arc of parabola of parameter 1 limited by points of parameters -1 and 1.\ \>", "ExampleText", CellTags->"Arc"], Cell[BoxData[{ \(\(p = Parabola[1];\)\), "\[IndentingNewLine]", \(ar = Arc[p, \(-1\), 1]\), "\[IndentingNewLine]", \(\(Draw[Red, ar];\)\)}], "Input", CellTags->"Arc"], Cell[TextData[{ "3D arc obtained by rotation of point ", StyleBox["m", "TI"], " about ", StyleBox["x", "TI"], " axis with angle 3\[Pi]/2." }], "ExampleText", CellTags->"Arc"], Cell[BoxData[{ \(\(m = CPoint[0, 0, 1];\)\), "\[IndentingNewLine]", \(\(d = ELine @@ CPoint[{0, 1}, 0, 0];\)\), "\[IndentingNewLine]", \(ar = Arc[m, d, 3 Pi/2]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, m, d, Red, Arrow[ar, 5]];\)\)}], "Input", CellTags->"Arc"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Area", "ObjectName", CellTags->{"Geo.6", "Area"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Area[", "MR"], StyleBox["x", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["options", "TI"], StyleBox["]", "MR"], " area of ellipse, polygon, polyhedron or surface ", StyleBox["x", "TI"], ". The polygons may be convex or concave. For quadrics, the parametric form \ of the quadric is used.\n\[FilledSmallSquare]", StyleBox[" Area[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " area of trapezoid \[Alpha]", StyleBox["ab\[Beta].", "TI"], " The points ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], " of the conic ", StyleBox["c ", "TI"], "have parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ". The points \[Alpha] and \[Beta] are the projections of ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], " on the focal axis of ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" PRange\[Rule]{{", "MR"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox["b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["},{", "MR"], StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}}", "MR"], " determines the limits of integration ", StyleBox["{", "MR"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox["b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "MR"], " and ", StyleBox["{", "MR"], StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "MR"], " for the first and second parameter.\n\[FilledSmallSquare]", StyleBox[" N \[Rule] ", "MR"], StyleBox["v", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], " forces numerical integration when ", StyleBox["v", FontSlant->"Italic"], " is ", StyleBox["True", FontSlant->"Italic"], ". By default, symbolic integration is tried (", StyleBox["N \[Rule] ", "MR"], StyleBox["False", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], ")", ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Arc", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.6", "Area"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Area"], Cell["Area of a circle tested in the plane and for a 3D circle.", \ "ExampleText", CellTags->"Area"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(c = ECircle[];\)\), "\[IndentingNewLine]", \(Area[c]\), "\[IndentingNewLine]", \(Area@To3D[c]\)}], "Input", CellTags->"Area"], Cell["\<\ Area limited by an arc of hyperbola and the focal axis. The origin and \ extremity of the arc are the points of parameters 1/2 and 1.\ \>", "ExampleText", CellTags->"Area"], Cell[BoxData[{ \(\(h = Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(Area[h, 1/2, 1]\)}], "Input", CellTags->"Area"], Cell["Area of a regular dodecahedron.", "ExampleText", CellTags->"Area"], Cell[BoxData[{ \(\(a =. ;\)\), "\[IndentingNewLine]", \(\(d = PlatonicSolid[12, a];\)\), "\[IndentingNewLine]", \(Area[d]\)}], "Input", CellTags->"Area"], Cell["Area of a sphere.", "ExampleText", CellTags->"Area"], Cell[BoxData[{ \(r =. ; \), "\[IndentingNewLine]", \(sp = Sphere[r]; \), "\[IndentingNewLine]", \(Area[sp]\)}], "Input", CellTags->"Area"], Cell[TextData[{ "Area of an octant of sphere. The radius cannot be symbolic in that case \ because the calculation uses the parametric form of the sphere given by ", StyleBox["QuadricPoint", "MR"], ". " }], "ExampleText", CellTags->"Area"], Cell[BoxData[ \(Area[Sphere[], PRange \[Rule] {{0, Pi/2}, {0, Pi/2}}]\)], "Input", CellTags->"Area"], Cell[TextData[{ "When the area cannot be calculated analytically, a numerical value is \ returned using the ", StyleBox["N", "MR"], " option", "." }], "ExampleText", CellTags->"Area"], Cell[BoxData[{ \(q = Quadric[1, 2, 3]; \), "\[IndentingNewLine]", \(Area[q, N \[Rule] True]\)}], "Input", CellTags->"Area"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Arrow", "ObjectName", CellTags->{"Geo.7", "Arrow"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Arrow[", "MR"], StyleBox["l", "TI"], StyleBox["]", "MR"], " graphics function of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which terminates polygonal line or curve ", StyleBox["l", "TI"], " with an arrow.\n\[FilledSmallSquare]", StyleBox[" Arrow[", "MR"], StyleBox["l", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " terminates ", StyleBox["l", "TI"], " with an arrow of size ", StyleBox["n", "TI"], " printer units (default: 10).\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Dimension", ButtonData:>{"Dimension"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.7", "Arrow"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Arrow"], Cell["\<\ Two segments with arrows of respective sizes 10 (default) and 20.\ \>", "ExampleText", CellTags->"Arrow"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c, d} = CPoint[{0, 0, 1, 1}, {0, 1, 0, 1}];\)\), "\[IndentingNewLine]", \(\({s1, s2} = Segment[{a, c}, {b, d}];\)\), "\[IndentingNewLine]", \(\(Draw[Arrow[s1], Arrow[s2, 20]];\)\)}], "Input", CellTags->"Arrow"], Cell["Arrow at the end of a broken line.", "ExampleText", CellTags->"Arrow"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{0, 0, 1, 1}, {0, 1, 0, 1}];\)\), "\[IndentingNewLine]", \(\(s = Segment[a, b, c, d];\)\), "\[IndentingNewLine]", \(\(Draw[Arrow[s]];\)\)}], "Input", CellTags->"Arrow"], Cell["Same line in 3D.", "ExampleText", CellTags->"Arrow"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{0, 0, 1, 1}, {0, 1, 0, 1}];\)\), "\[IndentingNewLine]", \(\(s = Segment[a, b, c, d];\)\), "\[IndentingNewLine]", \(\(Draw3D[Arrow@To3D[s]];\)\)}], "Input", CellTags->"Arrow"], Cell["Arrow at the end of an arc of parabola of parameter 1.", "ExampleText", CellTags->"Arrow"], Cell[BoxData[{ \(\(p = Parabola[1];\)\), "\[IndentingNewLine]", \(\(ar = Arc[p, \(-1\), 1];\)\), "\[IndentingNewLine]", \(\(Draw[Red, Arrow[ar]];\)\)}], "Input", CellTags->"Arrow"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Asymptotes", "ObjectName", CellTags->{"Geo.8", "Asymptotes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Asymptotes[", "MR"], StyleBox["h", "TI"], StyleBox["]", "MR"], " asymptotes of hyperbola ", StyleBox["h", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Hyperbola", ButtonData:>{"Hyperbola"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.8", "Asymptotes"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Asymptotes"], Cell["\<\ Asymptotes of an equilateral hyperbola in the plane and in 3D.\ \>", "ExampleText", CellTags->"Asymptotes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(h = Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(as = Asymptotes[h]\), "\[IndentingNewLine]", \(\(Draw[Blue, h, Red, as];\)\)}], "Input", CellTags->"Asymptotes"], Cell[BoxData[{ \(\(h = To3D@Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(as = Asymptotes[h]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, h, Red, as];\)\)}], "Input", CellTags->"Asymptotes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Axes", "ObjectName", CellTags->{"Geo.8", "Axes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Axes[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " list of axes of conic or quadric ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.8", "Axes"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Axes"], Cell["Axes of an equilateral hyperbola in the plane and in 3D.", "ExampleText", CellTags->"Axes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(h = Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(ax = Axes[h]\), "\[IndentingNewLine]", \(\(Draw[Blue, h, Red, ax];\)\)}], "Input", CellTags->"Axes"], Cell[BoxData[{ \(\(h = To3D@Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(ax = Axes[h]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, h, Red, ax];\)\)}], "Input", CellTags->"Axes"], Cell["Axes of a hyperboloid of two sheets.", "ExampleText", CellTags->"Axes"], Cell[BoxData[{ \(\(q = HyperboloidOfTwoSheets[];\)\), "\[IndentingNewLine]", \(ax = Axes[q]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, Red, ax];\)\)}], "Input", CellTags->"Axes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["AxisOfPerspective", "ObjectName", CellTags->{"Geo.9", "AxisOfPerspective"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" AxisOfPerspective[", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " axis of perspective, if it exists, of triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ". The axis of perspective is the line on which lie the intersections of \ lines collinear to pairs of corresponding sides of two triangles in \ perspective.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.9", "AxisOfPerspective"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"AxisOfPerspective"], Cell[TextData[{ "The triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], " are in perspective by construction since they have a common vertex, the \ origin, and two collinear sides. " }], "ExampleText", CellTags->"AxisOfPerspective"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t1 = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\({d, e} = Pointer[Segment[a, {b, c}], {1/2, 2/3}];\)\), "\[IndentingNewLine]", \(\(t2 = Triangle[a, d, e];\)\), "\[IndentingNewLine]", \(AxisOfPerspective[t1, t2]\)}], "Input", CellTags->"AxisOfPerspective"], Cell["\<\ A detailed explanation of the construction of the axis of perspective is \ obtained using \ \>", "ExampleText", CellTags->"AxisOfPerspective"], Cell[BoxData[ \(Desargues[t1, t2]\)], "Input", CellTags->"AxisOfPerspective"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Barycenter", "ObjectName", CellTags->{"Geo.10", "Barycenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Barycenter[{", "MR"], StyleBox[" ", "TI"], Cell[BoxData[ \(TraditionalForm\`m\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_1\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`m\_2\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], StyleBox["},", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " barycenter of the points ", Cell[BoxData[ \(TraditionalForm\`m\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`m\_2\)]], ", ... of respective masses ", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ", ... \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CenterOfGravity", ButtonData:>{"CenterOfGravity"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.10", "Barycenter"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Barycenter"], Cell[TextData[{ StyleBox["Barycenter", "MR"], " does not have the ", StyleBox["Listable", "MR"], " attribute since there are lists in its syntax. The data for lists of 2D \ or 3D points can be prepared in the following way." }], "ExampleText", CellTags->"Barycenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(Clear[x1, x2, x3, x4, y1, y2, y3, y4, w1, w2, w3, w4];\)\), "\[IndentingNewLine]", \(\(m = CPoint[{x1, x2, x3, x4}, {y1, y2, y3, y4}];\)\), "\[IndentingNewLine]", \(\(w = {w1, w2, w3, w4};\)\), "\[IndentingNewLine]", \(\(mw = Transpose[{m, w}];\)\), "\[IndentingNewLine]", \(Barycenter @@ mw\)}], "Input", CellTags->"Barycenter"], Cell[BoxData[{ \(m = CPoint[{x1, x2, x3, x4}, {y1, y2, y3, y4}, {z1, z2, z3, z4}]; \), "\[IndentingNewLine]", \(mw = Transpose[{m, w}]; \), "\[IndentingNewLine]", \(Barycenter @@ mw\)}], "Input", CellTags->"Barycenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["BarycentricCoordinates", "ObjectName", CellTags->{"Geo.11", "BarycentricCoordinates"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" BarycentricCoordinates[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " barycentric coordinates of 2D cartesian point, line or conic ", StyleBox["x", "TI"], " in the affine system of triangle ", StyleBox["t", "TI"], ". If a point is identified with a vector then, in the plane, any point ", StyleBox["m", "TI"], " is the linear combination of the vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c ", "TI"], "of triangle ", StyleBox["t", "TI"], ": ", StyleBox["m", "TI"], " = \[Alpha]", StyleBox["a", "TI"], " + \[Beta]", StyleBox["b", "TI"], " + \[Gamma]", StyleBox["c", "TI"], ". The coefficients \[Alpha], \[Beta], \[Gamma] are the barycentric \ coordinates of ", StyleBox["m", "TI"], " and satisfy the extra condition: \[Alpha] + \[Beta] + \[Gamma] = 1. For \ line and conic, the matrix A = ", Cell[BoxData[ FormBox[ RowBox[{"(", GridBox[{ {\(x\_1\), \(x\_2\), \(x\_3\)}, {\(y\_1\), \(y\_2\), \(y\_3\)}, {"1", "1", "1"} }], ")"}], TraditionalForm]]], " of the coordinates (", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\_1\)]], ") of ", StyleBox["a", FontSlant->"Italic"], ", (", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\_2\)]], ") of ", StyleBox["b", FontSlant->"Italic"], " and (", Cell[BoxData[ \(TraditionalForm\`x\_3\)]], ", ", Cell[BoxData[ \(TraditionalForm\`y\_3\)]], ") of ", StyleBox["c", FontSlant->"Italic"], " ", "is introduced. The barycentric coordinates of a line of coefficients (", StyleBox["u", FontSlant->"Italic"], ", ", StyleBox["v", FontSlant->"Italic"], ", ", StyleBox["w", FontSlant->"Italic"], ") are given by scalar product (", StyleBox["u", FontSlant->"Italic"], ", ", StyleBox["v", FontSlant->"Italic"], ", ", StyleBox["w", FontSlant->"Italic"], ").A. A conic of coefficients (", StyleBox["r", FontSlant->"Italic"], ", ", StyleBox["s", FontSlant->"Italic"], ", ", StyleBox["t", FontSlant->"Italic"], ", ", StyleBox["u", FontSlant->"Italic"], ", ", StyleBox["v", FontSlant->"Italic"], ", ", StyleBox["w", FontSlant->"Italic"], ") and matrix M = ", Cell[BoxData[ FormBox[ RowBox[{"(", GridBox[{ {"r", "s", "u"}, {"s", "t", "v"}, {"u", "v", "w"} }], ")"}], TraditionalForm]]], " has barycentric coordinates given by the matrix ", Cell[BoxData[ FormBox[ StyleBox[ OverscriptBox[ StyleBox["M", FontSlant->"Plain"], "~"], FontSlant->"Italic"], TraditionalForm]]], ".A.M. \n\[FilledSmallSquare]", StyleBox[" BarycentricCoordinates[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " barycentric coordinates of 3D point ", StyleBox["m", "TI"], " in the affine system of tetrahedron ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CartesianCoordinates", ButtonData:>{"CartesianCoordinates"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.11", "BarycentricCoordinates"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"BarycentricCoordinates"], Cell["\<\ Barycentric coordinates of symbolic point, symbolic line and ellipse in a \ triangle.\ \>", "ExampleText", CellTags->"BarycentricCoordinates"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(Clear[u, v, w, x, y]\), "\[IndentingNewLine]", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(\(m = CPoint[x, y];\)\), "\[IndentingNewLine]", \(\(d = CLine[u, v, w];\)\), "\[IndentingNewLine]", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(BarycentricCoordinates[m, t]\), "\[IndentingNewLine]", \(BarycentricCoordinates[d, t]\), "\[IndentingNewLine]", \(BarycentricCoordinates[e, t]\)}], "Input", CellTags->"BarycentricCoordinates"], Cell[TextData[{ "Barycentric coordinates of 3D point ", StyleBox["a", "TI"], " in tetrahedron ", StyleBox["t", "TI"], "." }], "ExampleText", CellTags->"BarycentricCoordinates"], Cell[BoxData[{ \(\(t = Tetrahedron[];\)\), "\[IndentingNewLine]", \(\(m = CPoint[1, \(-1\), 2];\)\), "\[IndentingNewLine]", \(BarycentricCoordinates[m, t]\)}], "Input", CellTags->"BarycentricCoordinates"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Bezier", "ObjectName", CellTags->{"Geo.12", "Bezier"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Bezier[{", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["}", "TI", FontSlant->"Plain"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " Bezier line passing near 2D or 3D points ", StyleBox["a", "TI"], StyleBox[", ", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], " ... A Bezier line is a parametric curve of type ", StyleBox["PPoint", FontSlant->"Italic"], " whose coordinates are Bernstein polynomials of degree 9.\n\ \[FilledSmallSquare]", StyleBox[" Bezier[{", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["}", "TI", FontSlant->"Plain"], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_a\)]], ",", Cell[BoxData[ \(TraditionalForm\`w\_b\)]], ",...", StyleBox["},", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " Bezier line passing near 2D or 3D points ", StyleBox["a", "TI"], StyleBox[", ", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], " ... weighted by ", Cell[BoxData[ \(TraditionalForm\`w\_a\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_b, ... \)]], "\n\[FilledSmallSquare]", StyleBox[" Bezier[{", "MR"], Cell[BoxData[ \(TraditionalForm\`a\_11\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`a\_12\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["}", "TI", FontSlant->"Plain"], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`a\_21\)]], ",", Cell[BoxData[ \(TraditionalForm\`a\_22\)]], ",...", StyleBox["},", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " Bezier surface passing near 3D points ", Cell[BoxData[ \(TraditionalForm\`a\_11\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`a\_12\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[", ", "MR"], Cell[BoxData[ \(TraditionalForm\`a\_21\)]], ",", Cell[BoxData[ \(TraditionalForm\`\(\(\ \)\(a\_22\)\)\)]], ",...", StyleBox[",", "MR"], " ... \n\[FilledSmallSquare]", StyleBox[" PlotPoints \[Rule] ", "MR"], StyleBox["n", "TI"], " number of definition points (default: 25). \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cubic", ButtonData:>{"Cubic"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.12", "Bezier"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Bezier"], Cell["Fit of a sine curve. ", "ExampleText", CellTags->"Bezier"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Bezier"], Cell[BoxData[{ \(data = CPoint[Range[10], Sin@Range[10]]; \), "\n", \(m = Bezier[data]\), "\[IndentingNewLine]", \(Draw[Blue, data, Red, m]; \)}], "Input", CellTags->"Bezier"], Cell[TextData[{ "Bezier line for the same data points but with weight vector ", StyleBox["w", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"Bezier"], Cell[BoxData[{ \(w = {1, 3, 1, 10, 100, 1, 3, 5, 1, 1}; \), "\[IndentingNewLine]", \(m = Bezier[data, w]; \), "\[IndentingNewLine]", \(Draw[Blue, data, Red, m]; \)}], "Input", CellTags->"Bezier"], Cell["\<\ Bezier surface fitting the matrix of points m. Each row of points corresponds \ to an iso-curve. The simultaneous representation of the data points and of \ the Bezier surface shows how the points are distributed about the surface. \ The points are hidden in the valleys and apparent above the crests.\ \>", "ExampleText", CellTags->"Bezier"], Cell[BoxData[{ \(m = Table[CPoint[1.1\ u, 1.6\ v, \((5\ Cos[u] + u\ v\ Cos[v]\ Sin[v])\)/10], {u, \(-4\), 4, .1}, {v, \(-3\), 3, .1}]; \), "\[IndentingNewLine]", \(s = Bezier[m]\), "\[IndentingNewLine]", \(ct = Append[Flatten@Table[{Black, White}, {n, 40}], Black]\), "\n", \(mc = Thread[List[ct, m]]; \), "\n", \(Draw3D[Paint[s], AbsolutePointSize[3], mc]; \)}], "Input", CellTags->"Bezier"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Bisector", "ObjectName", CellTags->{"Geo.13", "Bisector"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Bisector[", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox["]", "MR"], " bisectors of lines or planes ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" Bisector[", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox[",", "MR"], StyleBox["m", "TI"], StyleBox["]", "MR"], " bisector of lines or planes ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " belonging to the half plane or to the dihedral containing point ", StyleBox["m", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Bisector[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR", FontSlant->"Plain"], StyleBox["O", "TI"], StyleBox[",", "MR", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox["]", "MR"], " bisector of angle ", StyleBox["aOb", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Bisector[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " line in 2D or plane in 3D perpendicular to segment ", StyleBox["p", "TI"], " at its midpoint or to sides of polygonal line ", StyleBox["p ", "TI"], "at their midpoints.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Angle", ButtonData:>{"Angle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Circumcenter", ButtonData:>{"Circumcenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Incenter", ButtonData:>{"Incenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Excenters", ButtonData:>{"Excenters"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.13", "Bisector"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Bisector"], Cell["Bisectors of two lines in the plane.", "ExampleText", CellTags->"Bisector"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\({d1, d2} = ELine[a, {b, c}];\)\), "\[IndentingNewLine]", \(bi = Bisector[d1, d2]\), "\[IndentingNewLine]", \(\(m = CPoint[1, 1];\)\), "\[IndentingNewLine]", \(bi1 = Bisector[d1, d2, m]\), "\[IndentingNewLine]", \(\(te1 = Legend[{\*"\"\<\!\(b\_1\)\>\"", \*"\"\<\!\(b\_2\)\>\""}, bi];\)\), "\[IndentingNewLine]", \(\(te2 = Legend["\", m, Offset \[Rule] {1, Pi/4}];\)\), "\[IndentingNewLine]", \(\(Draw[te1, te2, Blue, d1, d2, m, Red, bi];\)\)}], "Input", CellTags->"Bisector"], Cell["Prescribed bisector of two planes.", "ExampleText", CellTags->"Bisector"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{0, 1, 1/3, 1/3}, {0, 0, 1, 1}, {0, 0, 0, 1}];\)\), "\[IndentingNewLine]", \(\({p1, p2} = Plane[a, b, {c, d}];\)\), "\[IndentingNewLine]", \(\(m = CPoint[2, \(-3\), 2];\)\), "\[IndentingNewLine]", \(bi = Bisector[p1, p2, m]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, p1, p2, m, CLine[p1, p2], Red, bi];\)\)}], "Input", CellTags->"Bisector"], Cell["\<\ Bisectors of the angles of a triangle illustrate the third definition. All of \ them meet at the incenter which is taken as a common origin for the \ drawing.\ \>", "ExampleText", CellTags->"Bisector"], Cell[BoxData[{ \(t = Triangle[]; \), "\[IndentingNewLine]", \({a, b, c} = Vertices[t]; \), "\[IndentingNewLine]", \(an = Partition[{a, b, c, a, b}, 3, 1]; \), "\[IndentingNewLine]", \(bi = Bisector @@@ an\), "\[IndentingNewLine]", \(Draw[Blue, t, Red, DrawRange[\(-1.2\), 1.2], LineOrigin@Incenter[t], bi]; \)}], "Input", CellTags->"Bisector"], Cell["\<\ Bisectors of the sides of a triangle illustrate the fourth definition. All of \ them meet at the circumcenter which is taken as a common origin for the \ drawing. \ \>", "ExampleText", CellTags->"Bisector"], Cell[BoxData[{ \(t = Triangle[]; \), "\[IndentingNewLine]", \(bi = Bisector[t]\), "\[IndentingNewLine]", \(Draw[Blue, t, Red, DrawRange[\(-1\), 1], bi]; \)}], "Input", CellTags->"Bisector"], Cell[TextData[{ "The construction cannot be extended to 3D directly because the bisectors \ are then planes. One solution consists of joining the circumcenter to the \ midpoints ", StyleBox["m", "TI"], " of the sides." }], "ExampleText", CellTags->"Bisector"], Cell[BoxData[{ \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\(cc = Circumcenter[t];\)\), "\[IndentingNewLine]", \(\(m = Pointer[Sides[t], 1/2];\)\), "\[IndentingNewLine]", \(bi = ELine[cc, m]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, DrawRange[\(-1\), 1], LineOrigin[cc], bi];\)\)}], "Input", CellTags->"Bisector"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Brianchon", "ObjectName", CellTags->{"Geo.14", "Brianchon"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Brianchon[", "MR"], StyleBox["c", "TI"], StyleBox[", {", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], StyleBox["}]", "MR"], " graph of Brianchon's theorem and common intersection of the diagonals of \ the hexagon tangent to conic ", StyleBox["c", "TI"], " at points of parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ", ...,", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], ". \n Brianchon's theorem states that:\n ", StyleBox["The diagonals which join the opposite vertices of an hexagon \ tangent to a conic intersect at the same point.", "Theorem"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pascal", ButtonData:>{"Pascal"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.14", "Brianchon"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Brianchon"], Cell["\<\ Brianchon's theorem for an ellipse with the first six integers as parameters. \ The hexagon drawn in blue touches the ellipse at black points. The diagonals \ drawn in red meet at Brianchon's point represented by a red dot.\ \>", "ExampleText", CellTags->"Brianchon"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(\(par = Range[6];\)\), "\[IndentingNewLine]", \(Brianchon[e, par]\)}], "Input", CellTags->"Brianchon"], Cell[TextData[{ "For the parabola ", StyleBox["p", "TI"], ", the hexagon is concave." }], "ExampleText", CellTags->"Brianchon"], Cell[BoxData[{ \(\(p = Parabola[1];\)\), "\[IndentingNewLine]", \(\(par = Range[6] - 3;\)\), "\[IndentingNewLine]", \(Brianchon[p, par]\)}], "Input", CellTags->"Brianchon"], Cell[TextData[{ "For the hyperbola ", StyleBox["h", "TI"], ", the hexagon is stellated." }], "ExampleText", CellTags->"Brianchon"], Cell[BoxData[{ \(\(h = Conic[\(-2\), 1];\)\), "\[IndentingNewLine]", \(\(par = { .3, .5, 1, \(- .7\), \(-2\), \(-4\)};\)\), "\[IndentingNewLine]", \(Brianchon[h, par]\)}], "Input", CellTags->"Brianchon"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["BrianchonPoint", "ObjectName", CellTags->{"Geo.15", "BrianchonPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" BrianchonPoint[", "MR"], StyleBox["c", "TI"], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], StyleBox["}]", "MR"], " common intersection of the diagonals of the hexagon tangent to conic ", StyleBox["c", "TI"], " at points of parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ", ...,", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Brianchon", ButtonData:>{"Brianchon"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.15", "BrianchonPoint"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"BrianchonPoint"], Cell["\<\ Brianchon's point of the ellipse of semi-major axis 2 and semi-minor axis 1. \ \ \>", "ExampleText", CellTags->"BrianchonPoint"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(\(par = Range[6];\)\), "\[IndentingNewLine]", \(BrianchonPoint[e, par]\)}], "Input", CellTags->"BrianchonPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CanonicalForm", "ObjectName", CellTags->{"Geo.16", "CanonicalForm"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CanonicalForm[", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], StyleBox[", parametric form of the volume limited by quadric ", "MR", FontFamily->"Times New Roman"], StyleBox["q. ", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["It is", "MR", FontFamily->"Times New Roman"], " expressed as a parametric point whose coordinates are functions of three \ variables. The reference frame is the local frame of ", StyleBox["q", FontSlant->"Italic"], " and not the absolute frame in which the coordinates of a point are \ usually given. In the local frame, the equation and the parametric \ representation of ", StyleBox["q", FontSlant->"Italic"], " have their simplest form hence the name ", StyleBox["canonical form", FontSlant->"Italic"], " for the function. ", "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Volume", ButtonData:>{"Volume"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "CanonicalForm"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CanonicalForm"], Cell["Parametric form of the interior of an ellipsoid.", "ExampleText", CellTags->"CanonicalForm"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"CanonicalForm"], Cell[BoxData[{ \(q = CQuadric[\(-5\), \(-7\), \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3]; \), "\[IndentingNewLine]", \(m = CanonicalForm[q]\)}], "Input", CellTags->"CanonicalForm"], Cell[TextData[{ "This representation differs from that obtained with ", StyleBox["Pointer", "MR"], "." }], "ExampleText", CellTags->"CanonicalForm"], Cell[BoxData[ \(Pointer[q, u, v]\)], "Input", CellTags->"CanonicalForm"], Cell[TextData[{ "Due to the different system of coordinates, the representations of ", StyleBox["q", FontSlant->"Italic"], " are also different. It must be noted that a volume cannot be represented, \ the third parameter ", StyleBox["#3", FontSlant->"Italic"], " has to be specified and its range of variations must be deleted." }], "ExampleText", CellTags->"CanonicalForm"], Cell[BoxData[{ \(ell = m /. \((PRange \[Rule] {a_, b_, c_, d_})\) \[Rule] \((PRange \[Rule] {a, b, d})\); \), "\[IndentingNewLine]", \(ell1 = ell /. #3 \[Rule] 1; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, Red, ell1]; \)}], "Input", CellTags->"CanonicalForm"], Cell[TextData[{ "By varying the third parameter, ", StyleBox["Russian dolls", FontSlant->"Italic"], " can be created." }], "ExampleText", CellTags->"CanonicalForm"], Cell[BoxData[{ \({ell2, ell3} = {ell /. #3 \[Rule] .5, ell /. #3 \[Rule] .25}; \), "\[IndentingNewLine]", \(Draw3D[Red, ell1, Green, ell2, Blue, ell3]; \)}], "Input", CellTags->"CanonicalForm"], Cell["\<\ This exercise is especially important to elucidate what the volume limited by \ the quadric is really.\ \>", "ExampleText", CellTags->"CanonicalForm"], Cell[BoxData[{ \(q = HyperbolicParaboloid[]\), "\[IndentingNewLine]", \(m = CanonicalForm[q]\), "\[IndentingNewLine]", \(hp = m /. \((PRange \[Rule] {a_, b_, c_, d_})\) \[Rule] \((PRange \[Rule] {a, b, d})\); \), "\[IndentingNewLine]", \({hp1, hp2, hp3} = {hp /. #3 \[Rule] 1, hp /. #3 \[Rule] .5, hp /. #3 \[Rule] .25}; \), "\[IndentingNewLine]", \(Draw3D[Red, hp1, Green, hp2, Blue, hp3]; \)}], "Input", CellTags->"CanonicalForm"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CanonicalViewPoint", "ObjectName", CellTags->{"Geo.16", "CanonicalViewPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CanonicalViewPoint[", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], ". The ", StyleBox["Mathematica", FontSlant->"Italic"], " view point {1.3, -2.4, 2.} ", StyleBox["is located in the canonical reference frame of the quadric ", "MR", FontFamily->"Times New Roman"], StyleBox["q", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" and can be used at the right hand side of the rule ", "MR", FontFamily->"Times New Roman"], StyleBox["ViewPoint", "MR"], StyleBox[" in ", "MR", FontFamily->"Times New Roman"], StyleBox[" ", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], StyleBox["Draw3D", "TI", FontFamily->"Courier", FontSlant->"Plain"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricCanonicalViewPoint", ButtonData:>{"QuadricCanonicalViewPoint"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "CanonicalViewPoint"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CanonicalViewPoint"], Cell["View point of a hyperboloid of one sheet.", "ExampleText", CellTags->"CanonicalViewPoint"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(q = CQuadric[\(-5\), 7, \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(vp = CanonicalViewPoint[q]\)}], "Input", CellTags->"CanonicalViewPoint"], Cell["Representation of the hyperboloid with the default option.", \ "ExampleText", CellTags->"CanonicalViewPoint"], Cell[BoxData[ \(Draw3D[Paint[q], Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}]; \)], "Input", CellTags->"CanonicalViewPoint"], Cell["Representation of the hyperboloid in its standard frame.", "ExampleText", CellTags->"CanonicalViewPoint"], Cell[BoxData[ \(Draw3D[Paint[q], ViewPoint \[Rule] vp, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}]; \)], "Input", CellTags->"CanonicalViewPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CartesianCoordinates", "ObjectName", CellTags->{"Geo.132", "CartesianCoordinates"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CartesianCoordinates[{\[Alpha],\[Beta],\[Gamma]},", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " 2D cartesian point or cartesian line of barycentric coordinates \ {\[Alpha],\[Beta],\[Gamma]} in triangle ", StyleBox["t", "TI"], ". The choice between point and line is defined by the option ", StyleBox["CPoint", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" CPoint \[Rule]", "MR"], " ", StyleBox["x", "TI"], ". Whether ", StyleBox["x", "TI"], " is ", StyleBox["True ", "MR"], "(default) or ", StyleBox["False", "MR"], ", a cartesian point or a cartesian line is returned. \n\ \[FilledSmallSquare]", StyleBox[" CartesianCoordinates[{\[Rho],\[Sigma],\[Tau],\[CurlyPhi],\[Chi],\ \[Psi]},", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " 2D cartesian conic of barycentric coordinates {", StyleBox["\[Rho],\[Sigma],\[Tau],\[CurlyPhi],\[Chi],\[Psi]", "MR"], "} in triangle ", StyleBox["t", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["BarycentricCoordinates", ButtonData:>{"BarycentricCoordinates"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.132", "CartesianCoordinates"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CartesianCoordinates"], Cell[TextData[{ StyleBox["CartesianCoordinates", "MR"], " is the converse transformation of ", StyleBox["BarycentricCoordinates", "MR"], ". It is applied to the barycentric coordinates derived in ", StyleBox["BarycentricCoordinates", "MR"], "." }], "ExampleText", CellTags->"CartesianCoordinates"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(Clear[x, y, u, v, w];\)\), "\[IndentingNewLine]", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(\(m = CPoint[x, y];\)\), "\[IndentingNewLine]", \(\(d = CLine[u, v, w];\)\), "\[IndentingNewLine]", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(\(bm = BarycentricCoordinates[m, t];\)\), "\[IndentingNewLine]", \(\(bd = BarycentricCoordinates[d, t];\)\), "\[IndentingNewLine]", \(\(be = BarycentricCoordinates[e, t];\)\), "\[IndentingNewLine]", \(CartesianCoordinates[bm, t]\), "\n", \(CartesianCoordinates[bd, t, CPoint \[Rule] False]\), "\n", \(CartesianCoordinates[be, t]\)}], "Input", CellTags->"CartesianCoordinates"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CConic", "ObjectName", CellTags->{"Geo.16", "CConic"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CConic[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " cartesian conic of equation ", StyleBox["r", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ 2", StyleBox["sxy + t", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "+ 2", StyleBox["ux + 2vy + w = ", "TI"], "0. ", StyleBox["CConic", "MR"], " identifies the nature of the conic and the coefficients of the output are \ normalized to ", StyleBox["r", "TI"], " if ", StyleBox["r", "TI"], " is non zero.\n\[FilledSmallSquare]", StyleBox[" CConic[", "MR"], StyleBox["c", "TI"], StyleBox[", ", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " 3D cartesian conic lying in plane ", StyleBox["p", "TI"], ". ", StyleBox["c ", "TI"], "is a conic lying in plane ", StyleBox["H ", "TI"], "of equation ", StyleBox["z = ", "TI"], "0. If ", StyleBox["p ", "TI"], "is horizontal", StyleBox[", c ", "TI"], "is the projection of the 3D conic. Otherwise, the 3D conic is deduced from \ ", StyleBox["c", "TI"], " by rotation about the intersection of ", StyleBox["p ", "TI"], "with ", StyleBox["H", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ECircle", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ellipse", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Hyperbola", ButtonData:>{"Hyperbola"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parabola", ButtonData:>{"Parabola"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "CConic"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CConic"], Cell[TextData[{ StyleBox["CConic", "MR"], " translates the quadratic expression into an explicit conic." }], "ExampleText", CellTags->"CConic"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(CConic[2, 2, 3, \(-1\), \(-2\), \(-1\)]\)}], "Input", CellTags->"CConic"], Cell["\<\ The conic may be degenerated into two lines or a double line.\ \>", "ExampleText", CellTags->"CConic"], Cell[BoxData[{ \(CConic[\(-1\), 0, 1, 0, 0, 0]\), "\[IndentingNewLine]", \(CConic[0, 0, 1, 0, \(-1\), 1]\)}], "Input", CellTags->"CConic"], Cell["\<\ The quadratic form may not correspond to a real conic. This is the case for a \ circle of negative radius.\ \>", "ExampleText", CellTags->"CConic"], Cell[BoxData[ \(CConic[1, 0, 1, 0, 0, 1]\)], "Input", CellTags->"CConic"], Cell["\<\ In 3D, only the conic lying in the horizontal plane is interpreted.\ \>", "ExampleText", CellTags->"CConic"], Cell[BoxData[ \(CConic[CConic[1, 2, 3, \(-1\), \(-2\), \(-1\)], CPlane[1, 1, 1, 0]]\)], "Input", CellTags->"CConic"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CEllipsoid", "ObjectName", CellTags->{"Geo.16", "CEllipsoid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CEllipsoid[]", "MR"], " cartesian ellipsoid of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["2", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["3", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " -", StyleBox[" ", "TI"], StyleBox["1", "TI", FontSlant->"Plain"], StyleBox[" = ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" CEllipsoid[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox["]", "MR"], " ellipsoid of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], StyleBox[" ", "TI"], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " - 1 = 0.\n\[FilledSmallSquare]", StyleBox[" CEllipsoid[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Sphere ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Sphere", ButtonData:>{"Sphere"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "CEllipsoid"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CEllipsoid"], Cell["\<\ The first definition generates quickly an arbitrary ellipsoid\ \>", "ExampleText", CellTags->"CEllipsoid"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = CEllipsoid[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"CEllipsoid"], Cell["\<\ The ellipsoid can be transformed, for instance by rotation about a line. \ \>", "ExampleText", CellTags->"CEllipsoid"], Cell[BoxData[{ \({a, b} = CPoint[0, {\(-1\), 1}, 0]; \), "\[IndentingNewLine]", \(d = ELine[a, b]; \), "\[IndentingNewLine]", \(q1 = \ Rotate[q, d, Pi/3]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, d, Red, q1, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}]; \)}], "Input", CellTags->"CEllipsoid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Center", "ObjectName", CellTags->{"Geo.17", "Center"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Center[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " center of conic or quadric ", StyleBox["x", "TI"], ", when it exists.\n\[FilledSmallSquare]", StyleBox[" Center[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " center of an ", StyleBox["n", "TI"], "-sided regular polygon of first two vertices ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ECircle", ButtonData:>{"ECircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ellipse", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Hyperbola", ButtonData:>{"Hyperbola"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RegularPolygon", ButtonData:>{"RegularPolygon"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Sphere", ButtonData:>{"Sphere"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.17", "Center"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Center"], Cell["Center of a conic.", "ExampleText", CellTags->"Center"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(c = CConic[\(-1\), 2, 3, 1, 2, 3]\), "\n", \(ce = Center[c]\), "\n", \(\(Draw[Blue, c, Red, ce];\)\)}], "Input", CellTags->"Center"], Cell["Center of a sphere.", "ExampleText", CellTags->"Center"], Cell[BoxData[{ \(s = Sphere[CPoint[x, y, z], r]\), "\[IndentingNewLine]", \(Center[s]\)}], "Input", CellTags->"Center"], Cell[TextData[{ "Center of a regular polygon with ", StyleBox["n", "TI"], " sides." }], "ExampleText", CellTags->"Center"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 1}, 0];\)\), "\[IndentingNewLine]", \(Center[a, b, n]\)}], "Input", CellTags->"Center"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CenterOfGravity", "ObjectName", CellTags->{"Geo.18", "CenterOfGravity"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CenterOfGravity[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " center of gravity of set of points, polygonal line, polyhedron, curve or \ surface ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Barycenter", ButtonData:>{"Barycenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Medians", ButtonData:>{"Medians"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.18", "CenterOfGravity"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CenterOfGravity"], Cell[TextData[{ "Centers of gravity of a broken line (", Cell[BoxData[ \(TraditionalForm\`c\_l\)]], ") and of a triangle (", Cell[BoxData[ \(TraditionalForm\`c\_t\)]], ") of same vertices. " }], "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(l = Segment[a, b, c];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(cog = CenterOfGravity[{l, t}]\), "\[IndentingNewLine]", \(\(te = Legend[{\*"\"\<\!\(c\_l\)\>\"", \*"\"\<\!\(c\_t\)\>\""}, cog, Offset \[Rule] {2, \(-Pi\)/2}];\)\), "\[IndentingNewLine]", \(\(Draw[te, Blue, t, Magenta, l, Red, cog];\)\)}], "Input", CellTags->"CenterOfGravity"], Cell["Centers of gravity of an arc of ellipse. ", "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[{ \(e = Conic[2, 1]; \), "\[IndentingNewLine]", \(ar = Arc[e, 0, Pi/2]; \), "\[IndentingNewLine]", \(cm = CenterOfGravity[ar]\), "\[IndentingNewLine]", \(Draw[Blue, ar, Red, cm]; \)}], "Input", CellTags->"CenterOfGravity"], Cell["The numerical values of the coordinates are given by: ", "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[ \(Chop@\(N@cm\)\)], "Input", CellTags->"CenterOfGravity"], Cell["Center of gravity of an arc of helix.", "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[{ \(h = PPoint[Cos[#] &, Sin[#] &, # &, PRange \[Rule] {0, Pi}]; \), "\[IndentingNewLine]", \(cm = CenterOfGravity[h]\), "\[IndentingNewLine]", \(Draw3D[Blue, h, Red, cm]; \)}], "Input", CellTags->"CenterOfGravity"], Cell["Center of gravity of a spherical sector.", "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[{ \(m = Take[Sphere[], 3]; \), "\[IndentingNewLine]", \(AppendTo[m, PRange \[Rule] {{\(-1\), 1} Pi/2, {0, 1} Pi/2, {1, 1} 25}]; \), "\[IndentingNewLine]", \(cm = CenterOfGravity[m]\), "\[IndentingNewLine]", \(Draw3D[Blue, m, Red, cm]; \)}], "Input", CellTags->"CenterOfGravity"], Cell["Center of gravity of a 3D triangle. ", "ExampleText", CellTags->"CenterOfGravity"], Cell[BoxData[{ \(\(t = To3D@Triangle[];\)\), "\[IndentingNewLine]", \(cog = CenterOfGravity[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, cog];\)\)}], "Input", CellTags->"CenterOfGravity"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CenterOfPerspective", "ObjectName", CellTags->{"Geo.19", "CenterOfPerspective"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CenterOfPerspective[", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " center of perspective, if it exists, of triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.19", "CenterOfPerspective"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CenterOfPerspective"], Cell[TextData[{ "The triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], " are in perspective since they have a common side ", StyleBox["ab", "TI"], ". " }], "ExampleText", CellTags->"CenterOfPerspective"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c, d} = CPoint[{0, 1, 1/3, 3}, {0, 0, 1, 2}];\)\), "\[IndentingNewLine]", \(\({t1, t2} = Triangle[a, b, {c, d}];\)\), "\[IndentingNewLine]", \(CenterOfPerspective[t1, t2]\)}], "Input", CellTags->"CenterOfPerspective"], Cell["\<\ A detailed explanation of the construction of the center of perspective is \ obtained using \ \>", "ExampleText", CellTags->"CenterOfPerspective"], Cell[BoxData[ \(Desargues[t1, t2]\)], "Input", CellTags->"CenterOfPerspective"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Circumcenter", "ObjectName", CellTags->{"Geo.20", "Circumcenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Circumcenter[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " center of circle circumscribed to triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Bisector", ButtonData:>{"Bisector"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.20", "Circumcenter"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Circumcenter"], Cell["Circumcenter of 2D triangle.", "ExampleText", CellTags->"Circumcenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(cc = Circumcenter[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, cc];\)\)}], "Input", CellTags->"Circumcenter"], Cell["Circumcenter of 3D triangle.", "ExampleText", CellTags->"Circumcenter"], Cell[BoxData[{ \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(cc = Circumcenter[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, cc];\)\)}], "Input", CellTags->"Circumcenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Circumcircle", "ObjectName", CellTags->{"Geo.21", "Circumcircle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Circumcircle[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " circle circumscribed to triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Circumcircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " circle circumscribed to an ", StyleBox["n", "TI"], "-sided regular polygon of first two vertices ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Circumcenter", ButtonData:>{"Circumcenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RegularPolygon", ButtonData:>{"RegularPolygon"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.21", "Circumcircle"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Circumcircle"], Cell["Circumcircle of 2D triangle.", "ExampleText", CellTags->"Circumcircle"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(cc = Circumcircle[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, cc];\)\)}], "Input", CellTags->"Circumcircle"], Cell["Circumcircle of 3D triangle.", "ExampleText", CellTags->"Circumcircle"], Cell[BoxData[{ \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(cc = Circumcircle[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, cc];\)\)}], "Input", CellTags->"Circumcircle"], Cell["Circumcircle of 2D regular pentagon.", "ExampleText", CellTags->"Circumcircle"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 1}, 0];\)\), "\[IndentingNewLine]", \(\(p = RegularPolygon[a, b, 5];\)\), "\[IndentingNewLine]", \(cc = Circumcircle[a, b, 5]\), "\[IndentingNewLine]", \(\(Draw[Blue, p, Red, cc];\)\)}], "Input", CellTags->"Circumcircle"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Circumsphere", "ObjectName", CellTags->{"Geo.22", "Circumsphere"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Circumsphere[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " sphere, if it exists, circumscribed to polyhedron ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Tetrahedron", ButtonData:>{"Tetrahedron"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PlatonicSolid", ButtonData:>{"PlatonicSolid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.22", "Circumsphere"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Circumsphere"], Cell["Circumsphere of a tetrahedron.", "ExampleText", CellTags->"Circumsphere"], Cell[BoxData[{ \(t = Tetrahedron[]; \), "\[IndentingNewLine]", \(s = Circumsphere[t]\), "\[IndentingNewLine]", \(Draw3D[Blue, t, Red, s]; \)}], "Input", CellTags->"Circumsphere"], Cell["Circumsphere of a regular octahedron.", "ExampleText", CellTags->"Circumsphere"], Cell[BoxData[{ \(oc = PlatonicSolid[8]; \), "\[IndentingNewLine]", \(s = Circumsphere[oc]\), "\[IndentingNewLine]", \(Draw3D[Blue, oc, Red, s]; \)}], "Input", CellTags->"Circumsphere"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CLine", "ObjectName", CellTags->{"Geo.23", "CLine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CLine[]", "MR"], " cartesian line of equation ", StyleBox["x + 2y = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" CLine[", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " cartesian line of equation ", StyleBox["ux + vy + w = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" CLine[", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " ", StyleBox["InfinityLine", "MR"], ", locus of all the points at infinity in the plane.\n\ \[FilledSmallSquare]", StyleBox[" CLine[", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox["]", "MR"], " ", StyleBox["IndeterminateLine", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" CLine[", "MR"], Cell[BoxData[ \(TraditionalForm\`p\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`p\_2\)]], StyleBox["]", "MR"], " 3D cartesian line intersection of planes ", Cell[BoxData[ \(TraditionalForm\`p\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`p\_2\)]], ". A 3D line is oriented by the cross product of the vectors normal to the \ two planes of definition. \n\[FilledSmallSquare]", StyleBox[" CLine[", "MR"], Cell[BoxData[ \(TraditionalForm\`p\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`p\_2\)]], StyleBox["]", "MR"], " ", StyleBox["InfinityLine", "MR"], " if the planes ", Cell[BoxData[ \(TraditionalForm\`p\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`p\_2\)]], " are parallel. Locus of all the points at infinity in planes parallel to ", Cell[BoxData[ \(TraditionalForm\`p\_1\)]], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Arc", ButtonData:>{"Arc"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CoplanarQ", ButtonData:>{"CoplanarQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ELine", ButtonData:>{"ELine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ParallelQ", ButtonData:>{"ParallelQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rotate", ButtonData:>{"Rotate"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Simplify", ButtonData:>{"Simplify"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.23", "CLine"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CLine"], Cell["\<\ Although the euclidean definitions are more appropriate in many practical \ cases, the cartesian definition of a line can be used to start a \ construction.\ \>", "ExampleText", CellTags->"CLine"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(d = CLine[1, \(-1\), 0];\)\), "\[IndentingNewLine]", \(\(Draw[d];\)\)}], "Input", CellTags->"CLine"], Cell[TextData[{ "Options in ", StyleBox["Draw3D", "MR"], " have been added to help visualizing the line." }], "ExampleText", CellTags->"CLine"], Cell[BoxData[{ \(\({p1, p2} = CPlane[{1, 3}, {1, 1/10}, {\(-1\), 1}, {2, \(-3\)}];\)\), "\[IndentingNewLine]", \(\(d = CLine[p1, p2];\)\), "\[IndentingNewLine]", \(\(Draw3D[d, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}];\)\)}], "Input", CellTags->"CLine"], Cell[TextData[{ "The cartesian definition is well adapted to analytical calculations. The \ coefficients (", StyleBox["u", "TI"], ",", StyleBox["v", "TI"], ") are the components of the normal vector to a 2D line. They play a basic \ role in the evaluation of angles and distances. A 3D line is oriented by the \ cross product of the normal vectors of the definition planes and the order of \ the planes matters." }], "ExampleText", CellTags->"CLine"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CLine3D", "ObjectName", CellTags->{"Geo.23", "CLine3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CLine3D[]", "MR"], " intersection of planes of equation ", StyleBox["x + 2y + 3z = ", "TI"], "0 and ", StyleBox["x + y - z = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CLine", ButtonData:>{"CLine"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.23", "CLine3D"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CLine3D"], Cell["\<\ Although the euclidean definitions are more appropriate in many practical \ cases, the cartesian definition of a line can be used to start a \ construction.\ \>", "ExampleText", CellTags->"CLine3D"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(d = CLine3D[]\), "\[IndentingNewLine]", \(\(Draw3D[Red, d, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}];\)\)}], "Input", CellTags->"CLine3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Close", "ObjectName", CellTags->{"Geo.24", "Close"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Close[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " converts broken line ", StyleBox["p", "TI"], " into a polygon of same vertices by appending the first vertex to the \ vertices of ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Split", ButtonData:>{"Split"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.24", "Close"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Close"], Cell[TextData[{ "The broken line ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ", StyleBox["d", "TI"], " is transformed into a quadrangle by applying ", StyleBox["Close", "MR"], "." }], "ExampleText", CellTags->"Close"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c, d} = CPoint[{0, 1, 2, 1/3}, {0, 0, 1, 2}];\)\), "\[IndentingNewLine]", \(bl = Segment[a, b, c, d]\), "\[IndentingNewLine]", \(p = Close@bl\), "\[IndentingNewLine]", \(\(g = Draw[Red, p, Legend["\", p]];\)\)}], "Input", CellTags->"Close"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CollinearQ", "ObjectName", CellTags->{"Geo.25", "CollinearQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CollinearQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " tests if points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ... belong to the same straight line.\n\[FilledSmallSquare]", StyleBox[" CollinearQ[", "MR"], StyleBox["s", "TI"], StyleBox["]", "MR"], " tests if the points of polygonal line ", StyleBox["s", "TI"], " are collinear.\n\[FilledSmallSquare]", StyleBox[" CollinearQ[", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " tests if segment ", StyleBox["s", "TI"], " is collinear to line ", StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CoplanarQ", ButtonData:>{"CoplanarQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["OfQ", ButtonData:>{"OfQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.25", "CollinearQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CollinearQ"], Cell[TextData[{ "The orthocenter, the circumcenter and the center of gravity of a triangle \ are in line (", ButtonBox["EulerLine", ButtonData:>{"EulerLine"}, ButtonStyle->"AddOnsLink"], ")." }], "ExampleText", CellTags->"CollinearQ"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{x1, x2, x3}, {y1, y2, y3}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\(or = Orthocenter[t];\)\), "\[IndentingNewLine]", \(\(cc = Circumcenter[t];\)\), "\[IndentingNewLine]", \(\(cog = CenterOfGravity[t];\)\), "\[IndentingNewLine]", \(CollinearQ[or, cc, cog]\)}], "Input", CellTags->"CollinearQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ColorTable", "ObjectName", CellTags->{"Geo.26", "ColorTable"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ColorTable[]", "MR"], " table of all the colors in plain form that may be used as graphics \ directives of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.26", "ColorTable"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ColorTable"], Cell["\<\ The correspondence between plain colors and their rendering is obtained using\ \ \>", "ExampleText", CellTags->"ColorTable"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(Draw@ColorTable[]\)}], "Input", CellTags->"ColorTable"], Cell["\<\ The graph may come too small. One has then to drag the right hand edge to \ make it legible.\ \>", "ExampleText", CellTags->"ColorTable"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Cone", "ObjectName", CellTags->{"Geo.27", "Cone"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Cone[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["opts", "TI"], StyleBox["]", "MR"], " cone of vertex ", StyleBox["a", "TI"], " and directrix the 3D-conic, polygonal line or curve ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Cone[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox[",", "MR"], StyleBox["opts", "TI"], StyleBox["]", "MR"], " quadric cone of vertex ", StyleBox["a", "TI"], " tangent to quadric ", StyleBox["q", "TI"], ". Whether the cone is real or not depends on the sign of the quadratic \ form of ", StyleBox["q", FontSlant->"Italic"], " applied to the coordinates of ", StyleBox["a", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_u\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_v\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], " of a cone. The first parameter, noted ", StyleBox["#", "TI"], StyleBox["1", "TI", FontSlant->"Plain"], " in ", StyleBox["PPoint", "MR"], ", is the parameter of a point ", StyleBox["m", "TI"], " of the directrix and the second parameter, noted ", StyleBox["#", "TI"], StyleBox["2", "TI", FontSlant->"Plain"], ", is the parameter of a point of the segment ", StyleBox["am", "TI"], ". The integers ", Cell[BoxData[ \(TraditionalForm\`n\_u\)]], " and ", Cell[BoxData[ \(TraditionalForm\`n\_v\)]], " are the numbers of points used to draw the generators and directrices. \ Default values: ", StyleBox["PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`0\)]], StyleBox[",2\[Pi]},{", "MR"], "0", StyleBox[",1},{25,2}}", "MR"], " when the directrix is a curve or an ellipse and ", StyleBox["PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`1\/4\)]], StyleBox[",4},{", "MR"], "0", StyleBox[",1},{25,2}}", "MR"], " for a hyperbola.\n\[FilledSmallSquare]", StyleBox[" CQuadric \[Rule] ", "MR"], StyleBox["v", "MR", FontSlant->"Italic"], ". In the case of a quadric cone, it may be interesting to get the \ parametric form directly to keep the memory of the construction of the cone, \ then ", StyleBox["CQuadric ", FontSlant->"Italic"], StyleBox["\[Rule]", "MR"], StyleBox[" False", FontSlant->"Italic"], " (default). If it is prefered to use the cartesian form of the cone, then \ ", StyleBox["CQuadric ", FontSlant->"Italic"], StyleBox["\[Rule]", "MR"], StyleBox[" True.", FontSlant->"Italic"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Intersections", ButtonData:>{"Intersections"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Pole", ButtonData:>{"Pole"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["QuadricCone", ButtonData:>{"QuadricCone"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.27", "Cone"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Cone"], Cell[TextData[{ "Cone of vertex ", StyleBox["a", "TI"], " with a hyperbolic directrix. " }], "ExampleText", CellTags->"Cone"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Cone"], Cell[BoxData[{ \(c = To3D@Conic[\(-1\), 1]\), "\[IndentingNewLine]", \(a = CPoint[0, 0, 2]; \), "\[IndentingNewLine]", \(co1 = Cone[a, c]\), "\[IndentingNewLine]", \(co2 = Cone[a, c, PRange \[Rule] {{\(-4\), \(-1\)/4}, {0, 1}, {25, 2}}]\), "\[IndentingNewLine]", \(Draw3D[Blue, c, a, Red, co1, co2]; \)}], "Input", CellTags->"Cone"], Cell[TextData[{ "If the cartesian cone is returned, the original directrix is hard to \ visualize although it actually belongs to the cone as proven by evaluating \ the intersection of the plane of ", StyleBox["c", FontSlant->"Italic"], " with ", StyleBox["co", FontSlant->"Italic"], ". " }], "ExampleText", CellTags->"Cone"], Cell[BoxData[{ \(co = Cone[a, c, CQuadric \[Rule] True]\), "\n", \(h = Intersections[co, c[\([\)\(2\)\(]\)]]\), "\n", \(Draw3D[Blue, h, Red, co]; \)}], "Input", CellTags->"Cone"], Cell["\<\ Changing the range of the parameter which runs along the generator helps \ placing the hyperbola on the cone. \ \>", "ExampleText", CellTags->"Cone"], Cell[BoxData[{ \(qe = QuadricElements @@ co; \), "\[IndentingNewLine]", \(qp = QuadricPoint /. qe; \), "\[IndentingNewLine]", \(newco = qp /. \((PRange \[Rule] {x_, y_, z_})\) \[Rule] \((PRange \[Rule] {x, {\(-Pi\), Pi}, z})\); \), "\[IndentingNewLine]", \(Draw3D[Blue, a, h, Red, newco]; \)}], "Input", CellTags->"Cone"], Cell[TextData[{ "Cone of vertex ", StyleBox["a", "TI"], " tangent to an ellipsoid. " }], "ExampleText", CellTags->"Cone"], Cell[BoxData[{ \(q = CEllipsoid[]; \), "\[IndentingNewLine]", \(a = CPoint[0, 2, 2]; \), "\[IndentingNewLine]", \(co = Cone[a, q]\), "\[IndentingNewLine]", \(Draw3D[Blue, a, Paint[{q, co}]]; \)}], "Input", CellTags->"Cone"], Cell[TextData[{ "The parametric form of the cone is illustrated by the intersection of a \ plane with a cone whose directrix is a spiral. The analytical intersection of \ a cone with a plane can be calculated for any type of cone. The symbol ", StyleBox["Hold", "MR"], " prevents the evaluation of the function so that the function ", StyleBox["Intersections", "MR"], " recognizes that the object is a cone." }], "ExampleText", CellTags->"Cone"], Cell["\<\ a=CPoint[0,0,5]; sp=PPoint[# Cos[#]&,# Sin[#]&,0&,PRange -> {0,2Pi,25}]; co=Cone[a,sp] co1=Hold@Cone[a,sp]; p=CPlane[-1,0,1,0]; x=Intersections[co1,p]\ \>", "Input", CellTags->"Cone"], Cell[TextData[{ "The parameter range defined by the rule ", StyleBox["PRange", "MR"], " applies to the full cone. The parameter of the intersection is the first \ parameter of the cone. Its range of variations is restricted by the range of \ variations of the second parameter. Let us rename the two parameters \[Alpha] \ and.\[Beta]. The constraint between \[Alpha] and.\[Beta] is given by the \ equation of the plane: " }], "ExampleText", CellTags->"Cone"], Cell["-\[Alpha]\[Beta] cos \[Alpha] + 5 - 5\[Beta] = 0.", "ExampleText", TextAlignment->Center, CellTags->"Cone"], Cell[TextData[{ "By solving the above equation in \[Alpha] for \[Beta] equal to 0 and 1, it \ is found that the actual range of variations for \[Alpha] is to be split into \ (0, \[Pi]/2) and (3\[Pi]/2, 2\[Pi]). The ", StyleBox["PRange", "MR"], " option of the cone is redefined to show the two branches of the \ intersection." }], "ExampleText", CellTags->"Cone"], Cell["\<\ x1=Append[Drop[x,-1],PRange->{0,Pi/2,25}]; x2=Append[Drop[x,-1],PRange->{3Pi/2,2Pi,25}]; co2=co/.(PRange->{u_,v_,w_})->(PRange->{{0,2Pi},{0,2.3},w}) Draw3D[Blue,co2,Red,x1,x2];\ \>", "Input", CellTags->"Cone"], Cell["\<\ The complication of defining the limits of the parameter range are usually \ avoided using the numerical form of the intersection at the cost of a much \ longer computing time. \ \>", "ExampleText", CellTags->"Cone"], Cell["\<\ {time,x}=Timing[Intersections[co,p]] Draw3D[Blue,co,Red,AbsoluteThickness[2],x];\ \>", "Input", CellTags->"Cone"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConeQ", "ObjectName", CellTags->{"Geo.78", "ConeQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConeQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if surface ", StyleBox["m", "TI"], StyleBox[" ", "MR"], "of head ", StyleBox["PPoint", "MR"], " is a cone.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], " , ", ButtonBox["CylinderQ", ButtonData:>{"CylinderQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.78", "ConeQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConeQ"], Cell["Test applied to cone and cylinder.", "ExampleText", CellTags->"ConeQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=CConic[Conic[2,1],CPlane[1,-1,0,0]]; a=CPoint[1,1,-Sqrt[2]]; co=Cone[a,e] cy=Cylinder[a,e] ConeQ[{co,cy}]\ \>", "Input", CellTags->"ConeQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CongruentQ", "ObjectName", CellTags->{"Geo.28", "CongruentQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CongruentQ[", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " tests if triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], " are congruent. Other notation: ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], "== ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ". Two triangles are congruent when all pairs of corresponding sides and \ corresponding angles are equal.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["SimilarQ", ButtonData:>{"SimilarQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.28", "CongruentQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CongruentQ"], Cell["\<\ The triangles of a parallelogram located on each side of the diagonal are \ congruent.\ \>", "ExampleText", CellTags->"CongruentQ"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(Clear[x1, x2, x3, y1, y2, y3];\)\), "\[IndentingNewLine]", \(\({a, b, c} = CPoint[{x1, x2, x3}, {y1, y2, y3}];\)\), "\[IndentingNewLine]", \(\(p = Parallelogram[a, b, c];\)\), "\[IndentingNewLine]", \(\(d = p[\([4]\)];\)\), "\[IndentingNewLine]", \(\({t1, t2} = Triangle[a, c, {b, d}];\)\), "\[IndentingNewLine]", \(CongruentQ[t1, t2]\)}], "Input", CellTags->"CongruentQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Conic", "ObjectName", CellTags->{"Geo.29", "Conic"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " ellipse or hyperbola of equation ", StyleBox["Sign[", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], " + ", StyleBox["Sign[", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 1.\n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " parabolas, if they exist, passing through the four points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["e", "TI"], StyleBox["]", "MR"], " conic passing through the five points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["e", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["e", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " conic fitting the points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["e", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " conic of foci ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ". \n\tIf ", StyleBox["d", "TI"], " > ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ", ellipse of points ", StyleBox["m ", "TI"], "satisfying ", StyleBox["m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[" + m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], " = ", StyleBox["d", "TI"], ". \n\tIf ", StyleBox["d", "TI"], " < ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ", hyperbola of points ", StyleBox["m ", "TI"], "satisfying |", StyleBox["m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[" - m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], "| = ", StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["f,\[CapitalDelta]", "TI"], StyleBox["] ", "MR"], "parabola of focus ", StyleBox["f", "TI"], " and directrix ", StyleBox["\[CapitalDelta]", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" Conic[", "MR"], StyleBox["f,\[CapitalDelta],e", "TI"], StyleBox["] ", "MR"], "conic of focus ", StyleBox["f", "TI"], ", directrix ", StyleBox["\[CapitalDelta]", "TI"], " and eccentricity ", StyleBox["e ", "TI"], "whose points ", StyleBox["m ", "TI"], "satisfy ", Cell[BoxData[ \(TraditionalForm\`mf\/\(dis(m, \[CapitalDelta])\)\)]], "= e. \n\t0 < ", StyleBox["e", "TI"], " < 1 \[Rule] ellipse. ", StyleBox["e", "TI"], " = 1 \[Rule] parabola. ", StyleBox["e", "TI"], " > 1 \[Rule] hyperbola.\n\tWhen the eccentricity is zero, the conic is a \ circle of undefined radius and a message is returned.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Asymptotes", ButtonData:>{"Asymptotes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicAxes", ButtonData:>{"ConicAxes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ECircle", ButtonData:>{"ECircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ellipse", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Hyperbola", ButtonData:>{"Hyperbola"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parabola", ButtonData:>{"Parabola"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.29", "Conic"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Conic"], Cell["Equilateral hyperbola.", "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(co = Conic[\(-1\), 1]\), "\[IndentingNewLine]", \(\(Draw[co];\)\)}], "Input", CellTags->"Conic"], Cell[TextData[{ "Conic passing through points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ", StyleBox["d", "TI"], " and", StyleBox[" ", "MR"], StyleBox["e", "TI"], ". " }], "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\({a, b, c, d, e} = CPoint[{1/2, 2, 5, 6, 4}, {1, 2, 3, \(-3\), \(-2\)}];\)\), "\[IndentingNewLine]", \(co = Conic[a, b, c, d, e]\), "\[IndentingNewLine]", \(\(Draw[Blue, a, b, c, d, e, Red, DrawRange[\(-5\), 5], co];\)\)}], "Input", CellTags->"Conic"], Cell[TextData[{ "Conic fitting points ", StyleBox["m", "TI"], ". " }], "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\(m = Pointer[Conic[2, 1], Range[10]];\)\), "\[IndentingNewLine]", \(\(f = Plus[#, Random[ Real, {\(- .1\), .1}]] &;\)\), "\[IndentingNewLine]", \(\(m = Map[f, m, {2}];\)\), "\[IndentingNewLine]", \(co = Conic @@ m\), "\[IndentingNewLine]", \(\(Draw[Blue, m, Red, co];\)\), "\[IndentingNewLine]", \(Null\)}], "Input", CellTags->"Conic"], Cell[TextData[{ "Parabolas passing through points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], " and ", StyleBox["d", "TI"], ". " }], "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{1/2, 2, 5, 8}, {1, 2, 3, \(-3\)}];\)\), "\[IndentingNewLine]", \(co = Conic[a, b, c, d]\), "\[IndentingNewLine]", \(\(Draw[Blue, a, b, c, d, Red, DrawRange[\(-5\), 5], co];\)\)}], "Input",\ CellTags->"Conic"], Cell[TextData[{ "Conics defined by foci ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and", StyleBox[" ", "MR"], StyleBox["b", "TI"], "." }], "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\({a, b} = CPoint[{\(-1\), 1}, 0];\)\), "\[IndentingNewLine]", \(co = Conic[a, b, {0, 1, 2, 3}]\), "\[IndentingNewLine]", \(\(Draw[Blue, a, b, Red, co];\)\)}], "Input", CellTags->"Conic"], Cell[TextData[{ "Conics defined by focus ", StyleBox["a ", "TI"], "and directrix ", StyleBox["d", "TI"], "." }], "ExampleText", CellTags->"Conic"], Cell[BoxData[{ \(\(a = CPoint[1, 0];\)\), "\[IndentingNewLine]", \(\(d = CLine[1, 0, 0];\)\), "\[IndentingNewLine]", \(co = Conic[a, d, {1/2, 1, 2}]\), "\[IndentingNewLine]", \(\(Draw[Blue, a, d, Red, co];\)\)}], "Input", CellTags->"Conic"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicArea", "ObjectName", CellTags->{"Geo.30", "ConicArea"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicArea \[Rule] ", "MR"], StyleBox["a", "MR", FontSlant->"Italic"], StyleBox[", area ", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" ", "MR", FontFamily->"Times New Roman"], StyleBox["of", "MR", FontFamily->"Times New Roman"], " the ellipse of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Area", ButtonData:>{"Area"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.30", "ConicArea"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicArea"], Cell["Area of an ellipse.", "ExampleText", CellTags->"ConicArea"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(qe = ConicElements[2, 1, 1, 1, 2, 3];\)\), "\n", \(ca = ConicArea /. qe\)}], "Input", CellTags->"ConicArea"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicAsymptotes", "ObjectName", CellTags->{"Geo.30", "ConicAsymptotes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicAsymptotes \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, d\_2\)]], StyleBox["}, list of symptotes ", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, d\_2\)]], StyleBox["of", "MR", FontFamily->"Times New Roman"], " the hyperbola of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Asymptotes", ButtonData:>{"Asymptotes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.30", "ConicAsymptotes"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicAsymptotes"], Cell["Asymptotes of a hyperbola", "ExampleText", CellTags->"ConicAsymptotes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(qe = ConicElements[\(-1\), 2, 3, 1, 2, 3];\)\), "\n", \(ca = FullSimplify //@ \((ConicAsymptotes /. qe)\)\)}], "Input", CellTags->"ConicAsymptotes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicAxes", "ObjectName", CellTags->{"Geo.30", "ConicAxes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicAxes \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" ...}, list of axes ", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ... of", "MR", FontFamily->"Times New Roman"], " the conic of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Axes", ButtonData:>{"Axes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.30", "ConicAxes"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConicAxes"], Cell["Axes of a hyperbola", "ExampleText", CellTags->"ConicAxes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(qe = ConicElements[\(-1\), 2, 3, 1, 2, 3];\)\), "\n", \(ca = FullSimplify //@ \((ConicAxes /. qe)\)\)}], "Input", CellTags->"ConicAxes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicCenter", "ObjectName", CellTags->{"Geo.30", "ConicCenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicCenter \[Rule] ", "MR"], StyleBox["C", "MR", FontSlant->"Italic"], StyleBox[", center ", "MR", FontFamily->"Times New Roman"], StyleBox["C ", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["of", "MR", FontFamily->"Times New Roman"], " the conic of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.30", "ConicCenter"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConicCenter"], Cell["Center of a hyperbola", "ExampleText", CellTags->"ConicCenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(qe = ConicElements[\(-1\), 2, 3, 1, 2, 3];\)\), "\n", \(ce = FullSimplify //@ \((ConicCenter /. qe)\)\)}], "Input", CellTags->"ConicCenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicDirectrices", "ObjectName", CellTags->{"Geo.16", "ConicDirectrices"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicDirectrices \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" ...}, list of directrices ", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ... of", "MR", FontFamily->"Times New Roman"], " the conic of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrices", ButtonData:>{"Directrices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConicDirectrices"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConicDirectrices"], Cell["Directrices of an ellipse.", "ExampleText", CellTags->"ConicDirectrices"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = ConicElements[1, 1, 2, 0, \@3, 0];\)\), "\[IndentingNewLine]", \({a, b} = ConicDirectrices /. qe\)}], "Input", CellTags->"ConicDirectrices"], Cell["Directrix of a parabola.", "ExampleText", CellTags->"ConicDirectrices"], Cell[BoxData[{ \(qe = ConicElements[1, 1, 1, 0, \@3, 0]; \), "\[IndentingNewLine]", \({d} = ConicDirectrices /. qe\)}], "Input", CellTags->"ConicDirectrices"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicEccentricity", "ObjectName", CellTags->{"Geo.16", "ConicEccentricity"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicEccentricity \[Rule] ", "MR"], StyleBox["e", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", eccentricity ", "MR", FontFamily->"Times New Roman"], StyleBox["e", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" ", "MR", FontFamily->"Times New Roman"], StyleBox["of", "MR", FontFamily->"Times New Roman"], " the conic of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Eccentricity", ButtonData:>{"Eccentricity"}, ButtonStyle->"AddOnsLink"], ",." }], "Notes", CellTags->{"Geo.16", "ConicEccentricity"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicEccentricity"], Cell[TextData[{ "Eccentricity of circle, ellipse, parabola and hyperbola. A mapping (", StyleBox["/@", FontFamily->"Courier"], ") is necessary because ", StyleBox["ConicElements", "MR"], StyleBox[" is not ", "MR", FontFamily->"Times New Roman"], StyleBox["Listable", "MR"], StyleBox[".", "MR", FontFamily->"Times New Roman"] }], "ExampleText", CellTags->"ConicEccentricity"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = \(ConicElements[1, #, 1, 0, \@3, 0] &\) /@ {0, 1/2, 1, 2};\)\), "\[IndentingNewLine]", \(e = ConicEccentricity /. qe\)}], "Input", CellTags->"ConicEccentricity"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicElements", "ObjectName", CellTags->{"Geo.16", "ConicElements"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " determines the elements of the cartesian conic of equation\n ", StyleBox["r", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ 2", StyleBox["sxy + ", "TI"], "+ ", StyleBox["t", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "+ ", StyleBox["2ux + 2vy + w = ", "TI"], "0,\n where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], " are the coordinates of a point of the conic, in the form of a list of \ rules.\n\[FilledSmallSquare]", StyleBox[" ConicArea \[Rule] ", "MR"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", "MR", FontFamily->"Times New Roman"], " Area ", StyleBox["a", FontSlant->"Italic"], " of an ellipse. ", StyleBox["Infinity", "MR"], " is returned for hyperbolae and parabolae.\n\[FilledSmallSquare]", StyleBox[" ConicAsymptotes \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, \ d\_2\)]], StyleBox["}", "MR", FontFamily->"Times New Roman"], " The asymptotes ", StyleBox["(", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, \ d\_2\)]], StyleBox[")", FontFamily->"Times New Roman"], " exist only for hyperbolae and are tangent to the points at infinity.\n\ \[FilledSmallSquare]", StyleBox[" ConicAxes \[Rule] ", "MR"], StyleBox["{O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The axes ", StyleBox["(", FontFamily->"Times New Roman"], StyleBox["O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[")", FontFamily->"Times New Roman"], " are the reference system of the quadric defined in its standard form.\n\ \[FilledSmallSquare]", StyleBox[" ConicCenter \[Rule] ", "MR"], StyleBox["C", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" or ", "MR", FontFamily->"Times New Roman"], StyleBox["None", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", "MR"], " ", StyleBox["C", FontSlant->"Italic"], " is the center of symmetry of the quadric if it exists. Otherwise ", StyleBox["None", FontSlant->"Italic"], " is returned.\n\[FilledSmallSquare]", StyleBox[" ConicDirectrices \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["} or {", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, \ d\_2\)]], StyleBox["}", "MR", FontFamily->"Times New Roman"], StyleBox[".", "MR"], " The directrices ", StyleBox["d", FontSlant->"Italic"], ", ", Cell[BoxData[ \(TraditionalForm\`\(\(d\_1\)\(,\)\(\ \)\(d\_2\)\(\ \)\)\)]], "of a conic are the polars of the foci with respect to the conic. They can \ also be defined using the eccentricity of the conic. There are as many \ directrices as foci but the directrix of a circle is at infinity.\n\ \[FilledSmallSquare]", StyleBox[" ConicEccentricity \[Rule] ", "MR"], StyleBox["e", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The eccentricity ", StyleBox["e", FontSlant->"Italic"], " of a conic is the ratio ", Cell[BoxData[ \(TraditionalForm\`mf\/md\)]], ", ", StyleBox["m", FontSlant->"Italic"], " being a point of the conic, ", StyleBox["f", FontSlant->"Italic"], " a focus, ", StyleBox["d", FontSlant->"Italic"], " the projection of ", StyleBox["m", FontSlant->"Italic"], " on the directrix associated to ", StyleBox["f", FontSlant->"Italic"], ". The eccentricity is 0 for a circle, smaller than 1 for an ellipse, 1 for \ a parabola and greater than 1 for a hyperbola.", StyleBox[" ", FontSlant->"Italic"], "\n\[FilledSmallSquare]", StyleBox[" ConicFoci \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["f", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["} or {", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`f\_1, \ f\_2\)]], StyleBox["}.", "MR", FontFamily->"Times New Roman"], " Foci come in various euclidean definitions of a conic (", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], "). They are images of one another when the conic is considered as a \ mirror.\n\[FilledSmallSquare]", StyleBox[" ConicPoint \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the conic", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters ", StyleBox["u", FontSlant->"Italic"], " on the conic.\n\[FilledSmallSquare]", StyleBox[" ConicType \[Rule] ", "MR"], StyleBox["type.", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], " The symbol ", StyleBox["type", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], " may be ", StyleBox["Ellipse", FontFamily->"Courier"], ", ", StyleBox["Hyperbola", FontFamily->"Courier"], " or ", StyleBox["Parabola", FontFamily->"Courier"], ". The quadratic expression which characterizes a conic may not correspond \ to a real geometrical object and, in that case, ", StyleBox["type", FontSlant->"Italic"], " is ", StyleBox["ImaginaryEllipse", FontFamily->"Courier"], ". The quadratic form may also be factorized in which case the conic is \ degenerated into real or imaginary lines (", StyleBox["ImaginaryIntersectingLines", FontFamily->"Courier"], ", ", StyleBox["ImaginaryParallelLines", FontFamily->"Courier"], ").\n\[FilledSmallSquare]", StyleBox[" ConicVertices \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The vertices ", StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], " are the real intersections of the axes with the conic.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "Directrices and foci are listed in the same order in ", StyleBox["ConicDirectrices", "MR"], " and ", StyleBox["ConicFoci", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ConicElements", "MR"], " is not ", StyleBox["Listable", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Area", ButtonData:>{"Area"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Asymptotes", ButtonData:>{"Asymptotes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Axes", ButtonData:>{"Axes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrices", ButtonData:>{"Directrices"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Eccentricity", ButtonData:>{"Eccentricity"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Foci", ButtonData:>{"Foci"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConicElements"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConicElements"], Cell["Elements of a hyperbola.", "ExampleText", CellTags->"ConicElements"], Cell[BoxData[{ \(qe = ConicElements[5, 7, 2, \(-1\), 1, 0]; \), "\[IndentingNewLine]", \(ColumnForm[qe]\)}], "Input", CellTags->"ConicElements"], Cell["\<\ The parametric form of the hyperbola can be inferred using the replacement \ technique. \ \>", "ExampleText", CellTags->"ConicElements"], Cell[BoxData[ \(h1p = ConicPoint /. qe\)], "Input", CellTags->"ConicElements"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicFoci", "ObjectName", CellTags->{"Geo.16", "ConicFoci"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicFoci \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["f", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...}", "MR", FontFamily->"Times New Roman"], StyleBox[", list of foci ", "MR", FontFamily->"Times New Roman"], StyleBox["f", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ... ", "MR", FontFamily->"Times New Roman"], StyleBox["of", "MR", FontFamily->"Times New Roman"], " the conic of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Foci", ButtonData:>{"Foci"}, ButtonStyle->"AddOnsLink"], ", ." }], "Notes", CellTags->{"Geo.16", "ConicFoci"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConicFoci"], Cell["Foci of an ellipse.", "ExampleText", CellTags->"ConicFoci"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = ConicElements[1, 1, 2, 0, \@3, 0];\)\), "\[IndentingNewLine]", \({a, b} = ConicFoci /. qe\)}], "Input", CellTags->"ConicFoci"], Cell["Focus of a parabola.", "ExampleText", CellTags->"ConicFoci"], Cell[BoxData[{ \(\(qe = ConicElements[1, 1, 2, 0, \@3, 0];\)\), "\[IndentingNewLine]", \({f} = ConicFoci /. qe\)}], "Input", CellTags->"ConicFoci"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicPoint", "ObjectName", CellTags->{"Geo.16", "ConicPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicPoint \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the quadric", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ") on the quadric of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of \n", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConicPoint"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicPoint"], Cell["Parametric form of an ellipse.", "ExampleText", CellTags->"ConicPoint"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = ConicElements[1, 1, 2, 0, \@3, 0];\)\), "\[IndentingNewLine]", \(m = ConicPoint /. qe\)}], "Input", CellTags->"ConicPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicType", "ObjectName", CellTags->{"Geo.16", "ConicType"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicType \[Rule] ", "MR"], StyleBox["type", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", "MR", FontFamily->"Times New Roman"], " Symbol ", StyleBox["type", FontSlant->"Italic"], " ", StyleBox["characterizing the nature of", "MR", FontFamily->"Times New Roman"], " ", StyleBox["the conic", "MR", FontFamily->"Times New Roman"], " of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ". When the conic is degenerated into real lines, the complete lines are \ returned.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConicType"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicType"], Cell["Type of an ellipse.", "ExampleText", CellTags->"ConicType"], Cell[BoxData[{ \(qe = ConicElements[5, \(-4\), 5, \@3, \ \@3, 0]; \), "\[IndentingNewLine]", \(m = ConicType /. qe\)}], "Input", CellTags->"ConicType"], Cell["Case of a double line.", "ExampleText", CellTags->"ConicType"], Cell[BoxData[{ \(qe = ConicElements[1, 0, 0, 1, \ 0, 1]; \), "\[IndentingNewLine]", \(m = ConicType /. qe\)}], "Input", CellTags->"ConicType"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConicVertices", "ObjectName", CellTags->{"Geo.16", "ConicVertices"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConicVertices \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " Vertices ", StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], " of ", StyleBox["the conic", "MR", FontFamily->"Times New Roman"], " of coordinates ", StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], " in the output of ", StyleBox["ConicElements[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["s", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox[",", "TI", FontSlant->"Plain"], StyleBox[" u, v, w", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConicVertices"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ConicVertices"], Cell["Vertices of an ellipse.", "ExampleText", CellTags->"ConicVertices"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = ConicElements[5, \(-4\), 5, \@3, \ \@3, 0];\)\), "\[IndentingNewLine]", \(m = ConicVertices /. qe\)}], "Input", CellTags->"ConicVertices"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConjugateLine", "ObjectName", CellTags->{"Geo.16", "ConjugateLine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConjugateLine[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " Diameter of the conic ", StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" ", "MR", FontFamily->"Times New Roman"], "conjugate to the direction", StyleBox[" m", "TI"], " specified as a point. The line \[Delta] that joins the points of contact \ of the tangents to ", StyleBox["c", FontSlant->"Italic"], " parallel to ", StyleBox["m", FontSlant->"Italic"], " is conjugate to ", StyleBox["m", FontSlant->"Italic"], ". In the case of a parabola, the conjugate line is parallel to the axis.", "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ELine", ButtonData:>{"ELine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConjugateLine"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConjugateLine"], Cell["\<\ Conjugate line of direction (1,2) in an ellipse and construction of the \ tangents at the ends of the diameter.\ \>", "ExampleText", CellTags->"ConjugateLine"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(m = CPoint[1, 2];\)\), "\n", \(\(c = CConic[1, 0, 2, \(-2\), 0, 0];\)\), "\n", \(\(ce = Center[c];\)\), "\n", \(d = ConjugateLine[m, c]\), "\n", \(\(x = Intersections[d, c];\)\), "\n", \(\(tg = ELine[x, c];\)\), "\n", \(\(s = Segment[CPoint[0, 0], m];\)\), "\n", \(\(Draw[LineOrigin[ce], Blue, c, Arrow[s], Red, d, Green, tg];\)\)}], "Input", CellTags->"ConjugateLine"], Cell["The same construct is resumed for a parabola.", "ExampleText", CellTags->"ConjugateLine"], Cell[BoxData[{ \(c = CConic[1, 2, 4, 2, 1, \(-1\)]; \), "\[IndentingNewLine]", \(ce = \(Vertices[c]\)[\([\)\(1\)\(]\)]; \), "\[IndentingNewLine]", \(\(m = CPoint[2, \(-3\)];\)\), "\[IndentingNewLine]", \(d = ConjugateLine[m, c]\), "\[IndentingNewLine]", \(\(s = Segment[CPoint[0, 0], m];\)\), "\[IndentingNewLine]", \(\({x} = Intersections[d, c];\)\), "\[IndentingNewLine]", \(\(tg = ELine[x, c];\)\), "\[IndentingNewLine]", \(\(Draw[LineOrigin[ce], Blue, c, Arrow[s], Red, d, Green, tg];\)\)}], "Input", CellTags->"ConjugateLine"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ConjugatePlane", "ObjectName", CellTags->{"Geo.16", "ConjugatePlane"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ConjugatePlane[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], " Plane of the quadric ", StyleBox["q", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" ", "MR", FontFamily->"Times New Roman"], "conjugate to the direction", StyleBox[" m", "TI"], " specified as a point. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "ConjugatePlane"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ConjugatePlane"], Cell["\<\ Conjugate line of direction (1,2,3) in an ellipsoid and cylinder tangent to \ the ellipsoid.\ \>", "ExampleText", CellTags->"ConjugatePlane"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(m = CPoint[1, 2, 3];\)\), "\n", \(\(q = Translate[Quadric[1, 2, 3], CPoint[2, 0, 0]];\)\), "\n", \(p = ConjugatePlane[m, q]\), "\n", \(\(x = Intersections[p, q];\)\), "\n", \(\(s = Segment[CPoint[0, 0, 0], m];\)\), "\n", \(\(cy = Cylinder[m, x, PRange \[Rule] {{\(-\[Pi]\), \[Pi]}, {\(-1\), 1}, {25, 2}}];\)\), "\n", \(\(Draw3D[Blue, q, Paint[x, Red], Green, Arrow[s], cy];\)\)}], "Input", CellTags->"ConjugatePlane"], Cell["\<\ The same construct is resumed for a hyperboloid of one sheet.\ \>", "ExampleText", CellTags->"ConjugatePlane"], Cell[BoxData[{ \(m = CPoint[1, 2, 3]; \), "\n", \(q = Translate[Quadric[1, \(-2\), 3], CPoint[4, 0, 0]]; \), "\n", \(p = ConjugatePlane[m, q]\), "\n", \(x = Intersections[p, q]; \), "\n", \(s = Segment[CPoint[0, 0, 0], m]; \), "\n", \(cy = Cylinder[m, x, PRange \[Rule] {{\(-\[Pi]\), \[Pi]}, {\(-1\), 1}, {25, 2}}]; \), "\n", \(Draw3D[Blue, q, Red, x, Green, cy, NavyBlue, Arrow[s]]; \)}], "Input", CellTags->"ConjugatePlane"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CoplanarQ", "ObjectName", CellTags->{"Geo.31", "CoplanarQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CoplanarQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " tests if points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], " lie in the same plane.\n\[FilledSmallSquare]", StyleBox[" CoplanarQ[", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_2\)]], StyleBox["]", "MR"], "tests if 3D-lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " lie in the same plane.\n\[FilledSmallSquare]", StyleBox[" CoplanarQ[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " tests if vertices of polygonal line ", StyleBox["p", "TI"], " lie in the same plane.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CollinearQ", ButtonData:>{"CollinearQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["OfQ", ButtonData:>{"OfQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.31", "CoplanarQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CoplanarQ"], Cell[TextData[{ "Points randomly generated above and below ellipse ", StyleBox["e", "TI"], " are obviously not coplanar." }], "ExampleText", CellTags->"CoplanarQ"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(\(m = Pointer[e, Range[10]];\)\), "\[IndentingNewLine]", \(\(m1 = \(Insert[#, Random[Real, {\(- .1\), .1}], \(-1\)] &\) /@ m;\)\), "\[IndentingNewLine]", \(CoplanarQ @@ m1\)}], "Input", CellTags->"CoplanarQ"], Cell["\<\ Two parallel lines are coplanar.\ \>", "ExampleText", CellTags->"CoplanarQ"], Cell[BoxData[{ \(\({p1, p2} = CPlane[{u1, u2}, {v1, v2}, {w1, w2}, {h1, h2}];\)\), "\[IndentingNewLine]", \(\(d1 = CLine[p1, p2];\)\), "\[IndentingNewLine]", \(\(d2 = Parallel[CPoint[x, y, z], d1];\)\), "\[IndentingNewLine]", \(CoplanarQ[d1, d2]\)}], "Input", CellTags->"CoplanarQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CPlane", "ObjectName", CellTags->{"Geo.32", "CPlane"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CPlane[]", "MR"], " cartesian plane of equation ", StyleBox["x + 2y + 3z = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" CPlane[", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox[",", "MR"], StyleBox["h", "TI"], StyleBox["]", "MR"], " cartesian plane of equation ", StyleBox["ux + vy + wz + h = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" CPlane[", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " ", StyleBox["InfinityPlane", "MR"], ", locus of all the lines at infinity in the 3D space.\n\ \[FilledSmallSquare]", StyleBox[" CPlane[", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox[",", "MR"], StyleBox["0", "TI"], StyleBox["]", "MR"], " ", StyleBox["IndeterminatePlane", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Plane", ButtonData:>{"Plane"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Simplify", ButtonData:>{"Simplify"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.32", "CPlane"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CPlane"], Cell[TextData[{ "Although the euclidean definitions are more appropriate in many practical \ cases, the cartesian definition of a plane can be used to start a \ construction. Options in ", StyleBox["Draw3D", "MR"], " have been added to help visualizing the plane which is painted in blue." }], "ExampleText", CellTags->"CPlane"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(p = CPlane[1, 1, \(-1\), 2];\)\), "\[IndentingNewLine]", \(\(Draw3D[Paint[p, Blue], Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}];\)\)}], "Input", CellTags->"CPlane"], Cell[TextData[{ "The cartesian definition is well adapted to analytical calculations. The \ coefficients (", StyleBox["u", "TI"], ",", StyleBox["v", "TI"], ",", StyleBox["w", "TI"], ") are the components of the normal vector. They play a basic role in the \ evaluation of angles and distances." }], "ExampleText", CellTags->"CPlane"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CPoint", "ObjectName", CellTags->{"Geo.33", "CPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CPoint[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox["]", "MR"], " cartesian point of of coordinates ", StyleBox["x ", "TI"], "and", StyleBox[" y", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" CPoint[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox["z", "TI"], StyleBox["]", "MR"], " 3D cartesian point of of coordinates ", StyleBox["x", "TI"], ",", StyleBox[" y ", "TI"], "and", StyleBox[" z", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Barycenter", ButtonData:>{"Barycenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["BrianchonPoint", ButtonData:>{"BrianchonPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Circumcenter", ButtonData:>{"Circumcenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CenterOfGravity", ButtonData:>{"CenterOfGravity"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CenterOfPerspective", ButtonData:>{"CenterOfPerspective"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CollinearQ", ButtonData:>{"CollinearQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CoplanarQ", ButtonData:>{"CoplanarQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Excenters", ButtonData:>{"Excenters"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["FermatPoint", ButtonData:>{"FermatPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Incenter", ButtonData:>{"Incenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Orthocenter", ButtonData:>{"Orthocenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pole", ButtonData:>{"Pole"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.33", "CPoint"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CPoint"], Cell["Definition of a single point of abscissa 1 and ordinate 2.", \ "ExampleText", CellTags->"CPoint"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(a = CPoint[1, 2]\)}], "Input", CellTags->"CPoint"], Cell["Definition of a single 3D point of coordinates (1, 2, 3).", \ "ExampleText", CellTags->"CPoint"], Cell[BoxData[ \(a = CPoint[1, 2, 3]\)], "Input", CellTags->"CPoint"], Cell["\<\ Definition of a several 3D points using the property of listability.\ \>", "ExampleText", CellTags->"CPoint"], Cell[BoxData[ \({a, b, c, d} = CPoint[Range[4], 0, Range[4] + 1]\)], "Input", CellTags->"CPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CQuadric", "ObjectName", CellTags->{"Geo.16", "CQuadric"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CQuadric[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0\n where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.", "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CEllipsoid", ButtonData:>{"CEllipsoid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperboloidOfOneSheet", ButtonData:>{"HyperboloidOfOneSheet"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperboloidOfTwoSheets", ButtonData:>{"HyperboloidOfTwoSheets"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EllipticParaboloid", ButtonData:>{"EllipticParaboloid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperbolicParaboloid", ButtonData:>{"HyperbolicParaboloid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricCone", ButtonData:>{"QuadricCone"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EllipticCylinder", ButtonData:>{"EllipticCylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperbolicCylinder", ButtonData:>{"HyperbolicCylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ParabolicCylinder", ButtonData:>{"ParabolicCylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "CQuadric"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"CQuadric"], Cell[TextData[{ StyleBox["CQuadric", "MR"], " translates the quadratic expression into an explicit quadric." }], "ExampleText", CellTags->"CQuadric"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(CQuadric[2, 2, 3, \(-1\), \(-2\), \(-1\), 0, 1, 0, 0]\)}], "Input", CellTags->"CQuadric"], Cell["\<\ If the computation time is too long, then it usually helps to convert one \ argument into a real number.\ \>", "ExampleText", CellTags->"CQuadric"], Cell[BoxData[ \(CQuadric[2. , 2, 3, \(-1\), \(-2\), \(-1\), 0, 1, 0, 0]\)], "Input"], Cell["\<\ The quadric may be degenerated into two planes or a double plane.\ \>", "ExampleText", CellTags->"CQuadric"], Cell[BoxData[{ \(FullSimplify /@ CQuadric[2, 3, 0, 2, 2, 5/2, \(-1\)/2, \(-1\), \(-2\), \(-1\)]\), "\[IndentingNewLine]", \(CQuadric[4, 9, 16, 12, 8, 6, 2, 3, 4, 1]\)}], "Input", CellTags->"CQuadric"], Cell["\<\ The quadratic form may not correspond to a real quadric. This is the case for \ a sphere of negative radius.\ \>", "ExampleText", CellTags->"CQuadric"], Cell[BoxData[ \(CQuadric[1, 1, 1, 0, 0, 0, 0, 0, 0, 1]\)], "Input", CellTags->"CQuadric"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CrossRatio", "ObjectName", CellTags->{"Geo.34", "CrossRatio"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CrossRatio[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " cross-ratio ", Cell[BoxData[ FormBox[ FractionBox[ StyleBox[\(ac/cb\), "TI"], StyleBox[\(ad/db\), "TI"]], TraditionalForm]]], " of the four aligned points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pole", ButtonData:>{"Pole"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ratio", ButtonData:>{"Ratio"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.34", "CrossRatio"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CrossRatio"], Cell[TextData[{ "Let ", StyleBox["c", "TI"], " and ", StyleBox["a", "TI"], " be a circle and a point not on the circle, ", StyleBox["d", "TI"], " the polar of ", StyleBox["a", "TI"], " with respect to ", StyleBox["c", "TI"], ". A line ", StyleBox["s", "TI"], " passing through ", StyleBox["a", "TI"], " cuts ", StyleBox["c", "TI"], " in ", StyleBox["m", "TI"], " and ", StyleBox["n", "TI"], " and ", StyleBox["d", "TI"], " in ", StyleBox["p", "TI"], ". Then the cross-ratio (", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], ") is equal to -1. The property is also true for any conic. Since the \ calculation is symbolic, the points ", StyleBox["m", "TI"], " and ", StyleBox["n", "TI"], " may not be real and the result contains a ", StyleBox["sign", "MR"], " function which is set to one to force the choice of real points." }], "ExampleText", CellTags->"CrossRatio"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(c = ECircle[CPoint[0, 0], 1];\)\), "\[IndentingNewLine]", \(\(a = CPoint[2, 0];\)\), "\[IndentingNewLine]", \(\(d = Polar[a, c];\)\), "\[IndentingNewLine]", \(\(s = \(Pencil[a]\)[t];\)\), "\[IndentingNewLine]", \(\({{m, n}, p} = Intersections[s, {c, d}];\)\), "\[IndentingNewLine]", \(\(cr = CrossRatio[a, p, m, n];\)\), "\[IndentingNewLine]", \(Simplify@\((cr /. sign[z_] \[Rule] 1)\)\)}], "Input", CellTags->"CrossRatio"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Cube", "ObjectName", CellTags->{"Geo.35", "Cube"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Cube[", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " cube of edge length ", StyleBox["a", "TI"], " (default: 1), centered at origin and whose vertical edges intersect ", StyleBox["x ", "TI"], "and ", StyleBox["y", "TI"], " axes.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Diagonals", ButtonData:>{"Diagonals"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Edges", ButtonData:>{"Edges"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Faces", ButtonData:>{"Faces"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallelepiped", ButtonData:>{"Parallelepiped"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PlatonicSolid", ButtonData:>{"PlatonicSolid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.35", "Cube"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Cube"], Cell["Configuration of the reference cube.", "ExampleText", CellTags->"Cube"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(cu = Cube[1]\), "\[IndentingNewLine]", \(\(Draw3D[Red, cu, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}];\)\)}], "Input", CellTags->"Cube"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Cubic", "ObjectName", CellTags->{"Geo.36", "Cubic"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Cubic[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " cubic interpolation line passing through points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], "... \n\[FilledSmallSquare]", StyleBox[" PlotPoints \[Rule] ", "MR"], StyleBox["n", "TI"], " number of definition points (default: 25). \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Bezier", ButtonData:>{"Bezier"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.36", "Cubic"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Cubic"], Cell["\<\ In contrast with a Bezier line, a cubic passes exactly through the definition \ points.\ \>", "ExampleText", CellTags->"Cubic"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(m = Table[CPoint[n + Pi/10, \ Sin[n + Pi/10]], {n, 0, 10}];\)\), "\[IndentingNewLine]", \(\(cu = Cubic @@ m;\)\), "\[IndentingNewLine]", \(\(Draw[Blue, m, Red, cu];\)\)}], "Input", CellTags->"Cubic"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Cylinder", "ObjectName", CellTags->{"Geo.37", "Cylinder"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Cylinder[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " cylinder of generators parallel to ", StyleBox["Oa", "TI"], " and directrix the 3D-conic, polygonal line or curve ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Cylinder[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], " cylinder of generators parallel to ", StyleBox["Oa", "TI"], " and tangent to quadric ", StyleBox["q", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" CQuadric \[Rule] ", "MR"], StyleBox["v", "MR", FontSlant->"Italic"], StyleBox[".", "MR"], " When the cylinder is defined using a conic or a quadric, the function may \ return an elliptic, hyperbolic or parabolic cylinder if ", StyleBox["CQuadric \[Rule] True", "MR"], StyleBox[". By default ", "MR", FontFamily->"Times New Roman"], StyleBox["CQuadric \[Rule] False", "MR"], StyleBox[" and a parametric surface of head ", "MR", FontFamily->"Times New Roman"], StyleBox["PPoint", "MR"], StyleBox[" is returned.", "MR", FontFamily->"Times New Roman"], "\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_u\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_v\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], " of a cylinder. The first parameter, noted ", StyleBox["#", "TI"], StyleBox["1", "TI", FontSlant->"Plain"], " in ", StyleBox["PPoint", "MR"], ", is the parameter of a point ", StyleBox["m", "TI"], " of the dirextrix and the second parameter, noted ", StyleBox["#", "TI"], StyleBox["2", "TI", FontSlant->"Plain"], ", is the parameter of a point of the segment ", StyleBox["bm ", "TI"], "with ", StyleBox["b", "TI"], " obtained by translation of ", StyleBox["m", "TI"], " parallel to ", StyleBox["Oa", "TI"], ". The integers ", Cell[BoxData[ \(TraditionalForm\`n\_u\)]], " and ", Cell[BoxData[ \(TraditionalForm\`n\_v\)]], " are the numbers of points used to draw the generators and directrices. \ Default value: ", StyleBox["PRange \[Rule] {{0,2\[Pi]},{", "MR"], "0", StyleBox[",1},{25,25}}", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConjugatePlane", ButtonData:>{"ConjugatePlane"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Intersections", ButtonData:>{"Intersections"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.37", "Cylinder"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Cylinder"], Cell["\<\ Cylinder with a hyperbolic directrix and generators parallel to (0,2,2).\ \>", "ExampleText", CellTags->"Cylinder"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Cylinder"], Cell[BoxData[{ \(c = To3D@Conic[\(-1\), 1]; \), "\[IndentingNewLine]", \(a = CPoint[0, 2, 2]; \), "\[IndentingNewLine]", \(cy = Cylinder[a, c]\), "\[IndentingNewLine]", \(s = Segment[CPoint[0, 0, 0], a]; \), "\[IndentingNewLine]", \(Draw3D[Blue, c, Arrow[s], Red, cy]; \)}], "Input", CellTags->"Cylinder"], Cell["Same cylinder as a cartesian quadric.", "ExampleText", CellTags->"Cylinder"], Cell[BoxData[{ \(cyq = Cylinder[a, c, CQuadric \[Rule] True]\), "\[IndentingNewLine]", \(Draw3D[Blue, c, Arrow[s], Red, cyq]; \)}], "Input", CellTags->"Cylinder"], Cell["\<\ Cylinder tangent to a hyperboloid of two sheets with generators parallel to \ (0,2,2). \ \>", "ExampleText", CellTags->"Cylinder"], Cell[BoxData[{ \(a = CPoint[0, 2, 2]; \), "\[IndentingNewLine]", \(q = Quadric[1, \(-2\), \(-3\)]; \), "\[IndentingNewLine]", \(cy = Cylinder[a, q]\), "\[IndentingNewLine]", \(s = Segment[CPoint[0, 0, 0], a]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, Arrow[s], Red, cy]; \)}], "Input", CellTags->"Cylinder"], Cell[TextData[{ "The parametric form of the cylinder is illustrated by the intersection of \ a plane with a frustum of cylinder. The frustum of cylinder ", StyleBox["c ", "TI"], "is of revolution about the ", StyleBox["z", "TI"], "-axis with generator of length 2", StyleBox[" ", "TI"], "and directrix a circle of radius 1 in the horizontal plane. The \ intersection of ", StyleBox["c", "TI"], " with plane ", StyleBox["p", "TI"], " is an ellipse given in parametric form." }], "ExampleText", CellTags->"Cylinder"], Cell[BoxData[{ \({a, b} = {CPoint[0, 0], CPoint[0, 0, 2]}; \), "\[IndentingNewLine]", \(ci = To3D@ECircle[a, 1]; \), "\[IndentingNewLine]", \(c = Cylinder[b, ci]\), "\[IndentingNewLine]", \(p = CPlane[0, 2, \(-1\), 0]; \), "\[IndentingNewLine]", \(x = Intersections[p, c]\), "\[IndentingNewLine]", \(Draw3D[Blue, c, Red, x]; \)}], "Input", CellTags->"Cylinder"], Cell[TextData[{ "The parameter range defined by the rule ", StyleBox["PRange", "MR"], " ignores that the full cylinder is necessarily truncated. The second \ parameter varies along the generators from the base to the top. The parameter \ of the intersection is the first parameter of the cylinder. Its range of \ variations is restricted by the range of variations of the second parameter. \ Let us name the two parameters \[Alpha] and.\[Beta]. The constraint between \ \[Alpha] and.\[Beta] is given by the equation of the plane: " }], "ExampleText", CellTags->"Cylinder"], Cell["2 sin \[Alpha] - 2\[Beta] = 0.", "ExampleText", TextAlignment->Center, CellTags->"Cylinder"], Cell["\<\ By solving the above equation in \[Alpha] for \[Beta] equal to 0 and 1, it is \ found that the actual range of variations for \[Alpha] is formed of the two \ intervals (0, \[Pi]/2), (\[Pi]/2, \[Pi]) which can be contracted into the \ single interval (0, \[Pi]).\ \>", "ExampleText", CellTags->"Cylinder"], Cell["\<\ x1=x/.(PRange->{u_,v_,w_})->(PRange->{0,Pi,w}) Draw3D[Blue,c,Red,x1];\ \>", "Input", CellTags->"Cylinder"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["CylinderQ", "ObjectName", CellTags->{"Geo.78", "CylinderQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" CylinderQ[", "MR"], StyleBox["m", "TI"], StyleBox["]", "MR"], " tests if surface ", StyleBox["m", "TI"], StyleBox[" ", "MR"], "of head ", StyleBox["PPoint", "MR"], " is a cylinder.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConeQ", ButtonData:>{"ConeQ"}, ButtonStyle->"AddOnsLink"], " , ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.78", "CylinderQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"CylinderQ"], Cell["Test applied to cone and cylinder.", "ExampleText", CellTags->"CylinderQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=CConic[Conic[2,1],CPlane[1,-1,0,0]]; a=CPoint[1,1,-Sqrt[2]]; co=Cone[a,e] cy=Cylinder[a,e] CylinderQ[{co,cy}]\ \>", "Input", CellTags->"CylinderQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Desargues", "ObjectName", CellTags->{"Geo.38", "Desargues"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Desargues[", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], " returns the diagram of Desargues's theorem and the center and axis of \ perspective, if they exist, of triangles ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ". Desargues's theorem:\n ", StyleBox["When two triangles are in perspective, the intersections of lines \ collinear to pairs of corresponding sides of the triangles have their \ intersections on a common line, the axis of perspective.", "Theorem"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["AxisOfPerspective", ButtonData:>{"AxisOfPerspective"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CenterOfPerspective", ButtonData:>{"CenterOfPerspective"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.38", "Desargues"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Desargues"], Cell[TextData[{ "Desargues's theorem is illustrated with a triangle ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], " and the triangle ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], " of the pedals (feet of the altitudes) of ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ". The two triangles are drawn in blue and the pairs of lines collinear \ with the corresponding sides in green. The center of perspective is \ represented by a red point and the axis of perspective by a red line." }], "ExampleText", CellTags->"Desargues"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t1 = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\(d = RotateLeft@ELine[t1];\)\), "\[IndentingNewLine]", \(\({m, n, p} = Project[{a, b, c}, d];\)\), "\[IndentingNewLine]", \(\(t2 = Triangle[m, n, p];\)\), "\[IndentingNewLine]", \(Desargues[t1, t2]\)}], "Input", CellTags->"Desargues"], Cell[TextData[{ "It can be checked that the center of perspective is identical to the \ orthocenter of ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ". " }], "ExampleText", CellTags->"Desargues"], Cell[BoxData[{ \(cp = CenterOfPerspective[t1, t2]; \), "\[IndentingNewLine]", \(or = Orthocenter[t1]; \), "\[IndentingNewLine]", \(IdenticalQ[cp, or]\)}], "Input", CellTags->"Desargues"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Diagonals", "ObjectName", CellTags->{"Geo.39", "Diagonals"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Diagonals[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], " diagonals of polygon ", StyleBox["p", "TI"], " of number of vertices higher than 3 or of polyhedron ", StyleBox["p", "TI"], " with more than four faces. The diagonals of a polygon are lines that join \ two non consecutive vertices. The diagonals of a polyhedron join vertices \ with no common faces.\n\[FilledSmallSquare]", StyleBox[" Diagonals[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], " diagonals of polygon or polyhedron ", StyleBox["p", "TI"], " passing through the ", StyleBox["n", "TI"], "-th vertex.\n\[FilledSmallSquare]", StyleBox[" Even \[Rule] ", "MR"], StyleBox["v", "TI"], " all diagonals of a polygon if ", StyleBox["v ", "TI"], "is set to ", StyleBox["False", "MR"], " (default) or diagonals joining opposite vertices of an even sided polygon \ if ", StyleBox["v ", "TI"], "is set to ", StyleBox["True", "MR"], ". \n\[FilledSmallSquare]", StyleBox[" Segment \[Rule] ", "MR"], StyleBox["v", "TI"], " lines or segments are returned if ", StyleBox["v ", "TI"], "is set to ", StyleBox["False", "MR"], " (default) or ", StyleBox["True", "MR"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Brianchon", ButtonData:>{"Brianchon"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Diamond", ButtonData:>{"Diamond"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallelogram", ButtonData:>{"Parallelogram"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rectangle", ButtonData:>{"Rectangle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RegularPolygon", ButtonData:>{"RegularPolygon"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.39", "Diagonals"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Diagonals"], Cell["Diagonals of a symbolic parallelogram.", "ExampleText", CellTags->"Diagonals"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{x1, x2, x3}, {y1, y2, y3}];\)\), "\[IndentingNewLine]", \(\(p = Parallelogram[a, b, c];\)\), "\[IndentingNewLine]", \(d = Diagonals[p]\)}], "Input", CellTags->"Diagonals"], Cell["\<\ Diagonals of a regular octagon. In red: diagonals joining opposite vertices. \ In magenta: all diagonals issued from the first vertex.\ \>", "ExampleText", CellTags->"Diagonals"], Cell[BoxData[{ \(oc = RegularPolygon[8]; \), "\[IndentingNewLine]", \(d1 = FullSimplify //@ Diagonals[oc, 1, Segment \[Rule] True]\), "\[IndentingNewLine]", \(d2 = FullSimplify //@ Diagonals[oc, Even \[Rule] True, Segment \[Rule] True]\), "\[IndentingNewLine]", \(Draw[Legend["\<12345678\>", oc], Blue, oc, Red, d1, Magenta, d2]; \)}], "Input", CellTags->"Diagonals"], Cell["Diagonals of a cube meet at the center.", "ExampleText", CellTags->"Diagonals"], Cell[BoxData[{ \(cu = Cube[]; \), "\[IndentingNewLine]", \(d = Diagonals[cu, Segment \[Rule] True]\), "\[IndentingNewLine]", \(Draw3D[Blue, cu, Red, d]; \)}], "Input", CellTags->"Diagonals"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Diamond", "ObjectName", CellTags->{"Geo.40", "Diamond"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Diamond[", "MR"], StyleBox["k", "TI"], StyleBox["]", "MR"], " arbitrary diamond of vertices (-1, 0), (0, -", StyleBox["1/GoldenRatio", FontSlant->"Italic"], "), (1, 0), (0, ", StyleBox["1/GoldenRatio", FontSlant->"Italic"], "). The diamond can be scaled by ratio ", StyleBox["k", FontSlant->"Italic"], " (default value: 1).", "\n\[FilledSmallSquare]", StyleBox[" Diamond[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " diamond of diagonal ", StyleBox["ab", "TI"], ". The other diagonal has the length ", StyleBox["2d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Isosceles", ButtonData:>{"Isosceles"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallelogram", ButtonData:>{"Parallelogram"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rectangle", ButtonData:>{"Rectangle"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.40", "Diamond"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Diamond"], Cell["Typical diamond.", "ExampleText", CellTags->"Diamond"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(d = Diamond[]\), "\[IndentingNewLine]", \(\(Draw[Blue, d];\)\)}], "Input", CellTags->"Diamond"], Cell[TextData[{ "Diamond of diagonal ", StyleBox["ab", "TI"], " and other diagonal of length 6. Note how the legend has been written to \ respect the name of the points. See ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], " for more information about the vertices of a polygon." }], "ExampleText", CellTags->"Diamond"], Cell[BoxData[{ \({a, b} = CPoint[{0, 2}, 0]; \), "\[IndentingNewLine]", \(di = Diamond[a, b, 3]\), "\[IndentingNewLine]", \(\(Draw[Legend["\", di], Blue, a, b, Red, di];\)\)}], "Input", CellTags->"Diamond"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Dimension", "ObjectName", CellTags->{"Geo.41", "Dimension"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Dimension[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " graphics function of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " which writes the length of the sides of polygonal line ", StyleBox["p ", "TI"], "between arrows", ".\n\[FilledSmallSquare]", StyleBox[" Dimension[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " writes the length of the sides of ", StyleBox["p", "TI"], " at the distance ", StyleBox["d ", "TI"], "from the sides (default: -1).\n\[FilledSmallSquare]", StyleBox[" Dimension[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " writes the length of the sides of ", StyleBox["p", "TI"], " at the distance ", StyleBox["d ", "TI"], "from the sides with the lengths truncated to ", StyleBox["n ", "TI"], "(default: 2) significant decimals.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Arrow", ButtonData:>{"Arrow"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Legend", ButtonData:>{"Legend"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.41", "Dimension"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Dimension"], Cell[TextData[{ "The three definitions of ", StyleBox["Dimension", "MR"], " applied to a triangle." }], "ExampleText", CellTags->"Dimension"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\({t1, t2} = Translate[t, CPoint[{3, 6}, 0]];\)\), "\[IndentingNewLine]", \(\(Draw[Dimension[t], Dimension[t1, \(- .1\)], Dimension[t2, \(- .2\), 4], Blue, t, t1, t2];\)\)}], "Input", CellTags->"Dimension"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Directrices", "ObjectName", CellTags->{"Geo.42", "Directrices"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Directrices[", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " list of directrices of ellipse, hyperbola or parabola ", StyleBox["c", "TI"], ". The directrix of a circle is at infinity. The parabola has one directrix \ only at finite distance. The directrix is the polar of the focus with respect \ to the conic. The directrices are listed in the same order as foci in ", StyleBox["Foci", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Eccentricity", ButtonData:>{"Eccentricity"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Foci", ButtonData:>{"Foci"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.42", "Directrices"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Directrices"], Cell["Directrices of a hyperbola", "ExampleText", CellTags->"Directrices"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(co = Conic[\(-1\), 2];\)\), "\n", \(d = Directrices[co]\), "\n", \(\(Draw[Blue, co, Red, d];\)\)}], "Input", CellTags->"Directrices"], Cell["Directrix of a parabola", "ExampleText", CellTags->"Directrices"], Cell[BoxData[{ \(co = Parabola[1]; \), "\n", \(d = Directrices[co]\), "\n", \(Draw[Blue, co, Red, d]; \)}], "Input", CellTags->"Directrices"], Cell["Directrix of the same parabola in 3D.", "ExampleText", CellTags->"Directrices"], Cell[BoxData[{ \(co = To3D@Parabola[1]; \), "\n", \(d = Directrices[co]\), "\n", \(Draw3D[Blue, co, Red, d]; \)}], "Input", CellTags->"Directrices"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["DisplayOn", "ObjectName", CellTags->{"Geo.42", "DisplayOn"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" DisplayOn \[Rule]", "MR"], " ", StyleBox["v", FontSlant->"Italic"], " ", "option of Draw and Draw3D which displays the figure if ", StyleBox["v", FontSlant->"Italic"], " is ", StyleBox["True", FontSlant->"Italic"], " (default) and auppresses the display if ", StyleBox["v", FontSlant->"Italic"], " is ", StyleBox["False", FontSlant->"Italic"], ".", StyleBox[" ", FontSlant->"Italic"], StyleBox["DisplayOn \[Rule]", "MR"], " ", StyleBox["True", "MR"], " ", "is", " equivalent to ", StyleBox["DisplayFunction \[Rule]", "MR"], " ", StyleBox["$DisplayFunction", "MR"], StyleBox[" ", FontSlant->"Italic"], "and", StyleBox[" ", FontSlant->"Italic"], StyleBox["DisplayOn \[Rule]", "MR"], " ", StyleBox["False", "MR"], " ", "is", " equivalent to ", StyleBox["DisplayFunction \[Rule]", "MR"], " ", StyleBox["Identity", "MR"], " ", StyleBox["in ", "MR", FontFamily->"Times New Roman"], StyleBox["Mathematica", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", FontFamily->"Times New Roman"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.42", "DisplayOn"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"DisplayOn"], Cell["Suppression of display for a point in 2D and 3D.", "ExampleText", CellTags->"DisplayOn"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"DisplayOn"], Cell[BoxData[{ \(m = CPoint[1, 1]; \), "\[IndentingNewLine]", \(g1 = Draw[m, DisplayOn \[Rule] False]; \), "\n", \(m = CPoint[1, 1, 2]; \), "\[IndentingNewLine]", \(g2 = Draw3D[m, DisplayOn \[Rule] False]; \)}], "Input", CellTags->"DisplayOn"], Cell[TextData[{ "The display of ", StyleBox["g1", FontSlant->"Italic"], " can be restored using ", StyleBox["Show", FontFamily->"Courier New"], " but the ", StyleBox["Mathematica", FontSlant->"Italic"], " ", StyleBox["DisplayFunction", FontFamily->"Courier New"], " is needed. " }], "ExampleText", CellTags->"DisplayOn"], Cell[BoxData[ \(Show[g1, DisplayFunction \[Rule] $DisplayFunction]; \)], "Input", CellTags->"DisplayOn"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Distance", "ObjectName", CellTags->{"Geo.43", "Distance"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Distance[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " length of the segment, polygonal line or conic ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Distance[", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox["]", "MR"], "distance between two points, parallel lines or planes ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" Distance[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " distance from point ", StyleBox["a", "TI"], " to point, line, plane or conic ", StyleBox["x", "TI"], ". In the case of a conic, the distance is the minimum length of the \ segments which join ", StyleBox["a", "TI"], " to the projections of ", StyleBox["a", "TI"], " onto the conic.\n\[FilledSmallSquare]", StyleBox[" Distance[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_2\)]], StyleBox["]", "MR"], "length of arc of curve ", StyleBox["c", "TI"], " limited by points of parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Arc", ButtonData:>{"Arc"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["FermatPoint", ButtonData:>{"FermatPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["InverseProjection", ButtonData:>{"InverseProjection"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Normals", ButtonData:>{"Normals"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraxial", ButtonData:>{"Paraxial"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.43", "Distance"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Distance"], Cell["Length of regular octagon.", "ExampleText", CellTags->"Distance"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(Distance@RegularPolygon[8]\)}], "Input", CellTags->"Distance"], Cell["Circumference of a circle of radius 1.", "ExampleText", CellTags->"Distance"], Cell[BoxData[ \(Distance@ECircle[1]\)], "Input", CellTags->"Distance"], Cell["Length of an ellipse.", "ExampleText", CellTags->"Distance"], Cell[BoxData[ \(Distance@Conic[2, 1]\)], "Input", CellTags->"Distance"], Cell["Length of an arc of hyperbola.", "ExampleText", CellTags->"Distance"], Cell[BoxData[{ \(co = Conic[\(-1\), 2]; \), "\[IndentingNewLine]", \(ar = Arc[co, 1, 2]; \), "\[IndentingNewLine]", \(Chop@\(N@Distance[ar]\)\)}], "Input", CellTags->"Distance"], Cell["Length of an arc of helix.", "ExampleText", CellTags->"Distance"], Cell[BoxData[{ \(he = PPoint[Cos[#] &, Sin[#] &, # &, PRange \[Rule] {0, 2 Pi}]; \), "\[IndentingNewLine]", \(Distance[he]\)}], "Input", CellTags->"Distance"], Cell[TextData[{ "Distance from point ", StyleBox["a", "TI"], " to line ", StyleBox["d", "TI"], " and ellipse ", StyleBox["e", "TI"], "." }], "ExampleText", CellTags->"Distance"], Cell[BoxData[{ \(a = CPoint[0, 1]; \), "\[IndentingNewLine]", \(d = CLine[1, 1, 0]; \), "\[IndentingNewLine]", \(e = Conic[1, 2]; \), "\[IndentingNewLine]", \(Distance[a, {d, e}]\)}], "Input", CellTags->"Distance"], Cell[TextData[{ "Distance from origin to 3D point ", StyleBox["a", "TI"], ", 3D line ", StyleBox["d", "TI"], " and plane ", StyleBox["p", "TI"], "." }], "ExampleText", CellTags->"Distance"], Cell[BoxData[{ \({or, a, b, c} = CPoint[{0, 1, 0, 0}, {0, 0, 1, 0}, {0, 0, 0, 1}]; \), "\[IndentingNewLine]", \(d = ELine[a, b]; \), "\[IndentingNewLine]", \(p = Plane[a, b, c]; \), "\[IndentingNewLine]", \(Distance[or, {a, d, p}]\)}], "Input", CellTags->"Distance"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Draw", "ObjectName", CellTags->{"Geo.44", "Draw"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Draw[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " draws any 2D ", StyleBox["Geometrica", FontSlant->"Italic"], " object ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Draw[", "MR"], Cell[BoxData[ \(TraditionalForm\`dir\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`dir\_2\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox[",", "MR"], "...", StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], "draws any sequence or list of 2D ", StyleBox["Geometrica", FontSlant->"Italic"], " objects or graphics functions ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " with graphics directives ", Cell[BoxData[ \(TraditionalForm\`dir\_1\)]], ", any sequence or list of 2D ", StyleBox["Geometrica", FontSlant->"Italic"], " objects or graphics functions ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " with graphics directives ", Cell[BoxData[ \(TraditionalForm\`dir\_2\)]], ", ... and options ", StyleBox["options", "TI"], ". A graphics function does not affect the following arguments. A graphics \ directive does affects the following arguments. In case a graphics directive \ repeats itself, its appearance at a given position cancels the effect of its \ previous appearances and determines the style of the following objects. \n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "Graphics functions of ", StyleBox["Draw", "MR"], ": ", ButtonBox["Arrow", ButtonData:>"Arrow", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Dimension", ButtonData:>"Dimension", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Legend", ButtonData:>"Legend", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paint", ButtonData:>"Paint", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Petal", ButtonData:>"Petal", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Racetrack", ButtonData:>"Racetrack", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ReferenceSystem", ButtonData:>"ReferenceSystem", ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidAngle", ButtonData:>"SolidAngle", ButtonStyle->"AddOnsLink"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Graphics directives of ", StyleBox["Draw", "MR"], ": plain color as listed in ", ButtonBox["ColorTable", ButtonData:>{"ColorTable"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["DrawRange", ButtonData:>{"DrawRange"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["LineOrigin", ButtonData:>{"LineOrigin"}, ButtonStyle->"AddOnsLink"], ". These directives are proper to ", StyleBox["Geometrica", FontSlant->"Italic"], ". Those of ", StyleBox["Mathematica", FontSlant->"Italic"], " can also be used. ", ButtonBox["AbsolutePointSize", ButtonStyle->"RefGuideLink"], StyleBox["[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " for instance determines the size of a point (default: 5 units of \ printer's points).\n\[FilledSmallSquare]", StyleBox[" DisplayOn", "MR"], " \[Rule] ", StyleBox["v", "TI"], " restores the display of a figure when ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], " and inhibits the display when ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Some options of ", StyleBox["Mathematica", FontSlant->"Italic"], " are modified for a geometric representation but only inside ", StyleBox["Draw", "MR"], ". ", ButtonBox["AspectRatio", ButtonStyle->"RefGuideLink"], " is set to ", StyleBox["Automatic", "MR"], " to get the same scale in ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], ". This way, a circle for instance has really a circular shape and not an \ elliptical shape as it would be in ", StyleBox["Mathematica ", FontSlant->"Italic"], "function ", ButtonBox["Graphics", ButtonStyle->"RefGuideLink"], ". ", ButtonBox["Axes", ButtonStyle->"RefGuideLink"], " is set to ", StyleBox["None", "MR"], " so that a geometric figure is represented independently of the \ coordinates." }], "Notes", CellTags->{"Geo.44", "Draw"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Draw"], Cell[TextData[{ "Examples of ", StyleBox["Draw", "MR"], " accompany most of the functions contained in ", StyleBox["Geometrica", FontSlant->"Italic"], " documentation." }], "ExampleText", CellTags->"Draw"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Draw3D", "ObjectName", CellTags->{"Geo.45", "Draw3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Draw3D[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " draws any 3D ", StyleBox["Geometrica", FontSlant->"Italic"], " object ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Draw3D[", "MR"], Cell[BoxData[ \(TraditionalForm\`dir\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`dir\_2\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`x\_2\)]], StyleBox[",", "MR"], "...", StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], "draws any sequence or list of 3D ", StyleBox["Geometrica", FontSlant->"Italic"], " objects or graphics functions ", Cell[BoxData[ \(TraditionalForm\`x\_1\)]], " with graphics directives ", Cell[BoxData[ \(TraditionalForm\`dir\_1\)]], ", any sequence or list of 3D ", StyleBox["Geometrica", FontSlant->"Italic"], " object or graphics functions ", Cell[BoxData[ \(TraditionalForm\`x\_2\)]], " with graphics directives ", Cell[BoxData[ \(TraditionalForm\`dir\_2\)]], ", ... and options ", StyleBox["options", "TI"], ". In case a graphics directive repeats itself, its appearance at a given \ position cancels the effect of its previous appearances and determines the \ style of the following objects. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Graphics functions of ", StyleBox["Draw3D", "MR"], ": ", ButtonBox["Arrow", ButtonData:>{"Arrow"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Legend", ButtonData:>{"Legend"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paint", ButtonData:>{"Paint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ReferenceSystem3D", ButtonData:>{"ReferenceSystem3D"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidAngle3D", ButtonData:>{"SolidAngle3D"}, ButtonStyle->"AddOnsLink"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Graphics directives of ", StyleBox["Draw3D", "MR"], ": plain color as listed in ", ButtonBox["ColorTable", ButtonData:>{"ColorTable"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["DrawRange", ButtonData:>{"DrawRange"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["LineOrigin", ButtonData:>{"LineOriginG"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PlaneOrigin", ButtonData:>{"PlaneOrigin"}, ButtonStyle->"AddOnsLink"], ". The ", StyleBox["Mathematica", FontSlant->"Italic"], " graphics directives of special interest are ", ButtonBox["AbsolutePointSize", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["AbsoluteThickness", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["EdgeForm", ButtonStyle->"RefGuideLink"], " and ", ButtonBox["FaceForm", ButtonStyle->"RefGuideLink"], ".\n\[FilledSmallSquare]", StyleBox[" DisplayOn", "MR"], " \[Rule] ", StyleBox["v", "TI"], " restores the display of a figure when ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], " and inhibits the display when ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Some options of ", StyleBox["Mathematica", FontSlant->"Italic"], " are modified for a geometric representation but only inside ", StyleBox["Draw3D", "MR"], ". ", ButtonBox["AspectRatio", ButtonStyle->"RefGuideLink"], " is set to ", StyleBox["Automatic", "MR"], " to get the same scale in ", StyleBox["x", "TI"], ", ", StyleBox["y ", "TI"], "and ", StyleBox["z", "TI"], ". ", ButtonBox["Axes", ButtonStyle->"RefGuideLink"], " is set to ", StyleBox["None", "MR"], " and ", ButtonBox["Boxed", ButtonStyle->"RefGuideLink"], " to ", StyleBox["False", "MR"], " so that a geometric figure is represented independently of the reference \ system. ", ButtonBox["Lighting", ButtonStyle->"RefGuideLink"], " is also set to ", StyleBox["False", "MR"], " so that the objects can be colored and painted independently of any \ external lighting." }], "Notes", CellTags->{"Geo.45", "Draw3D"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Draw3D"], Cell[TextData[{ "Examples of ", StyleBox["Draw3D", "MR"], " accompany most of the functions contained in ", StyleBox["Geometrica", FontSlant->"Italic"], " documentation." }], "ExampleText", CellTags->"Draw3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["DrawRange", "ObjectName", CellTags->{"Geo.46", "DrawRange"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" DrawRange[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " graphics directive of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which determines the range of the parameter variation used to draw a \ line. Default: ", StyleBox["DrawRange[-\[Pi],\[Pi]]", "MR"], ". The same directive applies to a plane for which the ranges of variation \ of the two parameters are {-", StyleBox["a", "TI"], ", ", StyleBox["a", "TI"], "} and {-", StyleBox["b", "TI"], ", ", StyleBox["b", "TI"], "}.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.46", "DrawRange"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"DrawRange"], Cell["\<\ To fit the length of the asymptotes to a hyperbola, one solution consists of \ shrinking the asymptotes.\ \>", "ExampleText", CellTags->"DrawRange"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(h = Conic[\(-1\), 1];\)\), "\[IndentingNewLine]", \(\(as = Asymptotes[h];\)\), "\[IndentingNewLine]", \(\(Draw[Blue, h, Red, DrawRange[\(-2.5\), 2.5], as];\)\)}], "Input", CellTags->"DrawRange"], Cell["Another solution consists of lengthening the hyperbola.", "ExampleText", CellTags->"DrawRange"], Cell[BoxData[{ \(h = Conic[\(-1\), 1]; \), "\[IndentingNewLine]", \(as = Asymptotes[h]; \), "\[IndentingNewLine]", \(Draw[Red, as, Blue, DrawRange[\(-1\)/4, 4], h]; \)}], "Input", CellTags->"DrawRange"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Eccentricity", "ObjectName", CellTags->{"Geo.16", "Eccentricity"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Eccentricity[", "MR"], StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["]", "MR"], StyleBox[", eccentricity ", "MR", FontFamily->"Times New Roman"], StyleBox["e", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of", "MR", FontFamily->"Times New Roman"], " the conic ", StyleBox["c", FontSlant->"Italic"], ". If ", StyleBox["f", FontSlant->"Italic"], " and ", StyleBox["d", FontSlant->"Italic"], " are the associated focus and directrix of a conic and ", StyleBox["m", FontSlant->"Italic"], " is a point of the conic, the", " eccentricity is the ratio ", Cell[BoxData[ \(TraditionalForm\`mf\/\(dist(m, d)\)\)]], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicEccentricity", ButtonData:>{"ConicEccentricity"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "Eccentricity"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Eccentricity"], Cell[TextData[{ "Eccentricity of default conics", StyleBox[".", "MR", FontFamily->"Times New Roman"] }], "ExampleText", CellTags->"Eccentricity"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Eccentricity"], Cell[BoxData[{ \(c = {ECircle[], Ellipse[], Parabola[], Hyperbola[]}; \), "\[IndentingNewLine]", \(Eccentricity[c]\)}], "Input", CellTags->"Eccentricity"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ECircle", "ObjectName", CellTags->{"Geo.47", "ECircle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["r", "TI"], StyleBox["]", "MR"], " 2D circle of radius", StyleBox[" ", "MR"], StyleBox["r ", "TI"], "(default: 1) centered at origin.\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["r", "TI"], StyleBox["]", "MR"], " 2D circle of center ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and radius", StyleBox[" ", "MR"], StyleBox["r", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " 2D circle of center ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and passing through point", StyleBox[" ", "MR"], StyleBox["b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " 2D circle passing through points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " 2D circle fitting the points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], "\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " 2D circle of center ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and tangent to line", StyleBox[" ", "MR"], StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " 2D circles of center ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and tangent to circle", StyleBox[" ", "MR"], StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["s", "TI"], StyleBox["]", "MR"], " 2D circle of diameter the segment ", StyleBox["s", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ECircle[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox["]", "MR"], " 3D circle defined as the intersection of plane ", StyleBox["p", FontSlant->"Italic"], " and sphere", " ", StyleBox["s", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Circumcircle", ButtonData:>{"Circumcircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ellipse", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Excircles", ButtonData:>{"Excircles"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerCircle", ButtonData:>{"EulerCircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Incircle", ButtonData:>{"Incircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Radius", ButtonData:>{"Radius"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.47", "ECircle"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ECircle"], Cell["Circles defined by center and radius, point or line.", "ExampleText", CellTags->"ECircle"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 2, 3/2}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(d = ELine[b, c];\)\), "\[IndentingNewLine]", \(ci = ECircle[a, {1, b, d}]\), "\[IndentingNewLine]", \(\(Draw[Blue, a, b, c, d, Red, ci];\)\)}], "Input", CellTags->"ECircle"], Cell[TextData[{ "Circle of diameter ", StyleBox["ab", "TI"], "." }], "ExampleText", CellTags->"ECircle"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 2}, 0];\)\), "\[IndentingNewLine]", \(\(s = Segment[a, b];\)\), "\[IndentingNewLine]", \(ci = ECircle@s\), "\[IndentingNewLine]", \(\(Draw[Blue, s, Red, ci];\)\)}], "Input", CellTags->"ECircle"], Cell["Circle fitting 1000 points.", "ExampleText", CellTags->"ECircle"], Cell[BoxData[{ \(m = CPoint @@@ Table[\((1 + Random[Real, {\(- .1\), .1}])\) {Cos[n], Sin[n]}, {n, 1000}]; \), "\[IndentingNewLine]", \(ci = ECircle @@ m\), "\[IndentingNewLine]", \(Draw[AbsolutePointSize[2], Blue, m, Red, ci]; \)}], "Input", CellTags->"ECircle"], Cell[TextData[{ "Circles of center ", StyleBox["a", "TI"], " and tangent to line ", StyleBox["d", "TI"], " and circle ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"ECircle"], Cell[BoxData[{ \(a = CPoint[0, 0]; \), "\[IndentingNewLine]", \(d = CLine[1, 2, 4]; \), "\[IndentingNewLine]", \(c = ECircle[CPoint[1, 1], 1]; \), "\[IndentingNewLine]", \(ci = ECircle[a, {d, c}]\), "\[IndentingNewLine]", \(Draw[ Legend[{"\", "\", "\"}, {a, d, c}, Offset \[Rule] {1, Pi/4}], Blue, a, c, d, Red, ci]; \)}], "Input", CellTags->"ECircle"], Cell[TextData[{ "Circle defined as the intersection of plane ", StyleBox["p", "TI"], " and sphere ", StyleBox["s", "TI"], "." }], "ExampleText", CellTags->"ECircle"], Cell[BoxData[{ \(p = CPlane[1, 1, 1, \(-1\)]; \), "\[IndentingNewLine]", \(s = Sphere[CPoint[0, 0, 0], 2]; \), "\[IndentingNewLine]", \(c = ECircle[p, s]\), "\[IndentingNewLine]", \(Draw3D[Blue, s, Red, p, Thickness[ .01], Magenta, c]; \)}], "Input", CellTags->"ECircle"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Edges", "ObjectName", CellTags->{"Geo.48", "Edges"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Edges[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " edges of polyhedron ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Edges[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], "edges of polyhedron ", StyleBox["p", "TI"], " issued from vertex ", StyleBox["a", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" Edges[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], "edges of polyhedron ", StyleBox["p", "TI"], " issued from ", StyleBox["n", "TI"], " -th vertex. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Sides", ButtonData:>{"Sides"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Solid", ButtonData:>{"Solid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.48", "Edges"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Edges"], Cell["The six edges of a tetrahedron.", "ExampleText", CellTags->"Edges"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(t = Tetrahedron[];\)\), "\[IndentingNewLine]", \({a, b, c, d, e, f} = Edges[t]\), "\[IndentingNewLine]", \(\(Draw3D[Red, a, Green, b, Blue, c, Cyan, d, Yellow, e, Magenta, f];\)\)}], "Input", CellTags->"Edges"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["EdgeSphere", "ObjectName", CellTags->{"Geo.49", "EdgeSphere"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" EdgeSphere[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " sphere tangent to edges of Platonic solid ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["PlatonicSolid", ButtonData:>{"PlatonicSolid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.49", "EdgeSphere"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"EdgeSphere"], Cell["Sphere tangent to the edges of a regular octahedron.", "ExampleText", CellTags->"EdgeSphere"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(oc = PlatonicSolid[8];\)\), "\[IndentingNewLine]", \(s = EdgeSphere[oc]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, oc, Red, s];\)\)}], "Input", CellTags->"EdgeSphere"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ELine", "ObjectName", CellTags->{"Geo.50", "ELine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " line passing through points ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "and ", StyleBox["b", "TI"], ". The line is oriented by the vector ", StyleBox["ab", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " line fitting the points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], "\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " line passing through point ", StyleBox["a", "TI"], " perpendicular to line or plane", StyleBox[" ", "MR"], StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_2\)]], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " returns the line perpendicular to the 3D lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], ".\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " tangents issued from point ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "to conic", StyleBox[" ", "MR"], StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " tangent to curve", StyleBox[" ", "MR"], StyleBox["c", "TI"], " at point of parameter ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ELine[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " lines collinear to the sides (or edges) of polygonal line (or polyhedron) \ ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Segment \[Rule] ", "MR"], StyleBox["v", "TI"], " lines or segments are returned if ", StyleBox["v ", "TI"], "is set to ", StyleBox["False", "MR"], " (default) or ", StyleBox["True", "MR"], ". The option is useful for graphical applications and to have access to \ points involved in the construction of the line.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Altitudes", ButtonData:>{"Altitudes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Asymptotes", ButtonData:>{"Asymptotes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["AxisOfPerspective", ButtonData:>{"AxisOfPerspective"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Bisector", ButtonData:>{"Bisector"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CLine", ButtonData:>{"CLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicAxes", ButtonData:>{"ConicAxes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CPlane", ButtonData:>{"CPlane"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerLine", ButtonData:>{"EulerLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Medians", ButtonData:>{"Medians"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PascalLine", ButtonData:>{"PascalLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.50", "ELine"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"ELine"], Cell["Line through two symbolic points.", "ExampleText", CellTags->"ELine"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({m, n} = CPoint[{a, c}, {b, d}];\)\), "\[IndentingNewLine]", \(ELine[m, n]\)}], "Input", CellTags->"ELine"], Cell["Line fitting 1000 points.", "ExampleText", CellTags->"ELine"], Cell[BoxData[{ \(m = CPoint @@@ Table[ CPoint[n + Random[Real, {\(- .1\)\ n, .1\ n}], \((2 n - 1)\) + Random[Real, {\(- .1\)\ n, .1\ n}]], {n, 1000}]; \), "\[IndentingNewLine]", \(d = ELine @@ m\), "\[IndentingNewLine]", \(Draw[AbsolutePointSize[2], Blue, m, LineOrigin@CPoint[500, 1000], DrawRange[\(-1200\), 1200], AbsoluteThickness[2], Red, d]; \)}], "Input",\ CellTags->"ELine"], Cell[TextData[{ "Segments of tangents issued from point ", StyleBox["b", "TI"], " to circle ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"ELine"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 2}, 0];\)\), "\[IndentingNewLine]", \(\(c = ECircle[a, 1];\)\), "\[IndentingNewLine]", \(d = ELine[b, c, Segment \[Rule] True]\), "\[IndentingNewLine]", \(\(Draw[Blue, b, c, Red, d];\)\)}], "Input", CellTags->"ELine"], Cell[TextData[{ "Lines collinear to the edges of tetrahedron ", StyleBox["t", "TI"], " and segment perpendicular to two non coplanar edges of ", StyleBox["t", "TI"], "." }], "ExampleText", CellTags->"ELine"], Cell[BoxData[{ \(t = Tetrahedron[]; \), "\n", \(d = ELine[t]\), "\n", \(d1 = d[\([\)\(2\)\(]\)]; \), "\n", \({d2} = Select[d, CoplanarQ[d1, #] === False &]; \), "\n", \(d = ELine[d1, d2]\), "\n", \(Draw3D[DrawRange[\(-1.2\), 1.2], t, Blue, d1, d2, Red, d]; \)}], "Input",\ CellTags->"ELine"], Cell[TextData[{ "The same calculation using the option ", StyleBox["Segment \[Rule] ", "MR"], StyleBox["True", "TI"], " is very complicated if it is symbolic but becomes fast for a numerical \ tetrahedron." }], "ExampleText", CellTags->"ELine"], Cell[BoxData[{ \(t = N@Tetrahedron[]; \), "\n", \(d = ELine[t]\), "\n", \(d1 = d[\([\)\(2\)\(]\)]; \), "\n", \({d2} = Select[d, CoplanarQ[d1, #] === False &]; \), "\n", \(d = ELine[d1, d2, Segment \[Rule] True]\), "\n", \(Draw3D[DrawRange[\(-1.2\), 1.2], t, Blue, d1, d2, Red, d]; \)}], "Input",\ CellTags->"ELine"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Ellipse", "ObjectName", CellTags->{"Geo.51", "Ellipse"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Ellipse[]", "MR"], " cartesian ellipse of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], StyleBox["+ 2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["1", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0. \n\[FilledSmallSquare]", StyleBox[" Ellipse[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " cartesian ellipse of equation ", StyleBox["r", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ 2", StyleBox["sxy + t", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "+ 2", StyleBox["ux + 2vy + w = ", "TI"], "0. It is produced by ", StyleBox["CConic", "MR"], " when ", StyleBox["rt ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`s\^2\)]], " > 0. Not all symbolic calculations can be performed with symbolic \ arguments in ", StyleBox["Ellipse", "MR"], " as input.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Brianchon", ButtonData:>{"Brianchon"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicAxes", ButtonData:>{"ConicAxes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ECircle", ButtonData:>{"ECircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pascal", ButtonData:>{"Pascal"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Ellipse"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Ellipse"], Cell["\<\ Some, but rare, symbolic calculations can be performed with the cartesian \ form of an ellipse.\ \>", "ExampleText", CellTags->"Ellipse"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(Clear[u, v]\), "\[IndentingNewLine]", \(c = Center@Ellipse[1, 0, 2, u, v, \(-1\)]\)}], "Input", CellTags->"Ellipse"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Ellipse3D", "ObjectName", CellTags->{"Geo.51", "Ellipse3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Ellipse3D[]", "MR"], " cartesian ellipse of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], StyleBox["+ 2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["1", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0 lying in the plane of equation ", StyleBox["x", FontSlant->"Italic"], "+", StyleBox["2y", FontSlant->"Italic"], "+", StyleBox["3z", FontSlant->"Italic"], "=", StyleBox["0", FontSlant->"Italic"], ". The equation of the hyperbola is given in the reference system of the \ plane and that of the plane in the absolute system of reference.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Ellipse", ButtonData:>{"Ellipse"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Ellipse3D"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Ellipse3D"], Cell["\<\ Some, but rare, symbolic calculations can be performed with the cartesian \ form of an ellipse.\ \>", "ExampleText", CellTags->"Ellipse3D"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(c = Ellipse3D[]\), "\[IndentingNewLine]", \(Draw3D@Paint[c, Red]\)}], "Input", CellTags->"Ellipse3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["EllipticCylinder", "ObjectName", CellTags->{"Geo.16", "EllipticCylinder"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" EllipticCylinder[]", "MR"], " elliptic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["2", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - ", StyleBox["1", "TI", FontSlant->"Plain"], StyleBox[" = ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" EllipticCylinder[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox["]", "MR"], " elliptic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " - ", StyleBox["1 = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" EllipticCylinder[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Cylinder ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "EllipticCylinder"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"EllipticCylinder"], Cell["\<\ The first definition generates quickly an arbitrary elliptic cylinder.\ \>", "ExampleText", CellTags->"EllipticCylinder"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = EllipticCylinder[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"EllipticCylinder"], Cell["\<\ The cylinder can be transformed, for instance by symmetry about a plane. \ \>", "ExampleText", CellTags->"EllipticCylinder"], Cell[BoxData[{ \(p = CPlane[1, 0, 0, \(-4\)]; \), "\[IndentingNewLine]", \(q1 = Image[q, p]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, Paint[p, Green], Red, q1]; \)}], "Input", CellTags->"EllipticCylinder"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["EllipticParaboloid", "ObjectName", CellTags->{"Geo.16", "EllipticParaboloid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" EllipticParaboloid[]", "MR"], " elliptic paraboloid of equation 2", StyleBox["x ", FontSlant->"Italic"], StyleBox["= ", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "+ ", StyleBox["2", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" EllipticParaboloid[", "MR"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox["]", "MR"], " elliptic paraboloid of equation 2", StyleBox["x ", FontSlant->"Italic"], StyleBox["= ", "TI"], Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" EllipticParaboloid[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Paraboloid ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraboloid", ButtonData:>{"Paraboloid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "EllipticParaboloid"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"EllipticParaboloid"], Cell["\<\ The first definition generates quickly an arbitrary elliptic paraboloid.\ \>", "ExampleText", CellTags->"EllipticParaboloid"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = EllipticParaboloid[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"EllipticParaboloid"], Cell["\<\ The paraboloid can be transformed, for instance by rotation of \[Pi]/2 about \ y-axis. \ \>", "ExampleText", CellTags->"EllipticParaboloid"], Cell[BoxData[{ \({a, b} = CPoint[0, {\(-1\), 1}, 0]; \), "\[IndentingNewLine]", \(d = ELine[a, b]; \), "\[IndentingNewLine]", \(q1 = Rotate[q, d, Pi/2]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, d, Red, q1]; \)}], "Input", CellTags->"EllipticParaboloid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Euler", "ObjectName", CellTags->{"Geo.52", "Euler"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Euler[", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " graph of Euler's theorem, Euler's line and circle of triangle ", StyleBox["t", "TI"], ".\n Euler's theorem states that \n ", StyleBox["1. The orthocenter, centroid and circumcenter of any non \ equilateral triangle lie on a common line.\n 2. In a triangle, the feet of \ the altitudes and medians and the midpoints of the segments joining the \ vertices to the orthocenter lie on a common circle.", "Theorem"], "\n\[FilledSmallSquare]", StyleBox[" Offset \[Rule] {r,\[CurlyPhi]}", "MR"], " option of Euler to adjust the position of the name of circumcenter (C), \ center of gravity (G) and orthocenter (H). See ", ButtonBox["Legend", ButtonData:>{"Legend"}, ButtonStyle->"AddOnsLink"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Altitudes", ButtonData:>{"Altitudes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Circumcenter", ButtonData:>{"Circumcenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CenterOfGravity", ButtonData:>{"CenterOfGravity"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Orthocenter", ButtonData:>{"Orthocenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerCircle", ButtonData:>{"EulerCircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerLine", ButtonData:>{"EulerLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Medians", ButtonData:>{"Medians"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.52", "Euler"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Euler"], Cell[TextData[{ "Euler's theorem for trianngle ", StyleBox["t", "TI"], ". Euler's line, circumcenter (C), center of gravity (G) and orthocenter \ (H) are drawn in blue. Euler's circle and the special points that lie on it \ are in red. The medians and altitudes are in green." }], "ExampleText", CellTags->"Euler"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, \(-1\)/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(Euler[t]\)}], "Input", CellTags->"Euler"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["EulerCircle", "ObjectName", CellTags->{"Geo.53", "EulerCircle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" EulerCircle[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " Euler's circle of triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Euler", ButtonData:>{"Euler"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.53", "EulerCircle"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"EulerCircle"], Cell[TextData[{ "Euler's circle of trianngle ", StyleBox["t", "TI"], ". " }], "ExampleText", CellTags->"EulerCircle"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, \(-1\)/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(EulerCircle[t]\)}], "Input", CellTags->"EulerCircle"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["EulerLine", "ObjectName", CellTags->{"Geo.54", "EulerLine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" EulerLine[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " Euler's line of triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Euler", ButtonData:>{"Euler"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.54", "EulerLine"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"EulerLine"], Cell[TextData[{ "Euler's line of trianngle ", StyleBox["t", "TI"], ". " }], "ExampleText", CellTags->"EulerLine"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, \(-1\)/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\(cc = Circumcenter[t];\)\), "\[IndentingNewLine]", \(\(cg = CenterOfGravity[t];\)\), "\[IndentingNewLine]", \(\(or = Orthocenter[t];\)\), "\[IndentingNewLine]", \(d = EulerLine[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, LineOrigin[cg], DrawRange[\(-1\), 1], cc, cg, or, d];\)\)}], "Input", CellTags->"EulerLine"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Excenters", "ObjectName", CellTags->{"Geo.55", "Excenters"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Excenters[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " centers of the excircles polygonal line ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Bisector", ButtonData:>{"Bisector"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Excircles", ButtonData:>{"Excircles"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.55", "Excenters"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Excenters"], Cell["Excenters of 2D triangle.", "ExampleText", CellTags->"Excenters"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(ec = Excenters[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, ec];\)\)}], "Input", CellTags->"Excenters"], Cell["Excenters of 3D triangle.", "ExampleText", CellTags->"Excenters"], Cell[BoxData[{ \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(ec = Excenters[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, ec];\)\)}], "Input", CellTags->"Excenters"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Excircles", "ObjectName", CellTags->{"Geo.56", "Excircles"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Excircles[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " excircles of polygonal line ", StyleBox["p", "TI"], ". Given four consecutive vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ", StyleBox["d", "TI"], ", an excircle is tangent to the segment ", StyleBox["bc", "TI"], " and to the half lines issued from ", StyleBox["b", "TI"], " and ", StyleBox["c", "TI"], ", collinear to ", StyleBox["ab", "TI"], " and ", StyleBox["dc", "TI"], " and exterior to ", StyleBox["ab", "TI"], " and ", StyleBox["dc", "TI"], ". The points ", StyleBox["a", "TI"], " and ", StyleBox["d", "TI"], " may be identical. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Incircle", ButtonData:>{"Incircle"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.56", "Excircles"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Excircles"], Cell["Excircles of 2D triangle.", "ExampleText", CellTags->"Excircles"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(ec = Excircles[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, ec];\)\)}], "Input", CellTags->"Excircles"], Cell["Excircles of 3D triangle.", "ExampleText", CellTags->"Excircles"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(t = Triangle[a, b, c]; \), "\[IndentingNewLine]", \(ec = Excircles[t]\), "\[IndentingNewLine]", \(Draw3D[Blue, t, Red, ec]; \)}], "Input", CellTags->"Excircles"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Exspheres", "ObjectName", CellTags->{"Geo.57", "Exspheres"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Exspheres[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " exspheres of tetrahedron ", StyleBox["t", "TI"], ". Given the vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ", StyleBox["d", "TI"], ", an exsphere is tangent to the face ", StyleBox["abc", "TI"], " and to the half planes issued from ", StyleBox["ab", "TI"], ", ", StyleBox["bc", "TI"], " and ", StyleBox["ca", "TI"], ", coplanar to ", StyleBox["abd", "TI"], ", ", StyleBox["bcd", "TI"], " and ", StyleBox["cad", "TI"], " and exterior to faces ", StyleBox["abd", "TI"], ", ", StyleBox["bcd", "TI"], " and ", StyleBox["cad", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Insphere", ButtonData:>{"Insphere"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.57", "Exspheres"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Exspheres"], Cell["Exspheres of a tetrahedron.", "ExampleText", CellTags->"Exspheres"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(t = N@Tetrahedron[];\)\), "\[IndentingNewLine]", \(s = Exspheres[t]\), "\[IndentingNewLine]", \(\(f = Faces[t];\)\), "\[IndentingNewLine]", \(\(Draw3D[Paint[f, {Blue, Cyan, Yellow, Magenta}], t, Red, s];\)\)}], "Input", CellTags->"Exspheres"], Cell["\<\ One may wish to check that the spheres are tangent to the four faces of the \ tetrahedron.\ \>", "ExampleText", CellTags->"Exspheres"], Cell[BoxData[{ \(p = Plane /@ f; \), "\[IndentingNewLine]", \(\(TangentQ[p, #] &\) /@ s\)}], "Input", CellTags->"Exspheres"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Faces", "ObjectName", CellTags->{"Geo.58", "Faces"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Faces[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " faces of polyhedron ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Faces[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], "faces of polyhedron ", StyleBox["p", "TI"], " sharing the ", StyleBox["n", "TI"], "-th vertex. \n\[FilledSmallSquare]", StyleBox[" Faces[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[",", "MR"], StyleBox["Edges", "TI"], StyleBox["\[Rule]", "TI", FontSlant->"Plain"], StyleBox["True", "TI"], StyleBox["]", "MR"], "faces of polyhedron ", StyleBox["p", "TI"], " sharing the ", StyleBox["n", "TI"], "-th edge. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cube", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallelepiped", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PlatonicSolid", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pyramid", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Solid", ButtonData:>{"Solid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Tetrahedron", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.58", "Faces"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Faces"], Cell[TextData[{ "Faces of tetrahedron ", StyleBox["t ", "TI"], "sharing the second vertex." }], "ExampleText", CellTags->"Faces"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(t = Tetrahedron[];\)\), "\[IndentingNewLine]", \(\(v = Vertices[t];\)\), "\[IndentingNewLine]", \(f1 = Faces[t, 2]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, v[\([2]\)], Paint[f1, {Red, Green, Blue}]];\)\)}], "Input", CellTags->"Faces"], Cell[TextData[{ "Faces of tetrahedron ", StyleBox["t ", "TI"], "sharing the fourth edge." }], "ExampleText", CellTags->"Faces"], Cell[BoxData[{ \(t = Tetrahedron[]; \), "\[IndentingNewLine]", \(f2 = Faces[t, 4, Edges \[Rule] True]\), "\[IndentingNewLine]", \(ed = \(Edges[t]\)[\([\)\(4\)\(]\)]; \), "\[IndentingNewLine]", \(Draw3D[t, Blue, ed, Paint[f2, {Blue, Red}]]; \)}], "Input", CellTags->"Faces"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["FermatPoint", "ObjectName", CellTags->{"Geo.59", "FermatPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" FermatPoint[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " Fermat's point of triangle ", StyleBox["t", "TI"], " located at the common intersection of the lines joining the vertices ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], " to the vertices \[Alpha], \[Beta], \[Gamma] of the equilateral triangles \ \[Alpha]", StyleBox["bc, \[Beta]ca", "TI"], StyleBox[", \[Gamma]", "TI", FontSlant->"Plain"], StyleBox["ab", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.59", "FermatPoint"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"FermatPoint"], Cell[TextData[{ "Fermat point of triangle", " ", StyleBox["t", "TI"], " and its construction." }], "ExampleText", CellTags->"FermatPoint"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"FermatPoint"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(t = Triangle[a, b, c]; \), "\[IndentingNewLine]", \(f = FermatPoint[t]\), "\[IndentingNewLine]", \(t1 = RegularPolygon[{b, c, a}, {a, b, c}, 3]; \), "\[IndentingNewLine]", \(m = \(Part[#, 3] &\) /@ t1; \), "\[IndentingNewLine]", \(d = ELine[{c, a, b}, m, Segment \[Rule] True]; \), "\[IndentingNewLine]", \(Draw[Green, LineOrigin[f], d, t1, Blue, t, Red, f]; \)}], "Input", CellTags->"FermatPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Foci", "ObjectName", CellTags->{"Geo.60", "Foci"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Foci[", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " list of foci of conic ", StyleBox["c", "TI"], ". The focus of a circle is its center. The focus is the pole of the \ directrix with respect to the conic. Foci and directrices are listed in the \ same order in ", StyleBox["Foci", "MR"], " and ", StyleBox["Directrices", "MR"], ". Note that a general quadric has no foci unless it is of revolution.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrices", ButtonData:>{"Directrices"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Eccentricity", ButtonData:>{"Eccentricity"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pole", ButtonData:>{"Pole"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.60", "Foci"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Foci"], Cell["Foci of a hyperbola associated with their directrices.", "ExampleText", CellTags->"Foci"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(co = Conic[\(-1\), 1];\)\), "\n", \({f1, f2} = Foci[co]\), "\n", \(\({d1, d2} = Directrices[co];\)\), "\[IndentingNewLine]", \(\(Draw[Blue, co, Red, f1, d1, Green, f2, d2];\)\)}], "Input", CellTags->"Foci"], Cell["Focus and directrix of a parabola", "ExampleText", CellTags->"Foci"], Cell[BoxData[{ \(co = Parabola[1]; \), "\n", \(f = Foci[co]\), "\n", \(d = Directrices[co]; \), "\[IndentingNewLine]", \(Draw[Blue, co, Red, f, d]; \)}], "Input", CellTags->"Foci"], Cell["Focus and directrix of the same parabola in 3D.", "ExampleText", CellTags->"Foci"], Cell[BoxData[{ \(co = To3D@Parabola[1]; \), "\n", \(f = Foci[co]\), "\n", \(d = Directrices[co]; \), "\[IndentingNewLine]", \(Draw3D[Blue, co, Red, f, d]; \)}], "Input", CellTags->"Foci"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Generators", "ObjectName", CellTags->{"Geo.137", "Generators"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Generators[", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], " straight lines of ruled quadric ", StyleBox["q", "TI"], ". The cone, cylinder and hyperboloid of one sheet have one family of \ generators whereas the hyperbolic paraboloid has two families. Each family is \ represented by a pure function of one parameter. The generator passing \ through the point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ") is declared as ", StyleBox["Generators[", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], "[u,v]. The generators are used in the represention of a ruled quadric.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.137", "Generators"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Generators"], Cell[TextData[{ StyleBox["The family of generators of a hyperboloid of one sheet are \ created and it is checked that the whole family does belong to the quadric \ since the variable ", "MR", FontFamily->"Times New Roman"], StyleBox["u", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" is symbolic.", "MR", FontFamily->"Times New Roman"] }], "ExampleText", CellTags->"Generators"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(q = HyperboloidOfOneSheet[];\)\), "\[IndentingNewLine]", \({g} = Generators[q]\), "\[IndentingNewLine]", \(OfQ[g[u], q]\)}], "Input", CellTags->"Generators"], Cell[TextData[{ StyleBox["Then the generator passing through the point (0,1) is drawn", "MR", FontFamily->"Times New Roman"], StyleBox[". It coincides with the first line of the array of lines that \ represents the hyperboloid.", "MR", FontFamily->"Times New Roman"] }], "ExampleText", CellTags->"Generators"], Cell[BoxData[{ \(\(m = Pointer[q, 0, 1];\)\), "\[IndentingNewLine]", \(\(d = g[0];\)\), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, LineOrigin[m], Red, m, d];\)\)}], "Input", CellTags->"Generators"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Helicoid", "ObjectName", CellTags->{"Geo.61", "Helicoid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Helicoid[]", "MR"], " helicoid of radius 1, pitch 1 and number of revolutions 1. \n\ \[FilledSmallSquare]", StyleBox[" Helicoid[", "MR"], StyleBox["w", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["options", "TI"], StyleBox["]", "MR"], " helicoid of width ", StyleBox["w", FontSlant->"Italic"], ", pitch ", StyleBox["p", FontSlant->"Italic"], " and number of revolutions ", StyleBox["n", FontSlant->"Italic"], ". The width of the helicoid is the distance ", Cell[BoxData[ \(TraditionalForm\`r\_2\)]], "-", Cell[BoxData[ \(TraditionalForm\`r\_1\)]], "with ", Cell[BoxData[ \(TraditionalForm\`r\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`r\_2\)]], "the inner and outer radii.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Three variables are optional: the initial angle (", StyleBox["InitialAngle", "MR"], "), the inner radius (", StyleBox["InnerRadius", "MR"], ") and the sense of rotation (", StyleBox["RightHanded", "MR"], ").\n\[FilledSmallSquare]", StyleBox[" InitialAngle \[Rule] \[Theta]", "MR"], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(initial\ angle\ of\ the\ helicoid . \ Default\ \(value : \ 0. \)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" InnerRadius \[Rule] ", "MR"], Cell[BoxData[ \(TraditionalForm\`r\_1, \ inner\ radius\ of\ the\ helicoid . \ Default\ \(value : \ \(\(0.1\)\(.\)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" RightHanded \[Rule] ", "MR"], StyleBox["v", "MR", FontSlant->"Italic"], Cell[BoxData[ FormBox[ RowBox[{",", " ", RowBox[{"right", " ", "handed", " ", "helicoid", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], StyleBox["True", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], \((default)\), " ", "and", " ", "left", " ", "handed", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], RowBox[{ StyleBox["False", FontSlant->"Italic"], "."}]}]}], TraditionalForm]]], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Helix", ButtonData:>{"Helix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HelicoidalStaircase", ButtonData:>{"HelicoidalStaircase"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.61", "Helicoid"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Helicoid"], Cell["Helicoid with default parameters.", "ExampleText", CellTags->"Helicoid"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Helicoid"], Cell[BoxData[{ \(h = Helicoid[]\), "\[IndentingNewLine]", \(Draw3D[Paint[h]]; \)}], "Input", CellTags->"Helicoid"], Cell["\"Double helix\".", "Text", CellTags->"Helicoid"], Cell[BoxData[{ \(h1 = Helicoid[4, 1, 2, InnerRadius \[Rule] 1]\), "\[IndentingNewLine]", \(h2 = Helicoid[4, 1, 2, InnerRadius \[Rule] 1, InitialAngle \[Rule] Pi]\), "\[IndentingNewLine]", \(Draw3D[Paint[{h1, h2}, {Blue, Green}]]; \)}], "Input", CellTags->"Helicoid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["HelicoidalStaircase", "ObjectName", CellTags->{"Geo.61", "HelicoidalStaircase"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" HelicoidalStaircase[]", "MR"], " helicoid of width 1, pitch 1, number of revolutions 1 and angular step ", Cell[BoxData[ \(TraditionalForm\`\[Pi]\/18\)]], ". \n\[FilledSmallSquare]", StyleBox[" HelicoidalStaircase[", "MR"], StyleBox["w", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[", \[Theta]", "TI", FontSlant->"Plain"], StyleBox[", options", "TI"], StyleBox["]", "MR"], " helicoidal staircase of width ", StyleBox["w", FontSlant->"Italic"], ", pitch ", StyleBox["p", FontSlant->"Italic"], ", number of revolutions ", StyleBox["n", FontSlant->"Italic"], " (not necessarily integer) and angular step \[Theta]. The width of the \ helicoid is the distance ", Cell[BoxData[ \(TraditionalForm\`r\_2\)]], "-", Cell[BoxData[ \(TraditionalForm\`r\_1\)]], "with ", Cell[BoxData[ \(TraditionalForm\`r\_1\)]], "and ", Cell[BoxData[ \(TraditionalForm\`r\_2\)]], "the inner and outer radii. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Five variables are optional: the initial angle (", StyleBox["InitialAngle", "MR"], "), the inner radius (", StyleBox["InnerRadius", "MR"], ") and the sense of rotation (", StyleBox["RightHanded", "MR"], ") and the recess (", StyleBox["Recess", "MR"], ") and thickness (", StyleBox["Thickness", "MR"], ") of the steps.\n\[FilledSmallSquare]", StyleBox[" InitialAngle \[Rule] \[Theta]", "MR"], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(initial\ angle\ of\ the\ helicoid . \ Default\ \(value : \ 0. \)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" InnerRadius \[Rule] ", "MR"], Cell[BoxData[ \(TraditionalForm\`r\_1, \ inner\ radius\ of\ the\ helicoid . \ Default\ \(value : \ \(\(0.1\)\(.\)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" RightHanded \[Rule] ", "MR"], StyleBox["v", "MR", FontSlant->"Italic"], Cell[BoxData[ FormBox[ RowBox[{",", " ", RowBox[{"right", " ", "handed", " ", "helicoid", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], StyleBox["True", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], \((default)\), " ", "and", " ", "left", " ", "handed", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], RowBox[{ StyleBox["False", FontSlant->"Italic"], "."}]}]}], TraditionalForm]]], "\n\[FilledSmallSquare]", StyleBox[" Recess \[Rule] ", "MR"], StyleBox["r", "MR", FontSlant->"Italic"], Cell[BoxData[ FormBox[ RowBox[{",", " ", RowBox[{ "the", " ", "step", " ", "is", " ", "saliant", " ", "above", " ", "its", " ", "vertical", " ", \(support . \ The\), " ", "distance", " ", "from", " ", "the", " ", "vertical", " ", "support", " ", "to", " ", "the", " ", "edge", " ", "of", " ", "the", " ", "step", " ", "is", " ", "the", " ", "recess", " ", RowBox[{ StyleBox["r", FontSlant->"Italic"], ".", " ", \(Default : \ \(\(0.1\)\(.\)\)\)}]}]}], TraditionalForm]]], "\n\[FilledSmallSquare]", StyleBox[" Thickness \[Rule] ", "MR"], StyleBox["t", "MR", FontSlant->"Italic"], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(thickness\ of\ the\ step . \ \ \(Default : \ \(\(0.1\)\(.\)\)\)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Helix", ButtonData:>{"Helix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Helicoid", ButtonData:>{"Helicoid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.61", "HelicoidalStaircase"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"HelicoidalStaircase"], Cell["\<\ Helicoidal staircase with default parameters. The output is a solid with many \ faces and its expression has been shortened.\ \>", "ExampleText", CellTags->"HelicoidalStaircase"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"HelicoidalStaircase"], Cell[BoxData[{ \(\(h = HelicoidalStaircase[];\)\), "\[IndentingNewLine]", \(Short[h, 10]\), "\[IndentingNewLine]", \(\(Draw3D[Paint[h]];\)\)}], "Input", CellTags->"HelicoidalStaircase"], Cell["Double staircase.", "Text", CellTags->"HelicoidalStaircase"], Cell[BoxData[{ \(\(h1 = HelicoidalStaircase[2, 1, 1/4, Pi/20, InnerRadius \[Rule] 4];\)\), "\[IndentingNewLine]", \(\(h2 = HelicoidalStaircase[2, 1, 1/4, Pi/20, RightHanded \[Rule] False, InitialAngle \[Rule] Pi, InnerRadius \[Rule] 4];\)\), "\[IndentingNewLine]", \(\(Draw3D[Paint[{h1, h2}, {Blue, Green}]];\)\)}], "Input", CellTags->"HelicoidalStaircase"], Cell["Detail of a step.", "Text", CellTags->"HelicoidalStaircase"], Cell[BoxData[{ \(\(h = HelicoidalStaircase[2, 1, 1/20, Pi/10, Thickness \[Rule] .1, Recess \[Rule] .2, InnerRadius \[Rule] 4];\)\), "\[IndentingNewLine]", \(\(Draw3D[Paint[h], ViewPoint \[Rule] {\(-2\), 2, 2}];\)\)}], "Input", CellTags->"HelicoidalStaircase"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Helix", "ObjectName", CellTags->{"Geo.61", "Helix"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Helix[]", "MR"], " helix of radius 1, pitch 1 and number of revolutions 1. \n\ \[FilledSmallSquare]", StyleBox[" Helix[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["options", "TI"], StyleBox["]", "MR"], " helix of radius ", StyleBox["r", FontSlant->"Italic"], ", pitch ", StyleBox["p", FontSlant->"Italic"], " and number of revolutions ", StyleBox["n", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "Two variables are optional: the initial angle (", StyleBox["InitialAngle", "MR"], ") and the sense of rotation (", StyleBox["RightHanded", "MR"], ").\n\[FilledSmallSquare]", StyleBox[" InitialAngle \[Rule] \[Theta]", "MR"], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(initial\ angle\ of\ the\ helicoid . \ Default\ \(value : \ 0. \)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" RightHanded \[Rule] ", "MR"], StyleBox["v", "MR", FontSlant->"Italic"], Cell[BoxData[ FormBox[ RowBox[{",", " ", RowBox[{"right", " ", "handed", " ", "helicoid", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], StyleBox["True", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], \((default)\), " ", "and", " ", "left", " ", "handed", " ", "if", " ", StyleBox["v", FontSlant->"Italic"], StyleBox[" ", FontSlant->"Plain"], StyleBox["is", FontSlant->"Plain"], StyleBox[" ", FontSlant->"Plain"], RowBox[{ StyleBox["False", FontSlant->"Italic"], "."}]}]}], TraditionalForm]]], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Helicoid", ButtonData:>{"Helicoid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HelicoidalStaircase", ButtonData:>{"HelicoidalStaircase"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.61", "Helix"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Helix"], Cell["Helix with default parameters.", "ExampleText", CellTags->"Helix"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Helix"], Cell[BoxData[{ \(h = Helix[]\), "\[IndentingNewLine]", \(Draw3D[Blue, h]; \)}], "Input", CellTags->"Helix"], Cell[TextData[{ "Left- and righthanded helices with radius 4, pitch 1 and two revolutions. \ The rule ", StyleBox["ru", FontSlant->"Italic"], " improves the ", "definition of the curve." }], "Text", CellTags->"Helix"], Cell[BoxData[{ \(ru = \((PRange \[Rule] _)\) \[Rule] \((PRange \[Rule] {0, 4 Pi, 50})\); \), "\[IndentingNewLine]", \(h1 = Helix[4, 1, 2, RightHanded \[Rule] False] /. ru; \), "\[IndentingNewLine]", \(h2 = Helix[4, 1, 2] /. ru; \), "\[IndentingNewLine]", \(Draw3D[Blue, h1, Red, h2]; \)}], "Input", CellTags->"Helix"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Hyperbola", "ObjectName", CellTags->{"Geo.61", "Hyperbola"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Hyperbola[]", "MR"], " cartesian hyperbola of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], StyleBox["- 2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["1", FontSlant->"Italic"], StyleBox[" = ", "TI"], StyleBox["0", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" Hyperbola[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " cartesian hyperbola of equation ", StyleBox["r", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ 2", StyleBox["sxy + t", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "+ 2", StyleBox["ux + 2vy + w = ", "TI"], "0. It is produced by ", StyleBox["CConic", "MR"], " when ", StyleBox["rt ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`s\^2\)]], " < 0. Not all symbolic calculations can be performed with symbolic \ arguments in ", StyleBox["Hyperbola", "MR"], " as input.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Asymptotes", ButtonData:>{"Asymptotes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicAxes", ButtonData:>{"ConicAxes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.61", "Hyperbola"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Hyperbola"], Cell["\<\ Some, but rare, symbolic calculations can be performed with the cartesian \ form of an hyperbola.\ \>", "ExampleText", CellTags->"Hyperbola"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(c = Asymptotes@Hyperbola[1, 0, \(-2\), u, v, \(-1\)]\)}], "Input", CellTags->"Hyperbola"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Hyperbola3D", "ObjectName", CellTags->{"Geo.51", "Hyperbola3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Hyperbola3D[]", "MR"], " cartesian hyperbola of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], StyleBox["- 2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["1", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0 lying in the plane of equation ", StyleBox["x", FontSlant->"Italic"], "+", StyleBox["2y", FontSlant->"Italic"], "+", StyleBox["3z", FontSlant->"Italic"], "=", StyleBox["0", FontSlant->"Italic"], ". The equation of the hyperbola is given in the reference system of the \ plane and that of the plane in the absolute system of reference.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Hyperbola", ButtonData:>{"Hyperbola"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Hyperbola3D"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Hyperbola3D"], Cell["Representation of default 3D-hyperbola", "ExampleText", CellTags->"Hyperbola3D"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(c = Hyperbola3D[]\), "\[IndentingNewLine]", \(Draw3D[Red, c]\)}], "Input", CellTags->"Hyperbola3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["HyperbolicCylinder", "ObjectName", CellTags->{"Geo.16", "HyperbolicCylinder"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" HyperbolicCylinder[]", "MR"], " hyperbolic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "- ", StyleBox["2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - ", StyleBox["1 = ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" HyperbolicCylinder[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox["]", "MR"], " hyperbolic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], StyleBox[" ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 1.\n\[FilledSmallSquare]", StyleBox[" HyperbolicCylinder[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Cylinder ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "HyperbolicCylinder"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"HyperbolicCylinder"], Cell["\<\ The first definition generates quickly an arbitrary hyperbolic cylinder.\ \>", "ExampleText", CellTags->"HyperbolicCylinder"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = HyperbolicCylinder[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"HyperbolicCylinder"], Cell["\<\ The cylinder can be transformed, for instance by rotation about z-axis of \ angle \[Pi]/3. \ \>", "ExampleText", CellTags->"HyperbolicCylinder"], Cell[BoxData[{ \(q1 = Rotate[q, CPoint[0, 0, 0], Pi/3, 0, 0]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, Red, q1];\)\)}], "Input", CellTags->"HyperbolicCylinder"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["HyperbolicParaboloid", "ObjectName", CellTags->{"Geo.16", "HyperbolicParaboloid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" HyperbolicParaboloid[]", "MR"], " hyperbolic paraboloid of equation 2 ", StyleBox["z = ", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "- ", StyleBox["2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" HyperbolicParaboloid[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox["]", "MR"], " hyperbolic paraboloid of equation 2 ", StyleBox["z = ", "TI"], Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], StyleBox[" ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], ".\n\[FilledSmallSquare]", StyleBox[" HyperbolicParaboloid[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Paraboloid ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraboloid", ButtonData:>{"Paraboloid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "HyperbolicParaboloid"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"HyperbolicParaboloid"], Cell["\<\ The first definition generates quickly an arbitrary hyperbolic paraboloid.\ \>", "ExampleText", CellTags->"HyperbolicParaboloid"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = HyperbolicParaboloid[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"HyperbolicParaboloid"], Cell[TextData[{ "The paraboloid can be transformed, for instance by translation parallel to \ ", StyleBox["a", FontSlant->"Italic"], " (0,0,0), ", StyleBox["b", FontSlant->"Italic"], " (1,1,1). " }], "ExampleText", CellTags->"HyperbolicParaboloid"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 1}, {0, 1}, {0, 1}];\)\), "\[IndentingNewLine]", \(q1 = Translate[q, b]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, Red, q1, AbsoluteThickness[2], Black, Arrow[Segment[a, b], 3]];\)\)}], "Input", CellTags->"HyperbolicParaboloid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["HyperboloidOfOneSheet", "ObjectName", CellTags->{"Geo.16", "HyperboloidOfOneSheet"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" HyperboloidOfOneSheet[]", "MR"], " cartesian hyperboloid of one sheet of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["2", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - ", StyleBox["3", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " -", StyleBox[" ", "TI"], StyleBox["1", "TI", FontSlant->"Plain"], StyleBox[" = ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" HyperboloidOfOneSheet[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox["]", "MR"], " hyperboloid of one sheet of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], StyleBox[" ", "TI"], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], "- ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " - 1 = 0.\n\[FilledSmallSquare]", StyleBox[" HyperboloidOfOneSheet[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], " or ", StyleBox["Quadric ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "HyperboloidOfOneSheet"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"HyperboloidOfOneSheet"], Cell["\<\ The first definition generates quickly an arbitrary hyperboloid of one sheet.\ \ \>", "ExampleText", CellTags->"HyperboloidOfOneSheet"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = HyperboloidOfOneSheet[]\), "\n", \(\(Draw3D@Paint[q];\)\)}], "Input", CellLabel->"In[1]:=", CellTags->"HyperboloidOfOneSheet"], Cell[TextData[{ "The hyperboloid can be transformed, for instance by rotation of \[Pi]/3 \ about the ", StyleBox["y", FontSlant->"Italic"], "-axis", ". " }], "ExampleText", CellTags->"HyperboloidOfOneSheet"], Cell[BoxData[{ \({a, b} = CPoint[0, {\(-1\), 1}, 0]; \), "\[IndentingNewLine]", \(d = ELine[a, b]; \), "\[IndentingNewLine]", \(q1 = \ Rotate[q, d, Pi/3]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, d, Red, q1, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}]; \)}], "Input", CellTags->"HyperboloidOfOneSheet"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["HyperboloidOfTwoSheets", "ObjectName", CellTags->{"Geo.16", "HyperboloidOfTwoSheets"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" HyperboloidOfTwoSheets[]", "MR"], " cartesian hyperboloid of two sheets of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["2", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - ", StyleBox["3", "TI", FontSlant->"Plain"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " +", StyleBox[" ", "TI"], StyleBox["1 ", "TI", FontSlant->"Plain"], StyleBox["= ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" HyperboloidOfTwoSheets[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox["]", "MR"], " hyperboloid of two sheets of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], StyleBox[" ", "TI"], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], "- ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " + 1 = 0.\n\[FilledSmallSquare]", StyleBox[" HyperboloidOfTwoSheets[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], " or ", StyleBox["Quadric ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "HyperboloidOfTwoSheets"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"HyperboloidOfTwoSheets"], Cell["\<\ The first definition generates quickly an arbitrary hyperboloid of two \ sheets.\ \>", "ExampleText", CellTags->"HyperboloidOfTwoSheets"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = HyperboloidOfTwoSheets[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"HyperboloidOfTwoSheets"], Cell[TextData[{ "The hyperboloid can be transformed, for instance by rotation of \[Pi]/3 \ about the ", StyleBox["y", FontSlant->"Italic"], "-axis", ".. " }], "ExampleText", CellTags->"HyperboloidOfTwoSheets"], Cell[BoxData[{ \({a, b} = CPoint[0, {\(-1\), 1}, 0]; \), "\[IndentingNewLine]", \(d = ELine[a, b]; \), "\[IndentingNewLine]", \(q1 = \ Rotate[q, d, Pi/3]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, d, Red, q1, Boxed \[Rule] True, Axes \[Rule] True, AxesLabel \[Rule] {"\", "\", "\"}]; \)}], "Input", CellTags->"HyperboloidOfTwoSheets"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["IdenticalQ", "ObjectName", CellTags->{"Geo.62", "IdenticalQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" IdenticalQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " or ", StyleBox["a", "TI"], " === ", StyleBox["b", "TI"], " tests if objects ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], " are identical. Identical objects must be of same type. Lines, planes, \ conics and quadrics whose cartesian equations have proportional coefficients \ are identical. Polygonal lines or polyhedra which have the same vertices but \ at different positions are obviously not identical in general but the \ condition on vertex position applies also to triangles.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CongruentQ", ButtonData:>{"CongruentQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.62", "IdenticalQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"IdenticalQ"], Cell["\<\ The two lines have proportional coefficients and are identical.\ \>", "ExampleText", CellTags->"IdenticalQ"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({d1, d2} = CLine[{1, 2}, 0, 0];\)\), "\[IndentingNewLine]", \(IdenticalQ[d1, d2]\)}], "Input", CellTags->"IdenticalQ"], Cell["\<\ The two triangles have the same vertices but at different positions; they are \ not identical.\ \>", "ExampleText", CellTags->"IdenticalQ"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(t1 = Triangle[a, b, c]; \), "\[IndentingNewLine]", \(t2 = Triangle[b, c, a]; \), "\[IndentingNewLine]", \(IdenticalQ[t1, t2]\)}], "Input", CellTags->"IdenticalQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Image", "ObjectName", CellTags->{"Geo.63", "Image"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Image[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " image of ", StyleBox["a", "TI"], " in ", StyleBox["x", "TI"], ". The image is either a symmetry or an inversion. In 2D, ", StyleBox["a", "TI"], ", the ", StyleBox["object", FontSlant->"Italic"], ", may be a point, line, conic, polygonal line or curve and ", StyleBox["x", "TI"], " a point, a line or a circle. In 3D, the couple object-image is valid for \ the following combinations: (point, line, plane, conic, quadric, polyhedron, \ curve, surface) - (point, line, plane). \n\tIf ", StyleBox["x", "TI"], " is a point, a line or a plane, the transformation is a ", StyleBox["symmetry", FontSlant->"Italic"], " and the image of ", StyleBox["a", "TI"], " is of same nature as ", StyleBox["a", "TI"], ". The symmetric ", StyleBox["a", "TI"], "' of a point ", StyleBox["a", "TI"], " with respect to a point ", StyleBox["x", "TI"], " satisfies the relation ", StyleBox["xa ", "TI"], "+ ", StyleBox["xa'", "TI"], " = 0. The symmetric ", StyleBox["a", "TI"], "' of a point ", StyleBox["a", "TI"], " with respect to a line or a plane ", StyleBox["x", "TI"], " satisfies the relation ", StyleBox["ma ", "TI"], "+ ", StyleBox["ma' ", "TI"], "= 0 where ", StyleBox["m", "TI"], " is the projection of ", StyleBox["a", "TI"], " onto ", StyleBox["x", "TI"], ", \n\tIf ", StyleBox["x", "TI"], " is a circle of center ", StyleBox["O ", "TI"], "and radius ", StyleBox["r", "TI"], ", the transformation is an ", StyleBox["inversion", FontSlant->"Italic"], ". The inverse of point ", StyleBox["a", "TI"], " is the point ", StyleBox["a", "TI"], "' such that ", StyleBox["Oa", "TI"], ".", StyleBox["Oa'", "TI"], " = ", Cell[BoxData[ \(TraditionalForm\`r\^2\)]], ". ", StyleBox["O", "TI"], " is the ", StyleBox["center of inversion", FontSlant->"Italic"], " and ", StyleBox["r", "TI"], " the ", StyleBox["radius of inversion", FontSlant->"Italic"], ". In contrast with the symmetry, the inversion does not, in general, \ preserve the nature of the objects. For instance, the inverse of a line is a \ circle passing through the center of inversion unless the line passes through \ the center of inversion, in which case, it is globally invariant. \n\ \[FilledSmallSquare]", StyleBox[" \[ScriptCapitalI][", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " operator of image in ", StyleBox["x", "TI"], ". The operator is applied to the object to be imaged in the form ", StyleBox["\[ScriptCapitalI][", "MR"], StyleBox["x", "TI"], StyleBox["][", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], ". It is portable and can be mapped to an expression.. \n\ \[FilledSmallSquare]", StyleBox[" Outside \[Rule] ", "MR"], StyleBox["v", "TI"], " option for the inverse of a polygonal line. By default, ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], " and the polygonal line itself is inverted. If ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], ", then the half lines collinear with the segments but exterior to them are \ inverted.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Affine", ButtonData:>{"Affine"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.63", "Image"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Image"], Cell[TextData[{ "Images of point ", StyleBox["m", "TI"], " in point ", StyleBox["a", "TI"], ", line ", StyleBox["d", "TI"], " and circle ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"Image"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, m} = CPoint[{0, 2}, 0];\)\), "\[IndentingNewLine]", \(\(d = CLine[1, 1, 1];\)\), "\[IndentingNewLine]", \(\(c = ECircle[a, 1];\)\), "\[IndentingNewLine]", \({p, q, r} = Image[m, {a, d, c}]\), "\[IndentingNewLine]", \(\(te = Legend[{"\", "\", "\", "\", "\", "\", \ "\"}, {m, a, d, c, p, q, r}, Offset \[Rule] {1, Pi/4}];\)\), "\[IndentingNewLine]", \(\(Draw[te, Blue, a, m, d, c, Red, p, q, r];\)\)}], "Input", CellTags->"Image"], Cell[TextData[{ "Images of line ", StyleBox["\[Delta]", "TI"], " in point ", StyleBox["a", "TI"], ", line ", StyleBox["d", "TI"], " and circle ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"Image"], Cell[BoxData[{ \(a = CPoint[0, 0]; \), "\[IndentingNewLine]", \({d, \[Delta]} = CLine[1, {1, 0}, {1, \(-1\)}]; \), "\[IndentingNewLine]", \(c = ECircle[1]; \), "\[IndentingNewLine]", \({p, q, r} = Image[\[Delta], {a, d, c}]\), "\[IndentingNewLine]", \(te = Legend[{"\<\[Delta]\>", "\", "\", "\", "\", "\", \ "\"}, {\[Delta], a, d, c, p, q, r}, Offset \[Rule] {1, Pi/4}]; \), "\[IndentingNewLine]", \(Draw[te, Blue, a, \[Delta], d, c, Red, p, q, r]; \)}], "Input", CellTags->"Image"], Cell[TextData[{ "Images of a square in its circumcircle. When the option ", StyleBox["Outside", "MR"], " is activated, the half lines exterior to the segments are transformed by \ inversion into half-circles, drawn in red, which pass through the center of \ the circle; the center is indeed the image of the points at infinity on the \ half-lines. In the default case, the half-circles, drawn in emerald green, \ touch the sides of the square." }], "ExampleText", CellTags->"Image"], Cell[BoxData[{ \(sq = RegularPolygon[4]; \), "\[IndentingNewLine]", \(c = ECircle[1]; \), "\[IndentingNewLine]", \(sq1 = Image[sq, c, Outside \[Rule] True]\), "\[IndentingNewLine]", \(sq2 = Image[sq, c]\), "\[IndentingNewLine]", \(Draw[Blue, sq, c, Red, sq1, EmeraldGreen, sq2]; \)}], "Input", CellTags->"Image"], Cell[TextData[{ "Images of a cube in point ", StyleBox["a", "TI"], ", line ", StyleBox["d", "TI"], " and plane ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"Image"], Cell[BoxData[{ \(cu = Cube[1]; \), "\[IndentingNewLine]", \(a = \(Vertices[cu]\)[\([\)\(1\)\(]\)]; \), "\n", \(d = ELine@\(Edges[cu]\)[\([\)\(4\)\(]\)]; \), "\n", \(c = Plane@cu[\([\)\(2\)\(]\)]; \), "\n", \({p, q, r} = Image[cu, {a, d, c}]; \), "\n", \(Draw3D[cu, Blue, a, d, Paint[cu[\([\)\(2\)\(]\)], Black], Red, p, q, r]; \)}], "Input", CellTags->"Image"], Cell[TextData[{ "Images of ellipsoid ", StyleBox["e", "TI"], " in plane ", StyleBox["p", "TI"], "." }], "ExampleText", CellTags->"Image"], Cell[BoxData[{ \(p = CPlane[1, 0, 0, \(-1\)]; \), "\n", \(e = Quadric[2, 2, 1]; \), "\[IndentingNewLine]", \(e1 = Image[e, p]; \), "\n", \(Draw3D[e, Blue, p, Red, e1]; \)}], "Input", CellTags->"Image"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryEllipse", "ObjectName", CellTags->{"Geo.64", "ImaginaryEllipse"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryEllipse", "MR"], " output of ", StyleBox["CConic", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " + 1 = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicType", ButtonData:>{"ConicType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryEllipse"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryEllipse"], Cell["Imaginary ellipse.", "ExampleText", CellTags->"ImaginaryEllipse"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CConic[1, 1, 2, 1/2, 0, 1]\)}], "Input", CellTags->"ImaginaryEllipse"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryEllipsoid", "ObjectName", CellTags->{"Geo.64", "ImaginaryEllipsoid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryEllipsoid", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " + 1 = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricType", ButtonData:>{"QuadricType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryEllipsoid"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryEllipsoid"], Cell["Imaginary ellipsoid.", "ExampleText", CellTags->"ImaginaryEllipsoid"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CQuadric[1. , 2, 3, 2, 1/2, 0, 0, 0, 0, 1]\)}], "Input", CellTags->"ImaginaryEllipsoid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryEllipticCylinder", "ObjectName", CellTags->{"Geo.64", "ImaginaryEllipticCylinder"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryEllipticCylinder", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " + 1 = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricType", ButtonData:>{"QuadricType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryEllipticCylinder"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryEllipticCylinder"], Cell["Imaginary elliptic cylinder.", "ExampleText", CellTags->"ImaginaryEllipticCylinder"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CQuadric[1. , 2, 0, 0, 0, 1/2, 0, 1/2, 0, 1]\)}], "Input", CellTags->"ImaginaryEllipticCylinder"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryIntersectingLines", "ObjectName", CellTags->{"Geo.64", "ImaginaryIntersectingLines"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryIntersectingLines", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicType", ButtonData:>{"ConicType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryIntersectingLines"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryIntersectingLines"], Cell[TextData[{ "The quadratic form ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " = 0 is interpreted as the product (", StyleBox["x", FontSlant->"Italic"], " + ", StyleBox["i", FontSlant->"Italic"], " ", StyleBox["y", FontSlant->"Italic"], ")((", StyleBox["x", FontSlant->"Italic"], " - ", StyleBox["i", FontSlant->"Italic"], " ", StyleBox["y", FontSlant->"Italic"], ") = 0." }], "ExampleText", CellTags->"ImaginaryIntersectingLines"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CConic[1, 0, 1, 0, 0, 0]\)}], "Input", CellTags->"ImaginaryIntersectingLines"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryIntersectingPlanes", "ObjectName", CellTags->{"Geo.64", "ImaginaryIntersectingPlanes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryIntersectingPlanes", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricType", ButtonData:>{"QuadricType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryIntersectingPlanes"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryIntersectingPlanes"], Cell[TextData[{ "The quadratic form ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2 ", StyleBox["yz", FontSlant->"Italic"], " ", "= 0 is interpreted as the product (", StyleBox["x", FontSlant->"Italic"], " + ", StyleBox["i", FontSlant->"Italic"], " ", "(", StyleBox["y+z", FontSlant->"Italic"], ")", ") ((", StyleBox["x", FontSlant->"Italic"], " - ", StyleBox["i", FontSlant->"Italic"], " ", "(", StyleBox["y+z", FontSlant->"Italic"], ")", ") = 0." }], "ExampleText", CellTags->"ImaginaryIntersectingPlanes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CQuadric[1, 1, 1, 1, 0, 0, 0, 0, 0, 0]\)}], "Input", CellTags->"ImaginaryIntersectingPlanes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryParallelLines", "ObjectName", CellTags->{"Geo.64", "ImaginaryParallelLines"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryParallelLines", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicType", ButtonData:>{"ConicType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryParallelLines"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryParallelLines"], Cell[TextData[{ "The quadratic form ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], " + 1 = 0 is interpreted as the product (", StyleBox["x", FontSlant->"Italic"], " + ", StyleBox["i", FontSlant->"Italic"], " )((", StyleBox["x", FontSlant->"Italic"], " - ", StyleBox["i", FontSlant->"Italic"], " ) = 0." }], "ExampleText", CellTags->"ImaginaryParallelLines"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CConic[1, 0, 0, 0, 0, 1]\)}], "Input", CellTags->"ImaginaryParallelLines"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryParallelPlanes", "ObjectName", CellTags->{"Geo.64", "ImaginaryParallelPlanes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryParallelPlanes", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricType", ButtonData:>{"QuadricType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryParallelPlanes"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryParallelPlanes"], Cell[TextData[{ "The quadratic form ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + 2 ", StyleBox["xy", FontSlant->"Italic"], " + 4 = 0 is interpreted as the product (", StyleBox["x", FontSlant->"Italic"], " + ", StyleBox["y", FontSlant->"Italic"], " + 2", " ", StyleBox["i", FontSlant->"Italic"], " ) (", StyleBox["x", FontSlant->"Italic"], " + ", StyleBox["y", FontSlant->"Italic"], " - 2", " ", StyleBox["i", FontSlant->"Italic"], " ) = 0." }], "ExampleText", CellTags->"ImaginaryParallelPlanes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CQuadric[1, 1, 0, 0, 0, 1, 0, 0, 0, 4]\)}], "Input", CellTags->"ImaginaryParallelPlanes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ImaginaryQuadricCone", "ObjectName", CellTags->{"Geo.64", "ImaginaryQuadricCone"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ImaginaryQuadricCone", "MR"], " output of ", StyleBox["CQuadric", FontSlant->"Italic"], " for a standard quadratic form ", Cell[BoxData[ \(TraditionalForm\`\(\(\((x\/a)\)\^2\)\(\ \)\)\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " + ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " = 0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricType", ButtonData:>{"QuadricType"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "ImaginaryQuadricCone"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ImaginaryQuadricCone"], Cell[TextData[{ "The quadratic form -", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], " - 2", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - 3", Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2 ", StyleBox["x", FontSlant->"Italic"], " - 1 = 0 is interpreted as the sum of squares ", Cell[BoxData[ \(TraditionalForm\`\((x - 1)\)\^2\)]], " + 2", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + 3", Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " = 0." }], "ExampleText", CellTags->"ImaginaryQuadricCone"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(CQuadric[\(-1\), \(-2\), \(-3\), 0, 0, 0, 1, 0, 0, \(-1\)]\)}], "Input",\ CellTags->"ImaginaryQuadricCone"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Incenter", "ObjectName", CellTags->{"Geo.64", "Incenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Incenter[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " center of the circle tangent to the sides of triangle or to the faces of \ tetrahedron ", StyleBox["t", "TI"], ". The incenter is the common intersection of the inner bisectors of the \ angles of the triangle or of the faces of a tetrahedron.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Bisector", ButtonData:>{"Bisector"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Incircle", ButtonData:>{"Incircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Insphere", ButtonData:>{"Insphere"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.64", "Incenter"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Incenter"], Cell["Incenter of 2D triangle.", "ExampleText", CellTags->"Incenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(ic = Incenter[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, ic];\)\)}], "Input", CellTags->"Incenter"], Cell["Incenter of 3D triangle.", "ExampleText", CellTags->"Incenter"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(t = Triangle[a, b, c]; \), "\[IndentingNewLine]", \(ic = Incenter[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, ic];\)\)}], "Input", CellTags->"Incenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Incircle", "ObjectName", CellTags->{"Geo.65", "Incircle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Incircle[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " circle tangent to the sides of triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Incircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " circle tangent to the sides of the ", StyleBox["n", "TI"], "-sided convex polygon whose first two vertices are ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Incircle[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox["]", "MR"], " same as above but the polygon is stellated. Between two consecutive \ vertices of the stellated regular polygon, ", StyleBox["s", "TI"], " vertices of the convex polygon are skipped. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Incenter", ButtonData:>{"Incenter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RegularPolygon", ButtonData:>{"RegularPolygon"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.65", "Incircle"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Incircle"], Cell["Incircle of 2D triangle.", "ExampleText", CellTags->"Incircle"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(t = Triangle[];\)\), "\[IndentingNewLine]", \(ic = Incircle[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Red, ic];\)\)}], "Input", CellTags->"Incircle"], Cell["Incircle of 3D triangle.", "ExampleText", CellTags->"Incircle"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(t = Triangle[a, b, c]; \), "\[IndentingNewLine]", \(ic = Incircle[t]\), "\[IndentingNewLine]", \(Draw3D[Blue, t, Red, ic]; \)}], "Input", CellTags->"Incircle"], Cell["Incircle of a stellated 2D regular pentagon.", "ExampleText", CellTags->"Incircle"], Cell[BoxData[{ \(\({a, b} = CPoint[{0, 1}, 0];\)\), "\[IndentingNewLine]", \(\(p = RegularPolygon[a, b, 5, 1];\)\), "\[IndentingNewLine]", \(ic = Incircle[a, b, 5, 1]\), "\[IndentingNewLine]", \(\(Draw[Blue, p, Red, ic];\)\)}], "Input", CellTags->"Incircle"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["InitialAngle", "ObjectName", CellTags->{"Geo.109", "InitialAngle"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" InitialAngle \[Rule] \[Theta]", "MR"], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(initial\ angle\ of\ helix\ or\ \ helicoid . \ Default\ \(value : \ 0. \)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Helicoid", ButtonData:>{"Helicoid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HelicoidalStaircase", ButtonData:>{"HelicoidalStaircase"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Helix", ButtonData:>{"Helix"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.109", "InitialAngle"}] }, Open ]], Cell[CellGroupData[{ Cell["InnerRadius", "ObjectName", CellTags->{"Geo.109", "InnerRadius"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" InnerRadius \[Rule] ", "MR"], Cell[BoxData[ \(TraditionalForm\`r\_1\)]], Cell[BoxData[ \(TraditionalForm\`\(\(,\)\(\ \)\(inner\ radius\ of\ an\ helicoid . \ Default\ \(value : \ \(\(0.1\)\(.\)\)\)\)\)\)]], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Helicoid", ButtonData:>{"Helicoid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HelicoidalStaircase", ButtonData:>{"HelicoidalStaircase"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Helix", ButtonData:>{"Helix"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.109", "InnerRadius"}] }, Open ]], Cell[CellGroupData[{ Cell["InsideQ", "ObjectName", CellTags->{"Geo.66", "InsideQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" InsideQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if point ", StyleBox["a", "TI"], " is inside ellipse or polygon ", StyleBox["x", "TI"], ". The polygon may be convex or concave but not stellated. The interior of \ an object does not contain the border.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "The notation ", StyleBox["a ", "TI"], StyleBox["\[Subset]", "MR"], " ", StyleBox["x", "TI"], " can be used if ", StyleBox["a", "TI"], " and ", StyleBox["x", "TI"], " are single objects. The full syntax is necessary when one of the objects \ or both are lists. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["OfQ", ButtonData:>{"Exspheres"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.66", "InsideQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"InsideQ"], Cell["A point sitting on an ellipse is not inside the ellipse.", "ExampleText", CellTags->"InsideQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=Conic[1,2]; a=Pointer[e,0]; InsideQ[a,e]\ \>", "Input", CellTags->"InsideQ"], Cell["Interior of a concave polygon.", "ExampleText", CellTags->"InsideQ"], Cell["\<\ m=CPoint[{0,1,1/2,1,0},{0,0,1/(2 Sqrt[2]),Sqrt[2],1/Sqrt[2]},{0,0,1/(2 \ Sqrt[2]),Sqrt[2],1/Sqrt[2]}]; s=Close@(Segment@@m); a=CPoint[1/4,1/(4 Sqrt[2]),1/(4 Sqrt[2])]; InsideQ[a,s]\ \>", "Input", CellTags->"InsideQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Insphere", "ObjectName", CellTags->{"Geo.67", "Insphere"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Insphere[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " sphere tangent to the faces of tetrahedron or of platonic solid ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Exspheres", ButtonData:>{"Exspheres"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.67", "Insphere"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Insphere"], Cell["Insphere of a tetrahedron.", "ExampleText", CellTags->"Insphere"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(t = N@Tetrahedron[];\)\), "\[IndentingNewLine]", \(s = Insphere[t]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, t, Red, s];\)\)}], "Input", CellTags->"Insphere"], Cell["Insphere of a regular octahedron.", "ExampleText", CellTags->"Insphere"], Cell[BoxData[{ \(\(oc = PlatonicSolid[8];\)\), "\[IndentingNewLine]", \(s = Insphere[oc]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, oc, Red, s];\)\)}], "Input", CellTags->"Insphere"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Intersections", "ObjectName", CellTags->{"Geo.68", "Intersections"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Intersections[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox["]", "MR"], " intersections of two ", StyleBox["Geometrica", FontSlant->"Italic"], " objects ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], ". In 2D, ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], " can be any line, conic or polygonal line. Intersection of a line with a \ curve is also available but the result is given numerically. In 3D, the \ intersections of two coplanar lines or conics and the intersections of a \ plane with a line, another plane, a polygonal line, a polyhedron, a quadric, \ a cone or a cylinder can be determined analytically. The intersection of a \ plane with a general curve or surface is given numerically in the form of \ list of points or segments.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "The notation ", StyleBox["x ", "TI"], "\[Intersection] ", StyleBox["y", "TI"], " can be used if ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], " are single objects. The full syntax is necessary when one of the objects \ or both are lists. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["SplitSegment", ButtonData:>{"SplitSegment"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.68", "Intersections"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Intersections"], Cell[TextData[{ "Intersections of line ", StyleBox["d", "TI"], " with line \[Delta], hyperbola ", StyleBox["h", "TI"], " and square ", StyleBox["s", "TI"], "." }], "ExampleText", CellTags->"Intersections"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({d, \[Delta]} = CLine[1/2, {1, 0}, 0];\)\), "\[IndentingNewLine]", \(\(h = Conic[1, \(-1\)];\)\), "\[IndentingNewLine]", \(\(s = RegularPolygon[4];\)\), "\[IndentingNewLine]", \({p, q, r} = Intersections[d, {\[Delta], h, s}]\), "\[IndentingNewLine]", \(\(te = Legend[{"\<\[Delta]\>", "\", "\", "\", "\", "\"}, \ {\[Delta], h, d, p, q, r}, Offset \[Rule] {1, Pi/4}];\)\), "\[IndentingNewLine]", \(\(Draw[te, Blue, \[Delta], s, h, d, Red, p, q, r];\)\)}], "Input", CellTags->"Intersections"], Cell[TextData[{ "Intersection of line ", StyleBox["d", "TI"], " with spiral ", StyleBox["s", "TI"], "." }], "ExampleText", CellTags->"Intersections"], Cell["\<\ s=PPoint[# Cos[#]&,# Sin[#]&,PRange->{0,13,25} ]; d=CLine[0,1,0]; x=Intersections[s,d] Draw[Blue,s,DrawRange[-13,10],d,Red,x];\ \>", "Input", CellTags->"Intersections"], Cell["\<\ Intersection of plane and cube. The plane is chosen so that the intersection \ is an equilateral triangle.\ \>", "ExampleText", CellTags->"Intersections"], Cell["\<\ cu=Cube[]; {a,b,c,d,e,f,g,h}=Vertices[cu]; p=Plane[a,c,f]; x=Intersections[p,cu] Draw3D[Legend[\"abcdefgh\",cu],Blue,cu,Red,x];\ \>", "Input", CellTags->"Intersections"], Cell["\<\ Intersection of plane and cone. When the cone is specified as a quadric, the \ intersection is quickly determined analytically.\ \>", "ExampleText", CellTags->"Intersections"], Cell[BoxData[{ \(c = CConic[Parabola[], CPlane[1, 2, 3, 1]]\), "\n", \(a = CPoint[0, 0, 2. ]; \), "\n", \(co2 = Cone[a, c, CQuadric \[Rule] True]\), "\n", \(x = Intersections[co2, c[\([\)\(2\)\(]\)]]\), "\n", \(newco2 = \((QuadricPoint /. \((QuadricElements @@ co2)\))\) /. \((PRange \[Rule] {u_, y_, z_})\) \[Rule] \((PRange \[Rule] {u, {0, 3}, z})\)\), "\n", \(Draw3D[Blue, newco2, Red, x]; \)}], "Input", CellTags->"Intersections"], Cell[TextData[{ "Intersection of plane ", StyleBox["p", "TI"], " and helix ", StyleBox["h", "TI"], ". " }], "ExampleText", CellTags->"Intersections"], Cell["\<\ p=CPlane[1,0,-Sqrt[3],0]; h=Helix[] x=Intersections[p,h] Draw3D[Blue,h,Red,x];\ \>", "Input", CellTags->"Intersections"], Cell[TextData[{ "Intersection of plane ", StyleBox["p", "TI"], " and horizontal torus ", StyleBox["t", "TI"], " of axis ", StyleBox["Oz", "TI"], ". The plane is bitangent to the torus and the intersection is made of the \ two ", StyleBox["Villarceaux circles", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"Intersections"], Cell["\<\ p=CPlane[1,0,-Sqrt[3],0]; {a,b}=CPoint[0,0,{0,1}]; d0=ELine[a,b]; c=CConic[ECircle[CPoint[2,0],1],CPlane[0,1,0,0]]; t=SolidOfRevolution[c,d0] x=Intersections[p,t] Draw3D[Blue,t,Red,AbsoluteThickness[2],x];\ \>", "Input", CellTags->"Intersections"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["InverseProjection", "ObjectName", CellTags->{"Geo.69", "InverseProjection"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" InverseProjection[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " point ", StyleBox["m", "TI"], " at distance ", StyleBox["d", "TI"], " from its projection ", StyleBox["a", "TI"], " onto the line passing through the points ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ". The angle ", StyleBox["bam ", "TI"], "is equal to \[Pi]/2 if ", StyleBox["d", "TI"], " is positive and to -\[Pi]/2 if ", StyleBox["d", "TI"], " is negative.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Distance", ButtonData:>{"Distance"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Project", ButtonData:>{"Project"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.69", "InverseProjection"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"InverseProjection"], Cell[TextData[{ "Inverse projection of point ", StyleBox["a", "TI"], " on line ", StyleBox["ab", "TI"], "." }], "ExampleText", CellTags->"InverseProjection"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b}=CPoint[1,{0,1}]; d=ELine[a,b]; m=InverseProjection[a,b,1] Draw[Legend[{\"a\",\"b\",\"m\"},{a,b,m},Offset->{1,0}],Blue,a,b,d,Red,m];\ \>", "Input", CellTags->"InverseProjection"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Isosceles", "ObjectName", CellTags->{"Geo.70", "Isosceles"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Isosceles[", "MR"], StyleBox["r", "TI"], StyleBox["]", "MR"], " arbitrary isosceles triangle inscribed in a circle centered at origin and \ of radius ", StyleBox["r ", "TI"], "(default: 1). The vertices are located at azimuths -3\[Pi]/4, -\[Pi]/4, \ \[Pi]/2.\n\[FilledSmallSquare]", StyleBox[" Isosceles[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["h", "TI"], StyleBox["]", "MR"], " isosceles triangle ", StyleBox["abc", "TI"], " of base ", StyleBox["ab", "TI"], " and length of the altitude issued from ", StyleBox["c", "TI"], " equal to ", StyleBox["h", "TI"], ". The angle ", StyleBox["bac ", "TI"], "has the sign of ", StyleBox["h", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Diamond", ButtonData:>{"Diamond"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RightAngled", ButtonData:>{"RightAngled"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.70", "Isosceles"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Isosceles"], Cell["Typical isosceles triangle.", "ExampleText", CellTags->"Isosceles"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; t=Isosceles[] Draw[Blue,t];\ \>", "Input", CellLabel->"In[1]:=", CellTags->"Isosceles"], Cell[TextData[{ "Isosceles triangle of height -1 and base ", StyleBox["ab", "TI"], "." }], "ExampleText", CellTags->"Isosceles"], Cell["\<\ {a,b}=CPoint[1,{0,1}]; t=Isosceles[a,b,-1] Draw[Legend[{\"abc\"},t,Offset->{1,Pi/3}],Blue,a,b,Red,t];\ \>", "Input", CellLabel->"In[7]:=", CellTags->"Isosceles"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Legend", "ObjectName", CellTags->{"Geo.71", "Legend"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Legend[", "MR"], StyleBox["text", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], " graphics function of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which writes the legend ", StyleBox["text", "TI"], " at or near the ", StyleBox["Geometrica", FontSlant->"Italic"], " object ", StyleBox["x", "TI"], ". The text is written in ", StyleBox["String", "MR"], " form or using the ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["StyleForm", "MR"], " if the fonts have to be customized in style, shape or size. Automatic \ procedures are implemented in ", StyleBox["Geometrica", FontSlant->"Italic"], " to locate the legend of an object. In all cases, the legend is written at \ a point ", StyleBox["m", "TI"], ". There is a variant to this rule for a polygonal line or a polyhedron in \ which case each character of the text is written near a vertex. The position \ and the orientation of the text with respect to a point can be adjusted with \ the options ", StyleBox["Offset", "MR"], " and ", StyleBox["Angle", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" Offset \[Rule] {", "MR"], StyleBox["r,\[CurlyPhi]}", "TI"], " places the center of the text at polar coordinates (", StyleBox["r,\[CurlyPhi]) ", "TI"], "with origin at ", StyleBox["m", "TI"], ". By default, ", StyleBox["r", "TI"], " and ", StyleBox["\[CurlyPhi]", "TI"], " are equal to 0.\n\[FilledSmallSquare]", StyleBox[" Angle \[Rule] \[Psi]", "MR"], " aligns the text along a line passing through ", StyleBox["m", "TI"], " and of angle ", StyleBox["\[Psi]", "TI"], " with respect to the horizontal axis. By default, \[Psi] is equal to 0.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Dimension", ButtonData:>{"Dimension"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.71", "Legend"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Legend"], Cell[TextData[{ "Examples of ", StyleBox["Legend", "MR"], " can be found in many examples (see: ", ButtonBox["Image", ButtonData:>{"Image"}, ButtonStyle->"AddOnsLink"], " for instance). Here it is shown how to wind the word ", StyleBox["Geometrica", FontSlant->"Italic"], " around a circle using all the flexibility given by ", ButtonBox["StyleForm", ButtonStyle->"RefGuideLink"], " and the option ", StyleBox["Angle", "MR"], ". " }], "ExampleText", CellTags->"Legend"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(ch = Reverse@Characters["\"];\)\), "\[IndentingNewLine]", \(\(c = ECircle[CPoint[0, 0], 1];\)\), "\[IndentingNewLine]", \(\(an = \((2 Pi/10)\) \((Range[10] - 5)\);\)\), "\[IndentingNewLine]", \(\(m = Pointer[c, an];\)\), "\[IndentingNewLine]", \(\(te = \(StyleForm[#, FontSize \[Rule] 18, FontFamily \[Rule] Times, FontColor \[Rule] Red] &\) /@ ch;\)\), "\[IndentingNewLine]", \(\(op = \(\((Angle \[Rule] Pi - #)\) &\) /@ an;\)\), "\[IndentingNewLine]", \(\(lg = Legend[te, m, op];\)\), "\[IndentingNewLine]", \(\(Draw[lg];\)\)}], "Input", CellTags->"Legend"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["LinearQ", "ObjectName", CellTags->{"Geo.72", "LinearQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" LinearQ[", "MR"], StyleBox["poly", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox["]", "MR"], "tests if polynomial ", StyleBox["poly", FontSlant->"Italic"], " is a linear function of ", StyleBox["t", FontSlant->"Italic"], ". \n\[FilledSmallSquare]", StyleBox[" LinearQ[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox["]", "MR"], "tests if each coordinate of cartesian point ", StyleBox["a", FontSlant->"Italic"], " is a linear function of ", StyleBox["t", FontSlant->"Italic"], ". Some but not all components may be constant. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConeQ", ButtonData:>{"ConeQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CylinderQ", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.72", "LinearQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"LinearQ"], Cell["Test of linearity for points on a cone. ", "ExampleText", CellTags->"LinearQ"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"LinearQ"], Cell[BoxData[{ \(m = QuadricCone[]; \), "\[IndentingNewLine]", \(x = \(Vertices[m]\)[\([\)\(1\)\(]\)]; \), "\[IndentingNewLine]", \(LinearQ[x, v]\), "\[IndentingNewLine]", \(a = Pointer[m, u, v]; \), "\[IndentingNewLine]", \(LinearQ[a, {u, v}]\)}], "Input", CellTags->"LinearQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["LineOrigin", "ObjectName", CellTags->{"Geo.72", "LineOrigin"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" LineOrigin[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["t", "TI"], StyleBox["]", "MR"], " ", "graphics directive of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which determines the origin of the parametric representation used to draw \ a line. That origin is the projection of point ", StyleBox["a", "TI"], " onto the lines. By default, ", StyleBox["a", "TI"], " is ", StyleBox["CPoint[0,0]", "MR"], " in 2D and ", StyleBox["CPoint[0,0,0]", "MR"], " in 3D.", "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.72", "LineOrigin"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"LineOrigin"], Cell["\<\ Two configurations of line and point can be compared. In the first instance, \ the origin of the line is the projection of the origin. \ \>", "ExampleText", CellTags->"LineOrigin"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(a = CPoint[10, 0];\)\), "\[IndentingNewLine]", \(\(d = CLine[1, \(-1\), 0];\)\), "\[IndentingNewLine]", \(\(Draw[Blue, a, Red, d];\)\)}], "Input", CellTags->"LineOrigin"], Cell[TextData[{ "In the second instance, the origin of the line is the projection of point \ ", StyleBox["a", "TI"], ". " }], "ExampleText", CellTags->"LineOrigin"], Cell[BoxData[ \(\(Draw[LineOrigin[a], Blue, a, Red, d];\)\)], "Input", CellTags->"LineOrigin"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Medians", "ObjectName", CellTags->{"Geo.73", "Medians"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Medians[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " lines that join the center of gravity of the polygonal line ", StyleBox["p", "TI"], " to the midpoints of the sides of ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Segment \[Rule] ", "MR"], StyleBox["v", "TI"], " lines or segments are returned if ", StyleBox["v ", "TI"], "is set to ", StyleBox["False", "MR"], " (default) or ", StyleBox["True", "MR"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CenterOfGravity", ButtonData:>{"CenterOfGravity"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.73", "Medians"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Medians"], Cell["Medians of a parallelogram.", "ExampleText", CellTags->"Medians"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b,c}=CPoint[{0,1,1/3},{0,0,1}]; p=To3D@Parallelogram[a,b,c]; d=Medians[p,Segment->True]; Draw3D[Blue,p,Red,d];\ \>", "Input", CellTags->"Medians"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Movie", "ObjectName", CellTags->{"Geo.74", "Movie"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Movie[", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["] ", "MR"], "or ", StyleBox["Movie[{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["},", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], " list of folded 2D-graphics ", StyleBox["{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox["},", "MR"], StyleBox["...", "TI"], StyleBox["}", "MR"], " ready for animation. Any option of ", StyleBox["Plot", "MR"], " can be used.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["StoryBoard", ButtonData:>{"StoryBoard"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.74", "Movie"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Movie"], Cell[TextData[{ "Parabola as the envelope of the mediatrices of the segments which join the \ focus to points of the directrix. The frames are first created. Then, \ double-click the big bracket cell (second from the left): all the frames are \ re-grouped and the fist cell only is visible. Go to ", StyleBox["Cell", "SR"], " menu and click ", StyleBox["Animate Selected Graphics", "SR"], "." }], "ExampleText", CellTags->"Movie"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; f=CPoint[1,0]; d=CLine[1,0,0]; a=Pointer[d,Range[20]/10-1]; s=Segment[a,f]; b=Bisector@s; m=Transpose[{s,b}]; g=Draw[Blue,#1,d,Red,#2,DisplayOn->False]&@@@m; Movie[g];\ \>", "Input", CellTags->"Movie"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Movie3D", "ObjectName", CellTags->{"Geo.75", "Movie3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Movie3D[", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox[",", "MR"], StyleBox["options", "TI"], StyleBox["] ", "MR"], "list of folded 3D-graphics ", StyleBox["{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox["},", "MR"], StyleBox["...", "TI"], StyleBox["}", "MR"], " ready for animation. Any option of ", StyleBox["Plot3D", "MR"], " can be used.\n\[FilledSmallSquare]", StyleBox[" Movie3D[{", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`g\_2\)]], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["},", "MR"], StyleBox["options", "TI"], StyleBox["]", "MR"], " same as above.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["StoryBoard3D", ButtonData:>{"StoryBoard3D"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.75", "Movie3D"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Movie3D"], Cell[TextData[{ "Creation of a paraboloid of revolution.. The frames are first created. \ Then, double-click the big bracket cell (second from the left): all the \ frames are re-grouped and the fist cell only is visible. Go to ", StyleBox["Cell", "SR"], " menu and click ", StyleBox["Animate Selected Graphics", "SR"], "." }], "ExampleText", CellTags->"Movie3D"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; z=(Range[21]-1)/20; zr=Sqrt[z]; c=CConic[ECircle[CPoint[0,0],zr],CPlane[0,0,1,-z]]; g=Draw3D[Blue,#,DisplayOn->False]&/@c; Movie3D[g];\ \>", "Input", CellTags->"Movie3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["NormalPlane", "ObjectName", CellTags->{"Geo.77", "NormalPlane"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" NormalPlane[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " plane passing through point ", StyleBox["m", "TI"], " and perpendicular 3D line ", StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" NormalPlane[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " plane normal to curve ", StyleBox["c", "TI"], " at point of parameter ", StyleBox["t", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Plane", ButtonData:>{"Plane"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.77", "NormalPlane"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"NormalPlane"], Cell[TextData[{ "Normal plane to line ", StyleBox["d", "TI"], " passing through point ", StyleBox["a", "TI"], "." }], "ExampleText", CellTags->"NormalPlane"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(d = CLine @@ CPlane[1, {1, \(-1\)}, 1, 0];\)\), "\n", \(\(a = CPoint[1, 2, 0];\)\), "\n", \(p = NormalPlane[a, d]\), "\n", \(\(x = Intersections[d, p];\)\), "\n", \(\(Draw3D[Blue, a, d, Red, x, PlaneOrigin[a], p];\)\)}], "Input", CellTags->"NormalPlane"], Cell[TextData[{ "Normal plane to helix ", StyleBox["h", "TI"], " at point of parameter \[Pi]/2." }], "ExampleText", CellTags->"NormalPlane"], Cell[BoxData[{ \(h = PPoint[Cos[#] &, Sin[#] &, # &, PRange \[Rule] {0, 2 Pi, 25}]; \), "\n", \(a = Pointer[h, Pi/2]; \), "\n", \(p = NormalPlane[h, Pi/2]\), "\n", \(Draw3D[Blue, a, h, Red, PlaneOrigin[a], p]; \)}], "Input", CellTags->"NormalPlane"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Normals", "ObjectName", CellTags->{"Geo.76", "Normals"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Normals[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " lines that join point ", StyleBox["m", "TI"], " to the projections of ", StyleBox["m", "TI"], " onto conic ", StyleBox["c", "TI"], ". There are four normals at most.\n\[FilledSmallSquare]", StyleBox[" Normals[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " normal to curve ", StyleBox["c", "TI"], " at point of parameter ", StyleBox["t", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Distance", ButtonData:>{"Distance"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraxial", ButtonData:>{"Paraxial"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Project", ButtonData:>{"Project"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.76", "Normals"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Normals"], Cell["\<\ Normals to a 3D ellipse issued from a point lying in the plane of the \ ellipse.\ \>", "ExampleText", CellTags->"Normals"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=CConic[Conic[2,1],CPlane[1,-1,0,0]]; a=CPoint[1/2,1/2,0]; d=Normals[a,e] Draw3D[Blue,e,a,Red,d];\ \>", "Input", CellTags->"Normals"], Cell["Normal to a helix at point of parameter 1.", "ExampleText", CellTags->"Normals"], Cell["\<\ h=PPoint[Cos[#]&,Sin[#]&,#&,PRange->{0,2Pi,25}]; a=Pointer[h,1]; d=Normals[h,1] Draw3D[Blue,a,h,Red,d];\ \>", "Input", CellTags->"Normals"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Offset", "ObjectName", CellTags->{"Geo.76", "Offset"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Offset", "MR"], " is a classical function in CAD applications. This function exists in ", StyleBox["Mathematica", FontSlant->"Italic"], " but has a very different meaning. The function equivalent to the CAD ", StyleBox["Offset", "MR"], " has the name ", StyleBox["Paraxial", "MR"], " in ", StyleBox["Geometrica.", FontSlant->"Italic"], " \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Paraxial", ButtonData:>{"Paraxial"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.76", "Offset"}] }, Open ]], Cell[CellGroupData[{ Cell["OfQ", "ObjectName", CellTags->{"Geo.78", "OfQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" OfQ[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if point ", StyleBox["a", "TI"], StyleBox[" ", "MR"], "belongs to line, conic, polygonal line, plane or quadric ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" OfQ[", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if line ", StyleBox["d", "TI"], " belongs, plane or quadric ", StyleBox["x.", "TI"], "\n\[FilledSmallSquare]", StyleBox[" OfQ[", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if segment ", StyleBox["s", "TI"], " belongs to line, plane or quadric", StyleBox[" ", "MR"], StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" OfQ[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " tests if conic ", StyleBox["c", "TI"], " belongs to plane or quadric", StyleBox[" ", "MR"], StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "The notation ", StyleBox["a", "TI"], " \[Element]", StyleBox[" ", "MR"], StyleBox["x ", "TI"], "can be used for single objects.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CollinearQ", ButtonData:>{"CollinearQ"}, ButtonStyle->"AddOnsLink"], " , ", ButtonBox["CoplanarQ", ButtonData:>{"CoplanarQ"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SphericalQ", ButtonData:>{"SphericalQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.78", "OfQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"OfQ"], Cell["Point on a 3D ellipse.", "ExampleText", CellTags->"OfQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=CConic[Conic[2,1],CPlane[1,-1,0,0]]; a=CPoint[1,1,-Sqrt[2]]; OfQ[a,e]\ \>", "Input", CellTags->"OfQ"], Cell["\<\ A line defines a pencil of planes and thus belongs to any plane of the \ pencil.\ \>", "ExampleText", CellTags->"OfQ"], Cell["\<\ x=. d=CLine@@CPlane[1,{1,-1},1,0]; p=Pencil[d][x]; OfQ[d,p]\ \>", "Input", CellTags->"OfQ"], Cell["Segment on a line.", "ExampleText", CellTags->"OfQ"], Cell["\<\ s=Segment@@CPoint[0,{0,1}]; d=CLine[1,0,0]; OfQ[s,d]\ \>", "Input", CellTags->"OfQ"], Cell["Checking the intersection of a quadric with a plane..", "ExampleText", CellTags->"OfQ"], Cell["\<\ e=CEllipsoid[]; p=CPlane[1,1,1,0]; x=Intersections[e,p]; OfQ[x,{p,e}]\ \>", "Input", CellTags->"OfQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Orthocenter", "ObjectName", CellTags->{"Geo.79", "Orthocenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Orthocenter[", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " common intersection, or orthocenter, of the altitudes of triangle ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Altitudes", ButtonData:>{"Altitudes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Euler", ButtonData:>{"Euler"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerCircle", ButtonData:>{"EulerCircle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EulerLine", ButtonData:>{"EulerLine"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.79", "Orthocenter"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Orthocenter"], Cell[TextData[{ "Orthocenter of triangle ", StyleBox["t", "TI"], "." }], "ExampleText", CellTags->"Orthocenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({a, b, c} = CPoint[{0, 1, 1/3}, {0, 0, 1}];\)\), "\[IndentingNewLine]", \(\(t = Triangle[a, b, c];\)\), "\[IndentingNewLine]", \(\(d = Altitudes[t, Segment \[Rule] True];\)\), "\[IndentingNewLine]", \(or = Orthocenter[t]\), "\[IndentingNewLine]", \(\(Draw[Blue, t, Green, d, Red, or];\)\)}], "Input", CellTags->"Orthocenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Orthogonal", "ObjectName", CellTags->{"Geo.80", "Orthogonal"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Orthogonal[", "MR"], StyleBox["p", "TI"], ", ", StyleBox["option", "TI"], StyleBox["]", "MR"], " polygonal line ", StyleBox["p", "TI"], "' orthogonal to 2D polygonal line ", StyleBox["p", "TI"], ". Each side of ", StyleBox["p", "TI"], "' is perpendicular to a side of ", StyleBox["p", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "The vertices ", StyleBox["a", "TI"], "', ", StyleBox["b", "TI"], "', ", StyleBox["c'", "TI"], ",... , ", StyleBox["m", "TI"], "', ", StyleBox["n", "TI"], "' of polygon ", StyleBox["p", "TI"], "' are deduced from the vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ",... , ", StyleBox["m", "TI"], ", ", StyleBox["n", "TI"], " of polygon ", StyleBox["p ", "TI"], "using the following procedure: \n\t1. ", StyleBox["a'", "TI"], " is the intersection of the perpendicular ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " in ", StyleBox["a", "TI"], " to ", StyleBox["ab", "TI"], " with the perpendicular ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " in ", StyleBox["b", "TI"], " to ", StyleBox["bc", "TI"], ";\n\t2. ", StyleBox["b'", "TI"], " is the intersection of ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " with the perpendicular ", Cell[BoxData[ \(TraditionalForm\`d\_3\)]], " in ", StyleBox["c", "TI"], " to ", StyleBox["cd", "TI"], ";\n\t3. same constructions for ", StyleBox["c'", "TI"], ",... , ", StyleBox["m", "TI"], "';\n\t4. ", StyleBox["n'", "TI"], " is the intersection of ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " with the perpendicular ", Cell[BoxData[ \(TraditionalForm\`d\_\(n - 1\)\)]], " in ", StyleBox["n", "TI"], " to ", StyleBox["mn. \n", "TI"], "\[FilledSmallSquare]", StyleBox[" ", "MR"], "Lines orthogonal to broken lines are constructed the same way but the last \ side ", StyleBox["m", "TI"], "'", StyleBox["n", "TI"], "' is omitted. \n\[FilledSmallSquare]", StyleBox[" Ribbon ", "MR"], "\[Rule] ", StyleBox["v", "TI"], " If ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], " (default) , the orthogonal line is returned. If ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], ", a ribbon is made of triangles ", StyleBox["aba'", "TI"], ", ", StyleBox["bcb'", "TI"], ", ...\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.80", "Orthogonal"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Orthogonal"], Cell["Orthogonal right angled triangles.", "ExampleText", CellTags->"Orthogonal"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; p=Close[Segment@@CPoint[{0,1,1},{0,0,1}]]; q=Orthogonal[p] Draw[Paint[p,Blue],Red,q];\ \>", "Input", CellTags->"Orthogonal"], Cell[TextData[{ "Tiling of orthogonal pentagons created with the option ", StyleBox["Ribbon", "MR"], "." }], "ExampleText", CellTags->"Orthogonal"], Cell["\<\ p=RegularPolygon[5]; q=Orthogonal[p,Ribbon->True] Draw[Paint[q,{Red,Green,Red,Green,Yellow}],Blue,p];\ \>", "Input", CellTags->"Orthogonal"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["OrthogonalQ", "ObjectName", CellTags->{"Geo.81", "OrthogonalQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" OrthogonalQ[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox["]", "MR"], " tests if 2D lines, 2D polygonal lines, 2D conics or planes are \ orthogonal. Curves such as conics are orthogonal when the tangents to the \ curves at the intersections are perpendicular.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Orthogonal", ButtonData:>{"Orthogonal"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ParallelQ", ButtonData:>{"ParallelQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.81", "OrthogonalQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"OrthogonalQ"], Cell[TextData[{ "Tangents ", StyleBox["d", "TI"], " to a circle ", StyleBox["c", "TI"], " are perpendicular to diameters \[Delta] of ", StyleBox["c", "TI"], " passing through the contact points (", StyleBox["m", "TI"], ", ", StyleBox["n", "TI"], ")." }], "ExampleText", CellTags->"OrthogonalQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b}=CPoint[{0,2},0]; c=ECircle[a,1]; {d,s}=ELine[b,c,{Segment->False,Segment->True}]; {m,n}={s[[1,2]],s[[2,2]]}; \[Delta]=ELine[a,{m,n}]; OrthogonalQ[d,\[Delta]]\ \>", "Input", CellTags->"OrthogonalQ"], Cell["\<\ Homofocal ellipse and hyperbola are orthogonal.\ \>", "ExampleText", CellTags->"OrthogonalQ"], Cell["\<\ {a,b}=CPoint[{-1,1},0]; {e,h}=Conic[a,b,{3,1}]; OrthogonalQ[e,h] Draw[Legend[{\"a\",\"b\"},{a,b},Offset->{3,-Pi/2}],Blue,a,b,Red,e,h];\ \>", "Input", CellTags->"OrthogonalQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Paint", "ObjectName", CellTags->{"Geo.82", "Paint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Paint[", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " graphics function of ", ButtonBox["Draw", ButtonData:>{"Draw"}, ButtonStyle->"AddOnsLink"], " and ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which colors the interior of polygon, ellipse or polyhedron ", StyleBox["x", "TI"], " with black. For surfaces, an automatic color function is applied.\n\ \[FilledSmallSquare]", StyleBox[" Paint[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox[" c", "TI"], StyleBox["]", "MR"], " same as above but with specific color ", StyleBox["c", "TI"], ". The color may be any ", StyleBox["Mathematica", FontSlant->"Italic"], " function such as ", ButtonBox["RGBColor", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["CYMK", ButtonStyle->"RefGuideLink"], ", ", ButtonBox["Hue", ButtonData:>{"DESTINATION", "TAG"}, ButtonStyle->"MainBookLink"], " or one of the plain colors (", StyleBox["Red", "MR"], ", ", StyleBox["Green", "MR"], ", ", StyleBox["Blue", "MR"], ", ...) listed in ", StyleBox["ColorTable[]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" Paint[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox[" c", "TI"], StyleBox[",", "MR"], StyleBox[" options", "TI"], StyleBox["]", "MR"], " same as above but for 3D polygons. The options are introduced because \ painting 3D concave polygons is precluded by ", StyleBox["Mathematica", FontSlant->"Italic"], ". The difficulty can be circumvened by subdividing the concave polygon \ into convex polygons. Then each convex polygon can be painted and its \ contour is drawn in black by default. However, options may modify the \ rendering of the contour.\n\[FilledSmallSquare]", StyleBox[" Mesh ", "MR"], "\[Rule] ", StyleBox["v", "TI"], " The contour of the convex 3D polygons is drawn in black if ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], " (default) and suppressed if ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" MeshStyle ", "MR"], "\[Rule] ", StyleBox["c", "TI"], " The contour of the convex 3D polygons is drawn in the color ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ColorTable", ButtonData:>{"ColorTable"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.82", "Paint"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Paint"], Cell[TextData[{ "Painting an ellipse ", StyleBox["e", "TI"], " and a rectangle ", StyleBox["r", "TI"], ". The single statement takes advantage of the ", StyleBox["Listable", "MR"], " attribute of ", StyleBox["Paint", "MR"], ". The order of the elements ", StyleBox["e", "TI"], " and ", StyleBox["r", "TI"], " in ", StyleBox["Paint", "MR"], " is important. Here, the rectangle is superimposed to the ellipse; with \ the reverse order, it would be hidden. " }], "ExampleText", CellTags->"Paint"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b}=CPoint[{-1,1},0]; e=Conic[a,b,3]; r=Rectangle[a,b,1/2]; Draw[Paint[{e,r},{Red,Blue}]];\ \>", "Input", CellTags->"Paint"], Cell[TextData[{ "A band of circular sector is concave but can be painted in 2D and 3D as \ well. It is defined by the space enclosed between an arc ", StyleBox["a", FontSlant->"Italic"], " and an arc ", StyleBox["b", FontSlant->"Italic"], " parallel to ", StyleBox["a", FontSlant->"Italic"], " at the distance 0.1. The arcs are converted into broken lines by \ application of the function ", StyleBox["Segment ", FontSlant->"Italic"], "and joined together to form a polygon tht can be painted. " }], "ExampleText", CellTags->"Paint"], Cell[BoxData[{ \({m, n} = CPoint[{0, 1}, 0]; \), "\[IndentingNewLine]", \(a = Arc[m, n, Pi/3]; \), "\[IndentingNewLine]", \(b = Parallel[a, 0.1]; \), "\[IndentingNewLine]", \({s1, s2} = Segment[{a, b}]; \), "\[IndentingNewLine]", \(s = Close@Join[s1, Reverse@s2]; \), "\[IndentingNewLine]", \(Draw@Paint[s]; \)}], "Input", CellTags->"Paint"], Cell["\<\ A straightforward generalization to 3D does not give a correct result. \ \>", "ExampleText", CellTags->"Paint"], Cell[BoxData[ \(Draw3D@\(Paint@To3D[s]\); \)], "Input", CellTags->"Paint"], Cell[TextData[{ "The band of circular sector subdivided into convex polygons. Using the \ option ", StyleBox["Ribbon", FontSlant->"Italic"], " of ", StyleBox["Parallel", FontSlant->"Italic"], " precisely performs that type of tiling. The generalization to 3D is then \ satisfactory. " }], "ExampleText", CellTags->"Paint"], Cell[BoxData[{ \(s = Parallel[a, 0.1, Ribbon \[Rule] True]; \), "\[IndentingNewLine]", \(s3D = To3D@s; \), "\[IndentingNewLine]", \(Draw3D@Paint[s3D, Blue]; \)}], "Input", CellTags->"Paint"], Cell[TextData[{ "The individual quadrangles can be suppressed by using the option ", StyleBox["Mesh", FontSlant->"Italic"], "." }], "Text", CellTags->"Paint"], Cell[BoxData[ \(Draw3D@Paint[s3D, Blue, Mesh \[Rule] False]; \)], "Input", CellTags->"Paint"], Cell[TextData[{ "They can also be drawn in a given color by using the option ", StyleBox["MeshStyle", FontSlant->"Italic"], "." }], "Text", CellTags->"Paint"], Cell[BoxData[ \(Draw3D@Paint[s3D, Blue, MeshStyle \[Rule] White]; \)], "Input", CellTags->"Paint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Parabola", "ObjectName", CellTags->{"Geo.83", "Parabola"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Parabola[]", "MR"], " 2D parabola of equation ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- 2", StyleBox["x", "TI"], StyleBox[" = ", "TI", FontSlant->"Plain"], StyleBox["0", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Parabola[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " 2D parabola of equation ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- 2", StyleBox["px", "TI"], StyleBox[" = ", "TI", FontSlant->"Plain"], StyleBox["0", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Parabola[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["] 2D ", "MR"], "parabola fitting the points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ...\n\[FilledSmallSquare]", StyleBox[" Parabola[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox["]", "MR"], "expression returned by ", StyleBox["CConic[", "MR"], StyleBox["r", "TI"], StyleBox[",", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox["]", "MR"], " when ", StyleBox["rt", "TI"], " - ", Cell[BoxData[ \(TraditionalForm\`s\^2\)]], " = 0. Not all symbolic calculations can be performed with symbolic \ arguments in ", StyleBox["Parabola", "MR"], " as input.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicAxes", ButtonData:>{"ConicAxes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Paraboloid", ButtonData:>{"Paraboloid"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.83", "Parabola"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Parabola"], Cell[TextData[{ "Parabola of axis ", StyleBox["Ox", "TI"], " and parameter 1." }], "ExampleText", CellTags->"Parabola"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(p = Parabola[1];\)\), "\[IndentingNewLine]", \(\(Draw[p];\)\)}], "Input", CellTags->"Parabola"], Cell[TextData[{ "Parabola fitting 20 points generated randomly about parabola ", StyleBox["p", "TI"], "." }], "ExampleText", CellTags->"Parabola"], Cell["\<\ p=Parabola[1]; m=Pointer[p,Range[20]-10]; a=Table[CPoint[3 Random[],3 Random[]],{n,20}]; r=Translate[m,a]; q=Parabola@@r Draw[Blue,r,Red,DrawRange[-10,10],q];\ \>", "Input", CellTags->"Parabola"], Cell[TextData[{ "Symbolic calculations are preferably done with the reduced form of ", StyleBox["Parabola", "MR"], "." }], "ExampleText", CellTags->"Parabola"], Cell[BoxData[ \(Directrix@Parabola[p]\)], "Input", CellTags->"Parabola"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Parabola3D", "ObjectName", CellTags->{"Geo.51", "Parabola3D"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Parabola3D[]", "MR"], " cartesian parabola of equation ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["2x", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0 lying in the plane of equation ", StyleBox["x", FontSlant->"Italic"], "+", StyleBox["2y", FontSlant->"Italic"], "+", StyleBox["3z", FontSlant->"Italic"], "=", StyleBox["0", FontSlant->"Italic"], ". The equation of the hyperbola is given in the reference system of the \ plane and that of the plane in the absolute system of reference.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parabola", ButtonData:>{"Parabola"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Parabola3D"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Parabola3D"], Cell["Representation of default 3D-pararbola", "ExampleText", CellTags->"Parabola3D"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(c = Parabola3D[]\), "\[IndentingNewLine]", \(Draw3D[Red, c]\)}], "Input", CellTags->"Parabola3D"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ParabolicCylinder", "ObjectName", CellTags->{"Geo.51", "ParabolicCylinder"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ParabolicCylinder[]", "MR"], " cartesian parabolic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", StyleBox["2x", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ParabolicCylinder[", "MR"], StyleBox["p", "MR", FontSlant->"Italic"], StyleBox["]", "MR"], " cartesian parabolic cylinder of equation ", Cell[BoxData[ \(TraditionalForm\`y\^2\)]], "- ", "2", StyleBox["p ", FontSlant->"Italic"], StyleBox["x", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EllipticCylinder", ButtonData:>{"EllipticCylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperbolicCylinder", ButtonData:>{"HyperbolicCylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "ParabolicCylinder"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ParabolicCylinder"], Cell["Representation of default parabolic cylinder", "ExampleText", CellTags->"ParabolicCylinder"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(q = ParabolicCylinder[]\), "\n", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"ParabolicCylinder"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Paraboloid", "ObjectName", CellTags->{"Geo.51", "Paraboloid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Paraboloid[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox[",", "MR"], StyleBox["r", "TI"], StyleBox["]", "MR"], " hyperbolic paraboloid defined by the planes ", StyleBox["p", FontSlant->"Italic"], ", ", StyleBox["q", FontSlant->"Italic"], ", ", StyleBox["r", FontSlant->"Italic"], ". A hyperbolic paraboloid is a ruled surface that can be generated by a \ system of distinct coplanar generators, hence this definition.. The \ generators are the intersections of ", StyleBox["q", FontSlant->"Italic"], " and ", StyleBox["r", FontSlant->"Italic"], " with ", StyleBox["p.", FontSlant->"Italic"], "\n\[FilledSmallSquare]", StyleBox[" Paraboloid[", "MR"], StyleBox["b", FontSlant->"Italic"], ", ", StyleBox["c", FontSlant->"Italic"], ", ", StyleBox["option", FontSlant->"Italic"], StyleBox["]", "MR"], " elliptic paraboloid of equation ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2 + \((z\/c)\)\^2\)]], "- ", StyleBox["2x", FontSlant->"Italic"], StyleBox[" = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["EllipticParaboloid", ButtonData:>{"EllipticParaboloid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["HyperbolicParaboloid", ButtonData:>{"HyperbolicParaboloid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Parabola3D", ButtonData:>{"Parabola3D"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Paraboloid"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Paraboloid"], Cell["\<\ Hyperbolic paraboloid defined by the three planes of the reference coordinate \ system.\ \>", "ExampleText", CellTags->"Paraboloid"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Paraboloid"], Cell[BoxData[{ \({p, q, r} = CPlane[{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, 0]; \), "\[IndentingNewLine]", \(hp = Paraboloid[p, q, r]\), "\[IndentingNewLine]", \(d = CLine[{q, r}, p]; \), "\[IndentingNewLine]", \(OfQ[d, hp]\), "\[IndentingNewLine]", \(Draw3D[Blue, d, Red, hp]; \)}], "Input", CellTags->"Paraboloid"], Cell["\<\ Elliptic paraboloid with a cross section ellipse of semi-axes 1 and 2.\ \>", "ExampleText", CellTags->"Paraboloid"], Cell[BoxData[{ \(ep = Paraboloid[1, 2]\), "\[IndentingNewLine]", \(Draw3D@Paint[ep]; \)}], "Input", CellTags->"Paraboloid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Parallel", "ObjectName", CellTags->{"Geo.85", "Parallel"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Parallel[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " parallel to line ", StyleBox["d", "TI"], StyleBox[" ", "MR"], "passing through point ", StyleBox["m", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Parallel[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["f", "TI"], StyleBox["]", "MR"], " parallel to 2D line, plane, conic, curve or surface ", StyleBox["x", "TI"], " at distance ", StyleBox["f", "TI"], " from ", StyleBox["x", "TI"], ". The parallel is generated by the point at positive or negative distance \ ", StyleBox["f", "TI"], " on the normal to ", StyleBox["x", "TI"], ". The parallels to lines and planes are lines and planes but otherwise ", StyleBox["x", "TI"], " and its parallel are of different natures.\n\[FilledSmallSquare]", StyleBox[" Parallel[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["f", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " parallel to 2D polygonal line ", StyleBox["p", "TI"], " at distance ", StyleBox["f", "TI"], " from ", StyleBox["p", "TI"], ". Since the normal is not defined at the vertices, the vertices ", StyleBox["a", "TI"], "', ", StyleBox["b", "TI"], "', ", StyleBox["c'", "TI"], ",... , ", StyleBox["m", "TI"], "', ", StyleBox["n", "TI"], "' of polygon ", StyleBox["p", "TI"], "' parallel to ", StyleBox["p", "TI"], " are deduced from the vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ",... , ", StyleBox["m", "TI"], ", ", StyleBox["n", "TI"], " of ", StyleBox["p ", "TI"], "using a special procedure: \n\t1. ", StyleBox["a'", "TI"], " is the intersection of the parallel ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " to ", StyleBox["ab ", "TI"], "at distance ", StyleBox["f", "TI"], " from ", StyleBox["ab", "TI"], " with the parallel ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " to ", StyleBox["bc ", "TI"], " at distance ", StyleBox["f", "TI"], " from ", StyleBox["bc", "TI"], ";\n\t2. ", StyleBox["b'", "TI"], " is the intersection of ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " with the parallel ", Cell[BoxData[ \(TraditionalForm\`d\_3\)]], " to ", StyleBox["cd ", "TI"], " at distance ", StyleBox["f", "TI"], " from ", StyleBox["cd", "TI"], ";\n\t3. same constructions for ", StyleBox["c'", "TI"], ",... , ", StyleBox["m", "TI"], "';\n\t4. ", StyleBox["n'", "TI"], " is the intersection of ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " with the parallel ", Cell[BoxData[ \(TraditionalForm\`d\_\(n - 1\)\)]], " to ", StyleBox["mn ", "TI"], "at distance ", StyleBox["f", "TI"], " from ", StyleBox["mn. \n", "TI"], "\[FilledSmallSquare]", StyleBox[" ", "MR"], "The construction of a parallel to a broken line differs for the end \ points. \n\t1. ", StyleBox["a'", "TI"], " is the point of projection ", StyleBox["a", "TI"], " onto ", StyleBox["ab ", "TI"], "at distance ", StyleBox["f", "TI"], " from ", StyleBox["ab", "TI"], ";\n\t2. ", StyleBox["b'", "TI"], " is the intersection of ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " with the parallel ", Cell[BoxData[ \(TraditionalForm\`d\_3\)]], " to ", StyleBox["cd ", "TI"], " at distance ", StyleBox["f", "TI"], " from ", StyleBox["cd", "TI"], ";\n\t3. same constructions for ", StyleBox["c'", "TI"], ",... , ", StyleBox["m", "TI"], "';\n\t4. ", StyleBox["n'", "TI"], " is the point of projection ", StyleBox["n", "TI"], " onto ", StyleBox["mn ", "TI"], "at distance ", StyleBox["f", "TI"], " from ", StyleBox["mn. ", "TI"], "\n\[FilledSmallSquare]", StyleBox[" Ribbon ", "MR"], "\[Rule] ", StyleBox["v", "TI"], " If ", StyleBox["v", "TI"], " is ", StyleBox["False", "MR"], " (default) , the parallel line is returned. If ", StyleBox["v", "TI"], " is ", StyleBox["True", "MR"], ", a ribbon is made of trapezoids ", StyleBox["abb'a'", "TI"], ", ", StyleBox["bcc'b'", "TI"], ", ...\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Distance", ButtonData:>{"Distance"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["ELine", ButtonData:>{"ELine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Normals", ButtonData:>{"Normals"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Orthogonal", ButtonData:>{"Normals"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraxial", ButtonData:>{"Paraxial"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.85", "Parallel"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Parallel"], Cell[TextData[{ "Parallel to 3D line ", StyleBox["d", "TI"], " passing through point ", StyleBox["c", "TI"], "." }], "ExampleText", CellTags->"Parallel"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b,c}=CPoint[{-1,1,1},{0,0,1},{1,2,0}]; d=ELine[a,b]; \[Delta]=Parallel[c,d]; Draw3D[Legend[{\"d\",\"\[Delta]\"},{d,\[Delta]}],Blue,d,c,Red,\[Delta]];\ \>", "Input", CellTags->"Parallel"], Cell[TextData[{ "Tiling of parallel pentagons created with the option ", StyleBox["Ribbon", "MR"], "." }], "ExampleText", CellTags->"Parallel"], Cell["\<\ p=RegularPolygon[5]; q=Parallel[p,1/2,Ribbon->True] Draw[Paint[q,{Red,Green,Red,Green,Yellow}],Blue,p];\ \>", "Input", CellTags->"Parallel"], Cell["\<\ Parallel curves may take fancy shapes depending on the distance.\ \>", "ExampleText", CellTags->"Parallel"], Cell["\<\ e=Conic[2,1]; f=Parallel[e,2] Draw[Blue,e,Red,f];\ \>", "Input", CellTags->"Parallel"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Parallelepiped", "ObjectName", CellTags->{"Geo.86", "Parallelepiped"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Parallelepiped[", "MR"], StyleBox["k", "TI"], StyleBox["]", "MR"], " arbitrary parallelepiped. The parallelepiped can be scaled by ratio ", StyleBox["k", FontSlant->"Italic"], " (default value: 1).", "\n\[FilledSmallSquare]", StyleBox[" Parallelepiped[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " parallelepiped of first vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ",", StyleBox[" ", "MR"], StyleBox["d", "TI"], " with", StyleBox[" ", "MR"], StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ",", StyleBox[" ", "MR"], StyleBox["d", "TI"], " next to ", StyleBox["a", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Cube", ButtonData:>{"Cube"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Parallelogram", ButtonData:>{"Parallelogram"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Solid", ButtonData:>{"Solid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.86", "Parallelepiped"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Parallelepiped"], Cell["Two typical parallelipeds.", "ExampleText", CellTags->"Parallelepiped"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\({p1, p2} = Parallelepiped[{1, 3}];\)\), "\[IndentingNewLine]", \(\(Draw3D[Blue, p1, Red, p2];\)\)}], "Input", CellTags->"Parallelepiped"], Cell[TextData[{ "Parallelepiped using points ", StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], " as vertices. Note how the legend has been written to respect the name of \ the points. See ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], " for more information about the vertices of a polyhedron." }], "ExampleText", CellTags->"Parallelepiped"], Cell[BoxData[{ \(\({a, b, c, d} = CPoint[{0, 2, 1, 1}, {0, 0, 1, 1}, {0, 0, 0, 1}];\)\), "\[IndentingNewLine]", \(pp = Parallelepiped[a, b, c, d]\), "\[IndentingNewLine]", \(\(Draw3D[Legend[{"\"}, pp, Offset \[Rule] {1, Pi/2}], Blue, a, b, c, d, Red, pp];\)\)}], "Input", CellTags->"Parallelepiped"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Parallelogram", "ObjectName", CellTags->{"Geo.87", "Parallelogram"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Parallelogram[", "MR"], StyleBox["k", "TI"], StyleBox["]", "MR"], " arbitrary parallelogram of vertices (-1-1", StyleBox["/GoldenRatio", FontSlant->"Italic"], ", -1", StyleBox["/GoldenRatio", FontSlant->"Italic"], "), (1-1", StyleBox["/GoldenRatio", FontSlant->"Italic"], ", -1", StyleBox["/GoldenRatio", FontSlant->"Italic"], "), (-1+1", StyleBox["/GoldenRatio", FontSlant->"Italic"], ", 1", StyleBox["/GoldenRatio", FontSlant->"Italic"], "), (-1+1", StyleBox["/GoldenRatio", FontSlant->"Italic"], ", 1", StyleBox["/GoldenRatio", FontSlant->"Italic"], "). The parallelogram can be scaled by ratio ", StyleBox["k", FontSlant->"Italic"], " (default value: 1).", "\n\[FilledSmallSquare]", StyleBox[" Parallelogram[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " parallelelogram of vertices ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["d", "TI"], ", ", StyleBox["c", "TI"], StyleBox[" ", "MR"], "with", StyleBox[" ", "MR"], StyleBox["bd ", "TI"], "parallel to ", StyleBox["ac", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Diamond", ButtonData:>{"Diamond"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Parallelepiped", ButtonData:>{"Parallelepiped"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Rectangle", ButtonData:>{"Rectangle"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Translate", ButtonData:>{"Translate"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.87", "Parallelogram"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Parallelogram"], Cell["Typical parallelogram.", "ExampleText", CellTags->"Parallelogram"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(pa = Parallelogram[]\), "\[IndentingNewLine]", \(\(Draw[Blue, pa];\)\)}], "Input", CellTags->"Parallelogram"], Cell[TextData[{ "Parallelogram ", StyleBox["abcd", "TI"], "." }], "ExampleText", CellTags->"Parallelogram"], Cell[BoxData[{ \({a, b, c} = CPoint[{0, 2, 1}, {0, 0, 1}]; \), "\[IndentingNewLine]", \(pa = Parallelogram[a, b, c]\), "\[IndentingNewLine]", \(Draw[Legend["\", pa], Blue, a, b, c, Red, pa]; \)}], "Input", CellTags->"Parallelogram"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["ParallelQ", "ObjectName", CellTags->{"Geo.88", "ParallelQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" ParallelQ[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox["]", "MR"], " tests if objects (line, plane or polygonal line) ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], " are parallel. \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["OrthogonalQ", ButtonData:>{"OrthogonalQ"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.88", "ParallelQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"ParallelQ"], Cell[TextData[{ "All edges of a cube parallel to the first edge. The ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["Select", "MR"], " tests parallelism with the edge \[Sigma] of all the elements of the list \ ", StyleBox["s", "TI"], ". The test is entered as a pure function. The dummy variable # is replaced \ by each element of ", StyleBox["s", "TI"], "." }], "ExampleText", CellTags->"ParallelQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; c=Cube[]; s=Edges[c]; \[Sigma]=s[[1]]; t=Select[s,ParallelQ[#,\[Sigma]]&] Draw3D[Green,c,Red,t,Blue,\[Sigma]];\ \>", "Input", CellTags->"ParallelQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Paraxial", "ObjectName", CellTags->{"Geo.89", "Paraxial"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Paraxial[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["f", "TI"], StyleBox["]", "MR"], " paraxial to segment, conic, curve or surface ", StyleBox["x", "TI"], " generated by a point at the variable distance ", StyleBox["f", "TI"], " from ", StyleBox["x", "TI"], ". ", StyleBox["f", "TI"], " is a pure function of the parameter(s) of ", StyleBox["x", "TI"], ". The term ", StyleBox["paraxial", FontSlant->"Italic"], " is borrowed from optics where it applies to rays of light in the vicinity \ of a ray of reference defined by the geometry of the optical system. In ", StyleBox["Geometrica", FontSlant->"Italic"], ", the variable distance ", StyleBox["f", "TI"], " is arbitrary and not necessarily small.\n\[FilledSmallSquare]", StyleBox[" Paraxial[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["f", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox["]", "MR"], " paraxial to segment, conic or curve ", StyleBox["x", "TI"], " generated by a point at the variable distance ", StyleBox["f", "TI"], " from ", StyleBox["x", "TI"], ". ", StyleBox["f", "TI"], " is an explicit function of the parameter ", StyleBox["u", "TI"], " of ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Paraxial[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["f", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox["]", "MR"], " paraxial to surface ", StyleBox["x", "TI"], " generated by a point at the variable distance ", StyleBox["f", "TI"], " from ", StyleBox["x", "TI"], ". ", StyleBox["f", "TI"], " is an explicit function of the parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], " of ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also:", StyleBox[" ", "MR"], ButtonBox["Distance", ButtonData:>{"Distance"}, ButtonStyle->"AddOnsLink"], ",", StyleBox[" ", "MR"], ButtonBox["Parallel", ButtonData:>{"Parallel"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Normals", ButtonData:>{"Normals"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.89", "Paraxial"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Paraxial"], Cell["Paraxial segments with linear function. ", "ExampleText", CellTags->"Paraxial"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellLabel->"In[1]:="], Cell["\<\ {a,b}=CPoint[{-1,1},0]; s=Segment[a,b]; f=1/2+#& t=Paraxial[s,f] Draw[Blue,s,Red,t];\ \>", "Input", CellTags->"Paraxial"], Cell["\<\ Ellipse modulated by a sine wave at a frequency quadruple of the frequency of \ a point moving on the ellipse.\ \>", "ExampleText", CellTags->"Paraxial"], Cell["\<\ {a,b}=CPoint[{-1,1},0]; c=Conic[a,b,3]; f=Cos[4#]/2&; t=Paraxial[c,f] Draw[Blue,c,Red,t];\ \>", "Input", CellTags->"Paraxial"], Cell["Hyperbola modulated by the same function.", "ExampleText", CellTags->"Paraxial"], Cell["\<\ c=Conic[a,b,3/2]; t=Paraxial[c,f] Draw[Blue,c,Red,t];\ \>", "Input", CellTags->"Paraxial"], Cell[TextData[{ "Paraxial surface ", StyleBox["t", FontSlant->"Italic"], " of ellipsoid ", StyleBox["e", "TI"], " using the function ", StyleBox["f", "TI"], "." }], "ExampleText", CellTags->"Paraxial"], Cell["\<\ {a,b}=CPoint[{-1,1},0,0]; e=Quadric[a,b,3]; f=Cos[4#1]*Sin[2#2]/4&; t=Paraxial[e,f] Draw3D@Paint[t]\ \>", "Input", CellTags->"Paraxial"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Pascal", "ObjectName", CellTags->{"Geo.90", "Pascal"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Pascal[", "MR"], StyleBox["c", "TI"], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], "...", StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], StyleBox["}]", "MR"], " Graph of Pascal's theorem and line on which lie the intersections of the \ lines collinear to the opposite sides of the hexagon inscribed in conic ", StyleBox["c", "TI"], " at points of parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ", ...,", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], ". \n Pascal's theorem states that:\n ", StyleBox["The lines collinear to the opposite sides of an hexagon inscribed \ in a conic intersect at points which are in line.", "Theorem"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Brianchon", ButtonData:>{"Brianchon"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.90", "Pascal"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Pascal"], Cell["Pascal's theorem for an ellipse. ", "ExampleText", CellTags->"Pascal"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(e = Conic[2, 1];\)\), "\[IndentingNewLine]", \(\(par = {0, Pi/4, Pi/2, 3 Pi/5, Pi, 3 Pi/2};\)\), "\[IndentingNewLine]", \(Pascal[e, par]\)}], "Input", CellTags->"Pascal"], Cell[TextData[{ "For the parabola ", StyleBox["p", "TI"], " and the chosen parameters, two opposite sides of the hexagon are \ parallel." }], "ExampleText", CellTags->"Pascal"], Cell[BoxData[{ \(p = Parabola[1]; \), "\[IndentingNewLine]", \(par = Range[6] - 3; \), "\[IndentingNewLine]", \(Pascal[p, par]\)}], "Input", CellTags->"Pascal"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PascalLine", "ObjectName", CellTags->{"Geo.91", "PascalLine"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PascalLine[", "MR"], StyleBox["c", "TI"], StyleBox[",{", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_1\)]], StyleBox[",", "MR"], "...", StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], StyleBox["}]", "MR"], " line on which lie the intersections of the lines collinear to the \ opposite sides of the hexagon inscribed in conic ", StyleBox["c", "TI"], " at points of parameters ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ", ...,", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`t\_6\)]], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Pascal", ButtonData:>{"Pascal"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.91", "PascalLine"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"PascalLine"], Cell["Pascal line of an hyperbola.", "ExampleText", CellTags->"Pascal"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(h = Conic[\(-2\), 1];\)\), "\[IndentingNewLine]", \(\(par = { .3, .5, 1, \(- .7\), \(-2\), \(-4\)};\)\), "\[IndentingNewLine]", \(PascalLine[h, par]\)}], "Input", CellTags->"Pascal"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Pencil", "ObjectName", CellTags->{"Geo.92", "Pencil"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], StyleBox["m", "TI"], StyleBox["]", "MR"], " 2D line passing through point ", StyleBox["m", "TI"], ". The line has a free parameter and is produced as a pure function. The \ lines parallel to ", StyleBox["Ox", "TI"], " and ", StyleBox["Oy", "TI"], " axes correspond to the values 0 and 1 of the parameter respectively.\n\ \[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], StyleBox["]", "MR"], " 2D line passing through the intersections of lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], ". If the coordinates of ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox["and", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], "are (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], ",", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ") and (", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_2\)]], "), then the coordinates of the line of parameter \[Lambda] are ((1-\ \[Lambda])", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], "+ \[Lambda]", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(v\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(v\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(w\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(w\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ").\n\[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " If ", StyleBox["d", "TI"], " is a 2D line, pencil of lines parallel to ", StyleBox["d", "TI"], ". If the coordinates of ", StyleBox["d", "TI"], " ", StyleBox["are", "MR", FontFamily->"Times New Roman"], " (", Cell[BoxData[ \(TraditionalForm\`u\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\)]], ",", Cell[BoxData[ \(TraditionalForm\`w\)]], "), then the coordinates of the line of parameter \[Lambda] are (", Cell[BoxData[ \(TraditionalForm\`u\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\)]], "+\[Lambda]).\n If ", StyleBox["d", "TI"], " is a 3D line, pencil of planes passing through ", StyleBox["d", "TI"], ". The parameters 0 and 1 correspond to the first and second plane of \ definition of the line.\n\[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], Cell[BoxData[ \(TraditionalForm\`p\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`p\_2\)]], StyleBox["]", "MR"], " pencil of planes passing through the intersection of the planes ", Cell[BoxData[ \(TraditionalForm\`p\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`p\_2\)]], ". If the coordinates of ", Cell[BoxData[ \(TraditionalForm\`p\_1\)]], StyleBox["and", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`p\_2\)]], "are (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`h\_1\)]], ") and (", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`h\_2\)]], "), then the coordinates of the plane of parameter \[Lambda] are ((1-\ \[Lambda])", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], "+ \[Lambda]", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(v\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(v\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(w\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(w\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(h\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(h\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ").\n\[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " pencil of planes parallel to plane ", StyleBox["p", "TI"], ". If the coordinates of ", StyleBox["p", "TI"], " are (", Cell[BoxData[ \(TraditionalForm\`u\)]], ",", Cell[BoxData[ \(TraditionalForm\`v\)]], ",", Cell[BoxData[ \(TraditionalForm\`w\)]], ", ", StyleBox["h", "TI"], "), then the equation of the plane of parameter \[Lambda] is (", Cell[BoxData[ \(TraditionalForm\`u\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\)]], ", ", Cell[BoxData[ \(TraditionalForm\`h\)]], " + \[Lambda]).\n\[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], Cell[BoxData[ \(TraditionalForm\`c\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`c\_2\)]], StyleBox["]", "MR"], " conic passing through the intersections of the conics ", Cell[BoxData[ \(TraditionalForm\`c\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`c\_2\)]], ". The conic has a free parameter and is produced as a pure function. If \ the coordinates are (", Cell[BoxData[ \(TraditionalForm\`r\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`s\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`t\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ") for ", Cell[BoxData[ \(TraditionalForm\`c\_1\)]], " and (", Cell[BoxData[ \(TraditionalForm\`r\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`s\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`t\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ", ", Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ") for ", Cell[BoxData[ \(TraditionalForm\`c\_2\)]], ", then (", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(r\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(r\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(s\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(s\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(t\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(t\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", (1-\[Lambda])", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], "+ \[Lambda]", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(v\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(v\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ", ", Cell[BoxData[ FormBox[ RowBox[{ RowBox[{\((1 - \[Lambda])\), FormBox[\(w\_1\), "TraditionalForm"]}], "+", RowBox[{"\[Lambda]", FormBox[\(w\_2\), "TraditionalForm"]}]}], TraditionalForm]]], ") are the coordinates of the conic of parameter \[Lambda].\n\ \[FilledSmallSquare]", StyleBox[" Pencil[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " conics tangent to the intersections of line ", StyleBox["d", "TI"], " and conic ", StyleBox["c", "TI"], ". A line (", StyleBox["u", "TI"], ",", StyleBox["v", "TI"], ",", StyleBox["w", "TI"], ") is considered as identical to the conic (", Cell[BoxData[ \(TraditionalForm\`u\^2\)]], ",", StyleBox["uv,", "TI"], Cell[BoxData[ \(TraditionalForm\`v\^2\)]], ",", StyleBox["uw", "TI"], ",", StyleBox["vw", "TI"], ",", Cell[BoxData[ \(TraditionalForm\`w\^2\)]], ").\n\[FilledSmallSquare]", StyleBox[" Pencil[{", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], "},", StyleBox["d", "TI"], StyleBox["]", "MR"], " conics tangent to lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " at the intersections of line ", StyleBox["d", "TI"], " with ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox["and", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], ". Lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " of coordinates (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], ", ", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], ",", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ") and (", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ",", Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ",", Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ") are considered as identical to the conic of coordinates (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ", (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], "+", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ")/2, ", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ", (", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], "+", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ")/2, (", Cell[BoxData[ \(TraditionalForm\`v\_1\)]], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], "+", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ")/2, ", Cell[BoxData[ \(TraditionalForm\`w\_1\)]], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ").\n\[FilledSmallSquare]", StyleBox[" Pencil[{", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], "},", StyleBox["c", "TI"], StyleBox["]", "MR"], " conics passing through the intersections of lines ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " with conic ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pencil[{", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_1\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], "},", StyleBox["{", "MR"], Cell[BoxData[ \(TraditionalForm\`d\_3\)]], StyleBox[",", "MR"], " ", Cell[BoxData[ \(TraditionalForm\`d\_4\)]], "}", StyleBox["]", "MR"], " conics passing through the intersections of line ", Cell[BoxData[ \(TraditionalForm\`d\_1\)]], " with lines ", Cell[BoxData[ \(TraditionalForm\`d\_3\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_4\)]], " and line ", Cell[BoxData[ \(TraditionalForm\`d\_2\)]], " with ", Cell[BoxData[ \(TraditionalForm\`d\_3\)]], " and ", Cell[BoxData[ \(TraditionalForm\`d\_4\)]], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CLine", ButtonData:>{"CLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CPlane", ButtonData:>{"CPlane"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", TextAlignment->Left, CellTags->{"Geo.92", "Pencil"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Pencil"], Cell["Lines passing through the origin. ", "ExampleText", CellTags->"Pencil"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; m=CPoint[0,0]; p=Pencil[m]\ \>", "Input", CellTags->"Pencil"], Cell[TextData[{ StyleBox["Ox", "TI"], " axis." }], "ExampleText", CellTags->"Pencil"], Cell["x=p[0]", "Input", CellTags->"Pencil"], Cell[TextData[{ "Conic tangent to a conic ", StyleBox["c", "TI"], " at the intersections of ", StyleBox["c", "TI"], " with line ", StyleBox["d", "TI"], ". " }], "ExampleText", CellTags->"Pencil"], Cell["\<\ p=Parabola[1]; d=CLine[1,0,-1]; q=Pencil[p,{d,d}] Draw[Blue,p,d,Red,q[1/2]];\ \>", "Input", CellTags->"Pencil"], Cell[TextData[{ "Parabolae passing through four points can be considered as conics \ belonging to the pencil of conics defined by two pairs of lines and \ satisfying the condition ", StyleBox["rt ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`s\^2\)]], " = 0." }], "ExampleText", CellTags->"Pencil"], Cell["\<\ {d1,d2}=CLine[{1,-1/2},1,0]; {d3,d4}=CLine[{-1,1}2,1,-2]; c=Pencil[{d1,d2},{d3,d4}]\ \>", "Input", CellTags->"Pencil"], Cell[TextData[{ "Let us solve the equation ", StyleBox["rt ", "TI"], "- ", Cell[BoxData[ \(TraditionalForm\`s\^2\)]], " = 0 and substitute the solutions." }], "ExampleText", CellTags->"Pencil"], Cell["\<\ sol=Solve[c[x][[1]]-c[x][[2]]^2==0,x] p=c[x]/.sol Draw[Blue,d1,d2,Green,d3,d4,Red,DrawRange[-2,2],p];\ \>", "Input", CellTags->"Pencil"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Petal", "ObjectName", CellTags->{"Geo.93", "Petal"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Petal[", "MR"], StyleBox["r", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["option", "TI"], StyleBox["]", "MR"], " A petal is a figure made of three arcs of circle. The first arc starts \ from ", StyleBox["O", "TI"], " (", StyleBox["0", "TI"], ", ", StyleBox["0", "TI"], ") and ends at ", StyleBox["A", "TI"], " (-", Cell[BoxData[ \(TraditionalForm\`r\/2\)]], ", ", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"r", FormBox[\(\@3\), "TraditionalForm"]}], "2"], TraditionalForm]]], "). The second arc starts from ", StyleBox["A", "TI"], " and ends at ", StyleBox["B", "TI"], " (", Cell[BoxData[ \(TraditionalForm\`r\/2\)]], ", ", Cell[BoxData[ FormBox[ FractionBox[ RowBox[{"r", FormBox[\(\@3\), "TraditionalForm"]}], "2"], TraditionalForm]]], "). The third arc joins ", StyleBox["B", "TI"], " to ", StyleBox["O", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Petal[]", "MR"], " petal of radius 1 in ", StyleBox["Segment", FontSlant->"Italic"], " form", ".\n\[FilledSmallSquare]", StyleBox[" Segment \[Rule] ", "MR"], StyleBox["v.", "TI"], " If ", StyleBox["v", "TI"], " = ", StyleBox["True ", FontSlant->"Italic"], "(default) , the petal is returned as a polygon. If ", StyleBox["v", "TI"], " = ", StyleBox["False", FontSlant->"Italic"], ", the petal is returned as a list of two arcs and two segments.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Racetrack", ButtonData:>{"Racetrack"}, ButtonStyle->"AddOnsLink"], ". " }], "Notes", CellTags->{"Geo.93", "Petal"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Petal"], Cell["Petal of radius 1 and its representation.", "ExampleText", CellTags->"Petal"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"Petal"], Cell[BoxData[{ \(p = Petal[1, Segment \[Rule] False]\), "\n", \(te = {"\", "\", "\"}; \), "\[IndentingNewLine]", \(m = CPoint[{0, \(-1\), 1}/2, {0, 1, 1} Sqrt[3]/2]; \), "\[IndentingNewLine]", \(Draw[p, m, Legend[te, m, Offset \[Rule] {3, \(-Pi\)/2}]]; \)}], "Input",\ CellTags->"Petal"], Cell["Painting a petal in red.", "ExampleText", CellTags->"Petal"], Cell["\<\ p=Petal[]; Short[p,10] Draw@Paint[p,Red];\ \>", "Input", CellTags->"Petal"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Plane", "ObjectName", CellTags->{"Geo.94", "Plane"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " plane passing through points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], " and ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["...", "TI"], StyleBox["]", "MR"], " plane fitting points ", StyleBox["a", "TI"], ", ", StyleBox["b", "TI"], ", ", StyleBox["c", "TI"], ", ", StyleBox["d", "TI"], ", ", StyleBox["...", "TI"], "\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox["]", "MR"], " plane containing point ", StyleBox["a", "TI"], " and 3D line", StyleBox[" ", "MR"], StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " plane passing through point ", StyleBox["a", "TI"], " parallel to plane", StyleBox[" ", "MR"], StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " plane passing through 3D line", StyleBox[" ", "MR"], StyleBox["d", "TI"], " perpendicular to plane", StyleBox[" ", "MR"], StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["\[Delta]", "TI"], StyleBox["]", "MR"], " plane passing through 3D line", StyleBox[" ", "MR"], StyleBox["d", "TI"], " and parallel to line", StyleBox[" ", "MR"], StyleBox["\[Delta]", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " plane tangent to curve ", StyleBox["c", "TI"], StyleBox[" ", "MR"], "at point of parameter", StyleBox[" ", "MR"], StyleBox["t", "TI"], ". The plane tangent to a curve is perpendicular to the normal to the curve \ at the contact point.\n\[FilledSmallSquare]", StyleBox[" Plane[", "MR"], StyleBox["s", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox["]", "MR"], " plane tangent to surface", StyleBox[" ", "MR"], StyleBox["s", "TI"], " at point of parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], " , ", ButtonBox["Image", ButtonData:>{"Image"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["NormalPlane", ButtonData:>{"NormalPlane"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pencil", ButtonData:>{"Pencil"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.94", "Plane"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Plane"], Cell["Symbolic plane passing through three points.", "ExampleText", CellTags->"Plane"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; Clear[a,b,c,d,e,f,g,h,i] {m,n,p}=CPoint[{a,d,g},{b,e,h},{c,f,i}]; Plane[m,n,p]\ \>", "Input", CellTags->"Plane"], Cell[TextData[{ "Symbolic plane passing through point and line. Note that the plane passing \ through a point and ", StyleBox["perpendicular", FontSlant->"Italic"], " to a line is given by ", StyleBox["NormalPlane", "MR"], "." }], "ExampleText", CellTags->"Plane"], Cell["\<\ Clear[h1,h2,u1,u2,v1,v2,w1,w2] m=CPoint[a,b,c]; {p,q}=CPlane[{u1,u2},{v1,v2},{w1,w2},{h1,h2}]; d=CLine[p,q]; Plane[m,d]\ \>", "Input", CellTags->"Plane"], Cell["\<\ Plane fitting 100 points located randomly about the plane (1,1,1,1).\ \>", "ExampleText", CellTags->"Plane"], Cell["\<\ p=CPlane[1,1,1,1]; m=Flatten@N@Table[Pointer[p,Range[10],n],{n,10}]; r=Table[{Random[],Random[],Random[]}-.5,{n,100}]; l=m/.CPoint->List; l=l+r; m=l/.{u_,v_,w_}->CPoint[u,v,w]; p=Plane@@m Draw3D[DrawRange[-10,10],Blue,m,Red,p];\ \>", "Input", CellTags->"Plane"], Cell["\<\ Plane tangent to a helix at point of parameter \[Pi]/3.\ \>", "ExampleText", CellTags->"Plane"], Cell["\<\ h=PPoint[Cos[#]&,Sin[#]&,#&, PRange->{0,2Pi,25}]; m=Pointer[h,Pi/3]; p=Plane[h,Pi/3] Draw3D[Blue,h,m,Red,PlaneOrigin[m],p];\ \>", "Input", CellTags->"Plane"], Cell["\<\ Plane tangent to a sphere at point of longitude -\[Pi]/4 and latitude \ \[Pi]/6.\ \>", "ExampleText", CellTags->"Plane"], Cell["\<\ s=Sphere[CPoint[0,0,0],1]; m=Pointer[s,-Pi/4,Pi/6]; p=Plane[s,-Pi/4,Pi/6] Draw3D[Blue,s,Green,m,Red,PlaneOrigin[m],p];\ \>", "Input", CellTags->"Plane"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PlaneOrigin", "ObjectName", CellTags->{"Geo.95", "PlaneOrigin"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PlaneOrigin[", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " graphics directive of ", ButtonBox["Draw3D", ButtonData:>{"Draw3D"}, ButtonStyle->"AddOnsLink"], " which determines the origin of the parametric representation used to draw \ a plane. That origin is the projection of point ", StyleBox["a", "TI"], " onto the planes. By default, ", StyleBox["a", "TI"], " is ", StyleBox["CPoint[0,0,0]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.95", "PlaneOrigin"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"PlaneOrigin"], Cell["\<\ Two configurations of a given plane and point can be compared. In the first \ instance, the origin of the plane is the projection of the origin. \ \>", "ExampleText", CellTags->"PlaneOrigin"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(a = CPoint[10, 0, 10];\)\), "\[IndentingNewLine]", \(\(p = CPlane[1, \(-1\), 0, 0];\)\), "\[IndentingNewLine]", \(\(Draw3D[Blue, a, Red, p];\)\)}], "Input", CellTags->"PlaneOrigin"], Cell[TextData[{ "In the second instance, the origin of the plane is the projection of point \ ", StyleBox["a", "TI"], ". " }], "ExampleText", CellTags->"PlaneOrigin"], Cell[BoxData[ \(Draw3D[PlaneOrigin[a], Blue, a, Red, p]; \)], "Input", CellTags->"PlaneOrigin"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PlatonicQ", "ObjectName", CellTags->{"Geo.96", "PlatonicQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PlatonicQ[", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " tests if faces of polyhedron ", StyleBox["p", "TI"], StyleBox[" ", "MR"], "are congruent.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["PlatonicSolid", ButtonData:>{"PlatonicSolid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.96", "PlatonicQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"PlatonicQ"], Cell["Test applied to a tetrahedron.", "ExampleText", CellTags->"PlatonicQ"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b}=CPoint[{1,-1/2},{0,Sqrt[3]/2}]; tr=To3D@RegularPolygon[a,b,3]; py=Pyramid[CPoint[0,0,Sqrt[2]],tr]; PlatonicQ[py]\ \>", "Input", CellTags->"PlatonicQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PlatonicSolid", "ObjectName", CellTags->{"Geo.97", "PlatonicSolid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PlatonicSolid[", "MR"], StyleBox["n", "TI"], StyleBox["]", "MR"], " regular polyhedron or ", StyleBox["Platonic solid", FontSlant->"Italic"], " centered at origin, with ", StyleBox["n", "TI"], " faces, of unit edge length and with an edge in the ", StyleBox["xz ", "TI"], "plane. The faces of a Platonic solid are equal regular polygons. There are \ five Platonic solids:\n\t", StyleBox["n", "TI"], " = 4, tetrahedron with four triangular faces.\n\t", StyleBox["n", "TI"], " = 6, cube with six square faces.\n\t", StyleBox["n", "TI"], " = 8, octahedron with eight triangular faces. \n\t", StyleBox["n", "TI"], " = 12, dodecahedron with twelve triangular faces.\n\t", StyleBox["n", "TI"], " = 20, icosahedon with twenty pentagonal faces.\n\[FilledSmallSquare]", StyleBox[" PlatonicSolid[", "MR"], StyleBox["n", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " same as above but with edge length ", StyleBox["a", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Diagonals", ButtonData:>{"Diagonals"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Edges", ButtonData:>{"Edges"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Faces", ButtonData:>{"Faces"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polytopes", ButtonData:>{"Polytopes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["RegularPolygon", ButtonData:>{"RegularPolygon"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.97", "PlatonicSolid"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"PlatonicSolid"], Cell["\<\ Open dodecahedra of edge length equal to 2. The second one is painted but has \ an open face and the interior can be seen.\ \>", "ExampleText", CellTags->"PlatonicSolid"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(do1 = PlatonicSolid[12, 2];\)\), "\[IndentingNewLine]", \(\(do2 = Delete[do1, 6];\)\), "\[IndentingNewLine]", \(\(Draw3D[Blue, do1, Paint[do2, Red]];\)\)}], "Input", CellTags->"PlatonicSolid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Pointer", "ObjectName", CellTags->{"Geo.98", "Pointer"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " point of line, segment, conic or curve ", StyleBox["x", "TI"], " of parameter ", StyleBox["t", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox["]", "MR"], " points of parameter ", StyleBox["t", "TI"], " on the sides or edges of polygonal line or polyhedron ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["t", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " point of line ", StyleBox["d", "TI"], ", parameter ", StyleBox["t ", "TI"], "and origin the projection of point ", StyleBox["a", "TI"], " onto ", StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox["]", "MR"], " point of plane or surface ", StyleBox["x", "TI"], " of parameters ", StyleBox["u ", "TI"], "and ", StyleBox["v", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["w", "TI"], StyleBox["]", "MR"], " point of volume ", StyleBox["x", "TI"], " of parameters ", StyleBox["u", "TI"], ", ", StyleBox["v ", "TI"], "and ", StyleBox["w", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pointer[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["u", "TI"], StyleBox[",", "MR"], StyleBox["v", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " point of plane ", StyleBox["p", "TI"], ", parameters ", StyleBox["u ", "TI"], "and ", StyleBox["v ", "TI"], "and origin the projection of point ", StyleBox["a", "TI"], " onto ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CConic", ButtonData:>{"CConic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CLine", ButtonData:>{"CLine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CPlane", ButtonData:>{"CPlane"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["LineOrigin", ButtonData:>{"LineOrigin"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PlaneOrigin", ButtonData:>{"PlaneOrigin"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PointParameter", ButtonData:>{"PointParameter"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.98", "Pointer"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Pointer"], Cell["\<\ Symbolic point on a segment. Points of parameters 0 and 1 correspond to the \ origin and end of the segment respectively.\ \>", "ExampleText", CellTags->"Pointer"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; Clear[t,u,v,x,y] {a,b}=CPoint[{x,u},{y,v}]; s=Segment[a,b]; Pointer[s,t]\ \>", "Input", CellTags->"Pointer"], Cell["Points of parameter 1/3 on a polyhedron.", "ExampleText", CellTags->"Pointer"], Cell["\<\ {a,b,c,d}=CPoint[{0,1,1/3,1/4},{0,0,1,1/4},{0,0,0,1}]; pp=Parallelepiped[a,b,c,d]; m=Pointer[pp,1/4] Draw3D[Blue,pp,Red,m];\ \>", "Input", CellTags->"Pointer"], Cell[TextData[{ "The function ", StyleBox["Pointer", "MR"], " can be used to find the parametric representation of a curve or surface. \ It is applied here to a 3D hyperbola." }], "ExampleText", CellTags->"Pointer"], Cell["\<\ Clear[t] h=Conic[1,-1]; p=CPlane[1,1,1,0]; c=CConic[h,p]; Pointer[c,t]\ \>", "Input", CellTags->"Pointer"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PointParameter", "ObjectName", CellTags->{"Geo.99", "PointParameter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PointParameter[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["m", "TI"], StyleBox["]", "MR"], " parameter of point ", StyleBox["m", "TI"], " on line, segment, 2D conic or plane ", StyleBox["x", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" PointParameter[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " parameter(s) of point ", StyleBox["m", "TI"], " on line or plane ", StyleBox["x ", "TI"], "of origin the projection of point ", StyleBox["a", "TI"], " onto ", StyleBox["x", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.99", "PointParameter"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"PointParameter"], Cell["\<\ Parameters of the ends of major and minor axes of an ellipse.\ \>", "ExampleText", CellTags->"PointParameter"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; e=Conic[2,1]; m=CPoint[{2,0,-2,0},{0,1,0,-1}]; PointParameter[e,m]\ \>", "Input", CellTags->"PointParameter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Polar", "ObjectName", CellTags->{"Geo.100", "Polar"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Polar[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " line, or ", StyleBox["polar", FontSlant->"Italic"], ",", " joining the points of contact of the tangents (real or imaginary) to \ conic ", StyleBox["c", "TI"], " issued from point ", StyleBox["a ", "TI"], "in the plane of ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Polar[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], " plane or ", StyleBox["polar", FontSlant->"Italic"], " joining the points of contact of the cone (real or imaginary) tangent to \ quadric ", StyleBox["q", "TI"], " issued from point ", StyleBox["a", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", Cell[BoxData[ RowBox[{ ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], ","}]]], " ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CrossRatio", ButtonData:>{"CrossRatio"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Directrix", ButtonData:>{"Directrix"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ELine", ButtonData:>{"ELine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pole", ButtonData:>{"Pole"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.100", "Polar"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Polar"], Cell[TextData[{ "The directrix of a parabola ", StyleBox["p", "TI"], " is the polar of the focus of ", StyleBox["p", "TI"], "." }], "ExampleText", CellTags->"Polar"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(p = Parabola[x];\)\), "\n", \(\(f = Focus[p];\)\), "\n", \(po = Simplify@Polar[f, p]\), "\[IndentingNewLine]", \(\(di = Directrix[p];\)\), "\[IndentingNewLine]", \(IdenticalQ[po, di]\)}], "Input", CellTags->"Polar"], Cell[TextData[{ "Polar of point ", StyleBox["a", FontSlant->"Italic"], " in the ellipsoid", " ", StyleBox["q", "TI"], ". The tangent cone is also drawn. The parametric form of the cone is used \ in ", StyleBox["Draw3D", FontSlant->"Italic"], ". It is given by the rule ", StyleBox["QuadricPoint", FontSlant->"Italic"], " in ", StyleBox["QuadricElements", FontSlant->"Italic"], ". Last a new rule is defined to change the range of the first parameter, \ the one which sweeps the generator." }], "ExampleText", CellTags->"Polar"], Cell[BoxData[{ \(q = CEllipsoid[]; \), "\n", \(a = CPoint[\(-2\), 0, 0]; \), "\n", \(po = Polar[a, q]\), "\[IndentingNewLine]", \(x = Intersections[po, q]; \), "\[IndentingNewLine]", \(co = Cone[a, q]; \), "\[IndentingNewLine]", \(qe = QuadricElements @@ co; \), "\[IndentingNewLine]", \(newco = \(QuadricPoint /. qe\) /. \((PRange \[Rule] {{a1_, a2_}, a3__})\) \[Rule] \((PRange \[Rule] {{0, 1.5}, a3})\); \), "\[IndentingNewLine]", \(Draw3D[Blue, a, q, Paint[x, Red], Paint[newco]]; \)}], "Input", CellTags->"Polar"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Pole", "ObjectName", CellTags->{"Geo.101", "Pole"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Pole[", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " point, or ", StyleBox["pole", FontSlant->"Italic"], ", whose polar with respect to conic ", StyleBox["c", "TI"], " is line ", StyleBox["d ", "TI"], "in the plane of ", StyleBox["c", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Pole[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox["]", "MR"], " point, or ", StyleBox["pole", FontSlant->"Italic"], ", whose polar with respect to quadric ", StyleBox["q", "TI"], " is plane ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CrossRatio", ButtonData:>{"CrossRatio"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Focus", ButtonData:>{"Focus"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Polar", ButtonData:>{"Polar"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.101", "Pole"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Pole"], Cell[TextData[{ "The focus of a parabola ", StyleBox["p", "TI"], " is the pole of the directrix of ", StyleBox["p", "TI"], "." }], "ExampleText", CellTags->"Pole"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(p = Parabola[x];\)\), "\n", \(\(di = Directrix[p];\)\), "\[IndentingNewLine]", \(po = Pole[di, p]\), "\[IndentingNewLine]", \(\(f = Focus[p];\)\), "\n", \(IdenticalQ[po, f]\)}], "Input", CellTags->"Pole"], Cell[TextData[{ "Pole of an elliptic paraboloid associated with the plane ", StyleBox["p", FontSlant->"Italic"], ". " }], "ExampleText", CellTags->"Pole"], Cell[BoxData[{ \(q = EllipticParaboloid[]; \), "\n", \(p = CPlane[1, 0, 0, \(-1\)]; \), "\[IndentingNewLine]", \(po = Pole[p, q]\), "\[IndentingNewLine]", \(x = Intersections[q, p]; \), "\[IndentingNewLine]", \(\(Draw3D[Blue, q, Green, p, Paint[x, Green], Red, po];\)\)}], "Input", CellTags->"Pole"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PPoint", "ObjectName", CellTags->{"Geo.102", "PPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PPoint[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " parametric point whose coordinates ", StyleBox["x", "TI"], " and ", StyleBox["y", "TI"], " are pure functions depending on one parameter. \n\[FilledSmallSquare]", StyleBox[" PPoint[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["y", "TI"], StyleBox[",", "MR"], StyleBox["z", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " parametric point whose coordinates ", StyleBox["x", "TI"], " , ", StyleBox["y", "TI"], " and ", StyleBox["z", "TI"], " are pure functions depending on one, two or three parameters when the \ point belongs to a curve, a surface or a volume respectively. \n\ \[FilledSmallSquare]", StyleBox[" PRange \[Rule] {", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["}", "MR"], " range of variation of the parameter from value ", StyleBox["a", "TI"], " at the origin to value ", StyleBox["b ", "TI"], "at the end. The integer ", StyleBox["n", "TI"], " is the number of points used to draw the arc of curve in ", StyleBox["Draw", "MR"], " or ", StyleBox["Draw3D", "MR"], ". Default: ", StyleBox["PRange \[Rule] {", "MR"], StyleBox["-\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["25", "TI"], StyleBox["}", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["}", "MR"], " range of variations of the parameter for two arcs of the curve. ", StyleBox["a", "TI"], " and ", StyleBox["b ", "TI"], "are the values of the parameter at beginning and end of the first arc. ", StyleBox["c", "TI"], " and ", StyleBox["d ", "TI"], "are the values of the parameter at beginning and end of the secondt arc. \ The integer ", StyleBox["n", "TI"], " is the number of points used to draw the arc of curve in ", StyleBox["Draw", "MR"], " or ", StyleBox["Draw3D", "MR"], "; it is optional with default value 25. This syntax is of special interest \ when the parameter has a discontinuity. For the hyperbola for instance, the \ default value is: ", StyleBox["PRange \[Rule] {", "MR"], StyleBox["-\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["25", "TI"], StyleBox["}", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_u\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_v\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], " of a surface. The integers ", Cell[BoxData[ \(TraditionalForm\`n\_u\)]], " and ", Cell[BoxData[ \(TraditionalForm\`n\_v\)]], " are the numbers of points used to draw the iso-", StyleBox["v", "TI"], " and iso-", StyleBox["u", "TI"], " curves of the surface in ", StyleBox["Draw3D", "MR"], ". The default value depends on the surface.\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["v", "TI"], " and ", StyleBox["w", "TI"], " of a volume.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Arc", ButtonData:>{"Arc"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CanonicalForm", ButtonData:>{"CanonicalForm"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicPoint", ButtonData:>{"ConicPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PRange", ButtonData:>{"PRange"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricCanonicalForm", ButtonData:>{"QuadricCanonicalForm"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricPoint", ButtonData:>{"QuadricPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Volume", ButtonData:>{"Volume"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.102", "PPoint"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"PPoint"], Cell["Drawing two branches of a curve with a point at infinity.", \ "ExampleText", CellTags->"PPoint"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"PPoint"], Cell["\<\ h=PPoint[#&,(1/#^2)&,PRange->{-9,-1/3,1/3,9}]; Draw[h];\ \>", "Input", CellTags->"PPoint"], Cell[TextData[{ "The function ", StyleBox["PPoint", "MR"], " is understood as a geometrical object which can eventually be measured \ and transformed." }], "ExampleText", CellTags->"PPoint"], Cell["\<\ s=PPoint[Cos[#1]&,#2&,#1 #2&,PRange->{{0,Pi},{0,1}}]; {a,b}=CPoint[2,0,{0,1}]; d=ELine[a,b]; s1=Rotate[s,d,Pi/3]; Draw3D[Blue,s,Red,s1];\ \>", "Input", CellTags->"PPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PRange", "ObjectName", CellTags->{"Geo.102", "PRange"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["}", "MR"], " range of variation of the parameter from value ", StyleBox["a", "TI"], " at the origin to value ", StyleBox["b ", "TI"], "at the end. The integer ", StyleBox["n", "TI"], " is the number of points used to draw the arc of curve in ", StyleBox["Draw", "MR"], " or ", StyleBox["Draw3D", "MR"], ". Default: ", StyleBox["PRange \[Rule] {", "MR"], StyleBox["-\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["25", "TI"], StyleBox["}", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["n", "TI"], StyleBox["}", "MR"], " range of variations of the parameter for two arcs of the curve. ", StyleBox["a", "TI"], " and ", StyleBox["b ", "TI"], "are the values of the parameter at beginning and end of the first arc. ", StyleBox["c", "TI"], " and ", StyleBox["d ", "TI"], "are the values of the parameter at beginning and end of the secondt arc. \ The integer ", StyleBox["n", "TI"], " is the number of points used to draw the arc of curve in ", StyleBox["Draw", "MR"], " or ", StyleBox["Draw3D", "MR"], "; it is optional with default value 25. This syntax is of special interest \ when the parameter has a discontinuity. For the hyperbola for instance, the \ default value is: ", StyleBox["PRange \[Rule] {", "MR"], StyleBox["-\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["\[Pi]", "TI"], StyleBox[",", "MR"], StyleBox["25", "TI"], StyleBox["}", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_u\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`n\_v\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], " and ", StyleBox["v", "TI"], " of a surface. The integers ", Cell[BoxData[ \(TraditionalForm\`n\_u\)]], " and ", Cell[BoxData[ \(TraditionalForm\`n\_v\)]], " are the numbers of points used to draw the iso-", StyleBox["v", "TI"], " and iso-", StyleBox["u", "TI"], " curves of the surface in ", StyleBox["Draw3D", "MR"], ". The default value depends on the surface.\n\[FilledSmallSquare]", StyleBox[" PRange \[Rule] {{", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["},{", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], StyleBox["}}", "MR"], " range of variations of the parameters ", StyleBox["u", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["v", "TI"], " and ", StyleBox["w", "TI"], " of a volume.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["ConicElements", ButtonData:>{"ConicElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["ConicPoint", ButtonData:>{"ConicPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricPoint", ButtonData:>{"QuadricPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Segment", ButtonData:>{"Segment"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.102", "PRange"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"PRange"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"PRange"], Cell["\<\ The conics and quadrics have a default parametrization. An ellipse, for \ instance, has the following representation:\ \>", "ExampleText", CellTags->"PRange"], Cell["\<\ e=Ellipse[] Draw[e];\ \>", "Input", CellTags->"PRange"], Cell[TextData[{ "To draw an arc of ", StyleBox["e", FontSlant->"Italic"], ", one applies ", StyleBox["ConicElements", "MR"], " to ", StyleBox["e", FontSlant->"Italic"], " and gets the parametric form by choosing the rule ", StyleBox["ConicPoint", "MR"], ". The range of variations of the two parameters is changed with the rule \ ", StyleBox["rc", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"PRange"], Cell["\<\ c=. ce=ConicElements@@e; cp=ConicPoint/.ce rc=(PRange->{a_,b_,c_})->PRange->{-Pi/2,Pi/3,c}; ae=cp/.rc Draw[ae];\ \>", "Input", CellTags->"PRange"], Cell[TextData[{ "To draw an octant of sphere, one applies ", StyleBox["QuadricElements", "MR"], " to ", StyleBox["s", FontSlant->"Italic"], " and gets the parametric form by choosing the rule ", StyleBox["QuadricPoint", "MR"], ". The range of variations of the two parameters is changed with the rule \ ", StyleBox["rq", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"PRange"], Cell["\<\ qe=QuadricElements@@s; qp=QuadricPoint/.qe; rq=(PRange->{a_,b_,c_})->PRange->{{-Pi/2,0},{0,Pi/2},c}; oc=qp/.rq Draw3D@Paint[oc];\ \>", "Input", CellTags->"PRange"], Cell["A sphere has the following representation:", "ExampleText", CellTags->"PRange"], Cell["\<\ s=Sphere[]; Draw3D[s];\ \>", "Input", CellTags->"PRange"], Cell[TextData[{ "To draw an octant of sphere, one applies ", StyleBox["QuadricElements", "MR"], " to ", StyleBox["s", FontSlant->"Italic"], " and gets the parametric form by choosing the rule ", StyleBox["QuadricPoint", "MR"], ". The range of variations of the two parameters is changed with the rule \ ", StyleBox["ru", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"PRange"], Cell["\<\ qe=QuadricElements@@s; sp=QuadricPoint/.qe; ru=(PRange->{a_,b_,c_})->PRange->{{-Pi/2,0},{0,Pi/2},c}; oc=sp/.ru Draw3D@Paint[oc];\ \>", "Input", CellTags->"PRange"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Prismoid", "ObjectName", CellTags->{"Geo.51", "Prismoid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Prismoid[", "MR"], StyleBox["l", FontSlant->"Italic"], ",", StyleBox["m", FontSlant->"Italic"], ",", StyleBox["p", FontSlant->"Italic"], StyleBox["]", "MR"], " prismoid of directrix the polygonal line ", StyleBox["l", FontSlant->"Italic"], ", generators parallel to ", StyleBox["Om", FontSlant->"Italic"], " and limited by plane ", StyleBox["p", FontSlant->"Italic"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Solid", ButtonData:>{"Solid"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.51", "Prismoid"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Prismoid"], Cell["Prismoid with a triangular base.", "ExampleText", CellTags->"Prismoid"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input"], Cell[BoxData[{ \({m, a, b, c} = CPoint[{1, 1, 0, 0}, {1, 0, 1, 0}, {1, 0, 0, 1}]; \), "\[IndentingNewLine]", \(l = Segment[a, b, c]; \), "\[IndentingNewLine]", \(p = CPlane[0, 0, 1, \(-2\)]; \), "\[IndentingNewLine]", \(pr = Prismoid[l, m, p]\), "\[IndentingNewLine]", \(Draw3D[Blue, a, b, c, Paint[pr]]; \)}], "Input", CellTags->"Prismoid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Project", "ObjectName", CellTags->{"Geo.103", "Project"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " orthogonal projection of point ", StyleBox["m", "TI"], " onto line, plane, polygonal line or conic ", StyleBox["x", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" \[ScriptCapitalP][", "MR"], StyleBox["x", "TI"], StyleBox["]", "MR"], " operator of projection onto ", StyleBox["x", "TI"], ". The operator is applied to the object to be projected in the form ", StyleBox["\[ScriptCapitalP][", "MR"], StyleBox["x", "TI"], StyleBox["][", "MR"], StyleBox["m", "TI"], StyleBox["]", "MR"], ". It is portable and can be mapped to an expression.\n\ \[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " projection of 2D point ", StyleBox["m", "TI"], " onto line ", StyleBox["d", "TI"], " from center of projection ", StyleBox["a", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " projection of 2D point ", StyleBox["m", "TI"], " onto line ", StyleBox["d", "TI"], " parallel to line passing through points ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " orthogonal projection of point, line, conic, curve, surface, polygonal \ line or polyhedron ", StyleBox["x ", "TI"], "onto plane ", StyleBox["p", "TI"], ". The projection of a polyhedron is composed of the projection of its \ faces. The projection of a surface is made of the projection of its \ iso-parameter curves.\n\[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox["]", "MR"], " projection of point, line, conic, curve, surface, polygonal line or \ polyhedron ", StyleBox["x ", "TI"], "onto plane ", StyleBox["p", "TI"], " with point ", StyleBox["a", "TI"], " as center of projection.\n\[FilledSmallSquare]", StyleBox[" Project[", "MR"], StyleBox["x", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], " projection of point, line, conic, curve, surface, polygonal line or \ polyhedron ", StyleBox["x ", "TI"], "onto plane ", StyleBox["p", "TI"], " parallel to line passing through points ", StyleBox["a", "TI"], " and ", StyleBox["b", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Affine", ButtonData:>{"Affine"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Cylinder", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Desargues", ButtonData:>{"Desargues"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Normals", ButtonData:>{"Normals"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.103", "Project"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Project"], Cell[TextData[{ "Orthogonal projection of point ", StyleBox["a", "TI"], " onto line ", StyleBox["d", "TI"], ". " }], "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(\(d = CLine[2, 1, 0];\)\), "\[IndentingNewLine]", \(\(a = CPoint[1, 0];\)\), "\[IndentingNewLine]", \(m = Projection[a, d]\), "\[IndentingNewLine]", \(\(Draw[Blue, d, a, Red, m];\)\)}], "Input", CellTags->"Project"], Cell[TextData[{ "Orthogonal p", "rojection of point ", StyleBox["a", "TI"], " onto ellipse ", StyleBox["e", "TI"], ". " }], "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(e = Conic[2, 1]; \), "\[IndentingNewLine]", \(a = CPoint[1, 0]; \), "\[IndentingNewLine]", \(m = Projection[a, e]\), "\[IndentingNewLine]", \(Draw[Blue, e, a, Red, m]; \)}], "Input", CellTags->"Project"], Cell[TextData[{ "Projection of line ", StyleBox["d", "TI"], " onto plane ", StyleBox["p", FontSlant->"Italic"], " parallel to line ", StyleBox["mn", "TI"], ". " }], "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(\({a, b, m, n} = CPoint[{0, 1, 2, 1}, {0, 0, 2, 0}, {0, 0, 1, 1}];\)\), "\[IndentingNewLine]", \(\(p = CPlane[1, 1, 1, \(-1\)];\)\), "\[IndentingNewLine]", \(\(d = ELine[a, b];\)\), "\[IndentingNewLine]", \({a1, d1} = Project[{a, d}, p, m, n]\), "\[IndentingNewLine]", \(\(s = Segment[m, n];\)\), "\[IndentingNewLine]", \(\(Draw3D[Legend[{"\", "\"}, {d, p}], Blue, a, b, d, Arrow@s, p, Red, a1, d1];\)\)}], "Input", CellTags->"Project"], Cell[TextData[{ "Orthogonal p", "rojection of the ellipsoid of semi-axes (1, 1, 2) onto the vertical plane \ ", StyleBox["p", "TI"], ". " }], "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(\(e = Quadric[1, 1, 2];\)\), "\[IndentingNewLine]", \(\(p = CPlane[1, 0, 0, 3];\)\), "\[IndentingNewLine]", \(ep = Project[e, p]\), "\[IndentingNewLine]", \(\(Draw3D[Blue, e, Red, ep];\)\)}], "Input", CellTags->"Project"], Cell["\<\ Projection of the helix (cos t, sin t, t) onto the vertical plane passing \ through Ox with point (2, 2, 5) as center of projection. \ \>", "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(hel = PPoint[Cos[#] &, Sin[#] &, # &, PRange \[Rule] {0, 2 Pi, 25}]; \), "\[IndentingNewLine]", \(a = CPoint[2, 2, 5]; \), "\[IndentingNewLine]", \(p = CPlane[0, 1, 0, 0]; \), "\[IndentingNewLine]", \(help = Project[hel, p, a]\), "\[IndentingNewLine]", \(co = Cone[a, help]; \), "\[IndentingNewLine]", \(Draw3D[Green, co, Blue, AbsoluteThickness[2], a, hel, Red, help]; \)}], "Input", CellTags->"Project"], Cell[TextData[{ "Projection of ellipse ", StyleBox["c", FontSlant->"Italic"], " ", "onto the vertical plane xOz with point (1, 1, 2) as center of projection. \ " }], "ExampleText", CellTags->"Project"], Cell[BoxData[{ \(\(c = CConic[Conic[1, 2], CPlane[1, 1, 1, 0]];\)\), "\[IndentingNewLine]", \(\(a = CPoint[1, 1, 2];\)\), "\[IndentingNewLine]", \(\(m = Pointer[c, 1];\)\), "\[IndentingNewLine]", \(\(p = CPlane[0, 1, 0, 0];\)\), "\[IndentingNewLine]", \(pa = Project[c, p, a]\), "\[IndentingNewLine]", \(\(s = Cone[a, pa];\)\), "\[IndentingNewLine]", \(\(Draw3D[Paint[s, Blue], Thickness[ .01], Magenta, c, Red, pa];\)\)}], "Input", CellTags->"Project"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Pyramid", "ObjectName", CellTags->{"Geo.104", "Pyramid"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Pyramid[", "MR"], StyleBox["m", "TI"], StyleBox[",", "MR"], StyleBox["p", "TI"], StyleBox["]", "MR"], " pyramid of vertex ", StyleBox["a ", "TI"], "and base the polygonal line ", StyleBox["p", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Tetrahedron", ButtonData:>{"Tetrahedron"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.104", "Pyramid"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"Pyramid"], Cell[TextData[{ "Pyramid whose vertex is located on ", StyleBox["Ox ", FontSlant->"Italic"], "and base is a quadrangle in the plane ", StyleBox["x", FontSlant->"Italic"], " = 0." }], "ExampleText", CellTags->"Pyramid"], Cell["\<\ Needs[\"Geometrica`Geometrica05`\"]; {a,b,c,d}=CPoint[0,{1,2,-3,-4},{2,3,4,1}]; v=CPoint[2,0,0] s=Close@Segment[a,b,c,d]; py=Pyramid[v,s]; Draw3D[Paint[s,Blue],Blue,v,Red,py];\ \>", "Input", CellTags->"Pyramid"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["PyramidQ", "ObjectName", CellTags->{"Geo.96", "PyramidQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" PyramidQ[", "MR"], StyleBox["s", "TI"], StyleBox["]", "MR"], " tests if solid ", StyleBox["s", "TI"], StyleBox[" ", "MR"], "is a pyramid.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See: ", ButtonBox["Pyramid", ButtonData:>{"Pyramid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Tetrahedron", ButtonData:>{"Tetrahedron"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.96", "PyramidQ"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"PyramidQ"], Cell["Test applied to a pyramid with a pentagonal base.", "ExampleText", CellTags->"PyramidQ"], Cell[TextData[{ "Needs[\"Geometrica`", "Geometrica05", "`\"];\n", Cell[BoxData[{ \(\(py = Pyramid[CPoint[0, 0, 1], To3D@RegularPolygon[5]];\)\), "\n", \(PyramidQ[py]\)}], "Input", CellLabel->"In[65]:="] }], "Input", CellTags->"PyramidQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadraticQ", "ObjectName", CellTags->{"Geo.72", "QuadraticQ"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadraticQ[", "MR"], StyleBox["poly", "TI"], StyleBox[", {", "TI", FontSlant->"Plain"], StyleBox["x", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["y", "TI"], StyleBox["}", "TI", FontSlant->"Plain"], StyleBox["]", "MR"], "tests if polynomial ", StyleBox["poly", FontSlant->"Italic"], " is a quadratic function of ", StyleBox["x", FontSlant->"Italic"], " and ", StyleBox["y", FontSlant->"Italic"], ". \n\[FilledSmallSquare]", StyleBox[" QuadraticQ[", "MR"], StyleBox["a", "TI"], StyleBox[", {", "TI", FontSlant->"Plain"], StyleBox["x", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["y", "TI"], StyleBox["}", "TI", FontSlant->"Plain"], StyleBox["]", "MR"], "tests if each coordinate of cartesian point ", StyleBox["a", FontSlant->"Italic"], " is a quadratic function of ", StyleBox["x", FontSlant->"Italic"], " and ", StyleBox["y", FontSlant->"Italic"], ". Some but not all components may be linear or constant. \n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CylinderQ", ButtonData:>{"Cylinder"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.72", "QuadraticQ"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadraticQ"], Cell["Test for points on a parabolic cylinder. ", "ExampleText", CellTags->"QuadraticQ"], Cell[BoxData[ \(\(Needs["\"];\)\)], "Input", CellTags->"QuadraticQ"], Cell[BoxData[{ \(m = ParabolicCylinder[]; \), "\[IndentingNewLine]", \(a = Pointer[m, u, v]\), "\[IndentingNewLine]", \(QuadraticQ[a, {u, v}]\)}], "Input", CellTags->"QuadraticQ"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Quadric", "ObjectName", CellTags->{"Geo.105", "Quadric"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], StyleBox["a", "TI"], StyleBox[",", "MR"], StyleBox["b", "TI"], StyleBox[",", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], " ellipsoid or hyperboloid of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], " + ", StyleBox["Sign[", "MR"], StyleBox["b", "TI"], StyleBox["]", "MR"], Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], "+ ", StyleBox["Sign[", "MR"], StyleBox["c", "TI"], StyleBox["]", "MR"], Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], " = 1.\n\[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], StyleBox["c", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " quadric of revolution generated by rotation of 3D conic ", StyleBox["c", "TI"], " about its focal axis. \n\[FilledSmallSquare]", StyleBox[" FocalAxis \[Rule] ", "MR"], StyleBox["v", "TI"], " if ", StyleBox["v", "TI"], " is ", StyleBox["True", FontSlant->"Italic"], " (default), quadric of revolution generated by rotation of 3D conic ", StyleBox["c", "TI"], " about its focal axis; if ", StyleBox["v", "TI"], " is ", StyleBox["False", FontSlant->"Italic"], ", quadric of revolution generated by rotation of ", StyleBox["c", "TI"], " about its non-focal axis.\n\[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[",", "MR"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], StyleBox[",", "MR"], StyleBox["d", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["]", "MR"], " quadric of revolution of foci ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], " and ", Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ". \n\tIf ", StyleBox["d", "TI"], " > ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ", ellipsoid of points ", StyleBox["m ", "TI"], "satisfying ", StyleBox["m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[" + m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], " = ", StyleBox["d", "TI"], ". \n\tIf ", StyleBox["d", "TI"], " = ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ", segment ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ". \n\tIf ", StyleBox["d", "TI"], " < ", Cell[BoxData[ \(TraditionalForm\`f\_1\)]], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], ", hyperboloid of two sheets whose points ", StyleBox["m ", "TI"], "satisfy |", StyleBox["m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_1\)]], StyleBox[" - m", "TI"], Cell[BoxData[ \(TraditionalForm\`f\_2\)]], "| = ", StyleBox["d", "TI"], ".\n\[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], StyleBox["f, p", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["] ", "MR"], "paraboloid of revolution of focus ", StyleBox["f", "TI"], " and directrix plane ", StyleBox["p", "TI"], ". \n\[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], StyleBox["f, p, e", "TI"], StyleBox[",", "MR"], StyleBox["option", "TI"], StyleBox["] ", "MR"], "quadric of revolution of focus ", StyleBox["f", "TI"], ", directrix the plane ", StyleBox["p", "TI"], " and eccentricity ", StyleBox["e ", "TI"], "whose points ", StyleBox["m ", "TI"], "satisfy ", Cell[BoxData[ \(TraditionalForm\`mf\/\(dis(m, p)\)\)]], "= e. \n\t0 < ", StyleBox["e", "TI"], " < 1 \[Rule] ellipsoid. ", StyleBox["e", "TI"], " = 1 \[Rule] paraboloid. ", StyleBox["e", "TI"], " > 1 \[Rule] hyperboloid.\n\tWhen the eccentricity is zero, the quadric is \ a sphere of undefined radius and a message is returned.\n\ \[FilledSmallSquare]", StyleBox[" Quadric[", "MR"], StyleBox["p", "TI"], StyleBox[",", "MR"], StyleBox["q", "TI"], StyleBox[",", "MR"], StyleBox["r", "TI"], StyleBox["]", "MR"], " hyperbolic paraboloid defined by the planes ", StyleBox["p", "TI"], ", ", StyleBox["q", "TI"], " and ", StyleBox["r", "TI"], " of respective coefficients ( ", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_1\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`h\_1\)]], "), ( ", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`h\_2\)]], "), ( ", Cell[BoxData[ \(TraditionalForm\`u\_3\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`v\_3\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`w\_3\)]], ",", StyleBox[" ", "MR"], Cell[BoxData[ \(TraditionalForm\`h\_3\)]], "). The equation of the paraboloid is ", Cell[BoxData[ \(TraditionalForm\`u\_1\)]], StyleBox["x+", "TI"], Cell[BoxData[ \(TraditionalForm\`v\_1\)]], StyleBox["y+", "TI"], Cell[BoxData[ \(TraditionalForm\`w\_1\)]], StyleBox["z+", "TI"], Cell[BoxData[ \(TraditionalForm\`h\_1\)]], " = ( ", Cell[BoxData[ \(TraditionalForm\`u\_2\)]], StyleBox["x+", "TI"], Cell[BoxData[ \(TraditionalForm\`v\_2\)]], StyleBox["y+", "TI"], Cell[BoxData[ \(TraditionalForm\`w\_2\)]], StyleBox["z", "TI"], "+", Cell[BoxData[ \(TraditionalForm\`h\_2\)]], ") ( ", Cell[BoxData[ \(TraditionalForm\`u\_3\)]], StyleBox["x+", "TI"], Cell[BoxData[ \(TraditionalForm\`v\_3\)]], StyleBox["y+", "TI"], Cell[BoxData[ \(TraditionalForm\`w\_3\)]], StyleBox["z+", "TI"], Cell[BoxData[ \(TraditionalForm\`h\_3\)]], ").\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Conic", ButtonData:>{"Conic"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Intersections", ButtonData:>{"Intersections"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Paraboloid", ButtonData:>{"Paraboloid"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SolidOfRevolution", ButtonData:>{"SolidOfRevolution"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.105", "Quadric"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"Quadric"], Cell[TextData[{ "A hyperboloid of one sheet is defined by the half-axis lengths ", StyleBox["a", FontSlant->"Italic"], ", ", StyleBox["b", FontSlant->"Italic"], ", ", StyleBox["c", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"Quadric"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\n", \(q = Quadric[1, \(-2\), 3]\), "\n", \(\(Draw3D[Blue, a, b, Paint[q]];\)\)}], "Input"], Cell["\<\ An ellipsoid of revolution is defined by the sum of the distances of a point \ to its foci. Note that a quadric that is not of revolution has no foci.\ \>", "ExampleText", CellTags->"Quadric"], Cell[TextData[{ "{a,b}=CPoint[{-1,1},0,0];\n", Cell[BoxData[ \(q = Quadric[a, b, 3]\)], "Input"], "\nDraw3D[Blue,a,b,Red,q];" }], "Input", CellTags->"Quadric"], Cell[TextData[{ "A hyperboloid of two sheets is created by rotation of a hyperbola about \ its focal axis. Note that the two branches of the hyperbola are drawn by \ specifying arguments of ", StyleBox["DrawRange", FontSlant->"Italic"], " that do not straddle 0." }], "ExampleText", CellTags->"Quadric"], Cell[TextData[{ "p=CPlane[1,1,1,0];\nh=Conic[CPoint[1,0],CLine[1,0,0],2];\nc=CConic[h,p];\n\ ", Cell[BoxData[ \(q1 = Quadric[c]\)], "Input"], "\nDraw3D[Blue,DrawRange[1/5,5],c,DrawRange[-5,-1/5],c,Paint[q1]];" }], "Input", CellTags->"Quadric"], Cell[TextData[{ "The next example illustrates the role of the option ", StyleBox["FocalAxis", FontSlant->"Italic"], "." }], "ExampleText", CellTags->"Quadric"], Cell["\<\ q2=Quadric[c,FocalAxis -> False] Draw3D[Blue,DrawRange[1/8,8],c,DrawRange[-8,-1/8],c,Paint[q2], ViewPoint->{-2.130, -2.003, -1.704}];\ \>", "Input", CellTags->"Quadric"], Cell["\<\ A paraboloid of revolution is easily determined by focus and directrix. \ \>", "ExampleText", CellTags->"Quadric"], Cell["\<\ m=CPoint[1,0,0]; p=CPlane[1,1,1,0]; q=Quadric[m,p] Draw3D[Blue,m,Paint[p,Blue],Red,q,LineOrigin[m],Green,Axes[q]];\ \>", "Input", CellLabel->"In[48]:=", CellTags->"Quadric"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricCone", "ObjectName", CellTags->{"Geo.16", "QuadricCone"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricCone[]", "MR"], " quadric cone of equation ", Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["2", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " - ", StyleBox["3", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], StyleBox[" = ", "TI"], "0 where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric.\n\[FilledSmallSquare]", StyleBox[" QuadricCone[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox["]", "MR"], " quadric cone of equation ", Cell[BoxData[ \(TraditionalForm\`\((x\/a)\)\^2\)]], "+ ", Cell[BoxData[ \(TraditionalForm\`\((y\/b)\)\^2\)]], " - ", Cell[BoxData[ \(TraditionalForm\`\((z\/c)\)\^2\)]], StyleBox[" = ", "TI"], "0, with ", StyleBox["a", FontSlant->"Italic"], ", ", StyleBox["b", FontSlant->"Italic"], ", ", StyleBox["c", FontSlant->"Italic"], " non zero.\n\[FilledSmallSquare]", StyleBox[" QuadricCone[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " output of ", StyleBox["CQuadric", "MR"], ", ", StyleBox["Quadric", "MR"], " or ", StyleBox["Cone ", "MR"], "which identifies the nature of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0.\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Quadric", ButtonData:>{"Quadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Cone", ButtonData:>{"Cone"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricCone"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadricCone"], Cell["\<\ The first definition generates quickly an arbitrary quadric cone\ \>", "ExampleText", CellTags->"QuadricCone"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(q = QuadricCone[]\), "\[IndentingNewLine]", \(\(Draw3D@Paint[q];\)\)}], "Input", CellTags->"QuadricCone"], Cell["\<\ The cone can be transformed, for instance by symmetry about a plane. \ \>", "ExampleText", CellTags->"QuadricCone"], Cell[BoxData[{ \(p = CPlane[1, 0, 0, \(-4\)]; \), "\[IndentingNewLine]", \(q1 = Image[q, p]; \), "\[IndentingNewLine]", \(Draw3D[Blue, q, d, Paint[p, Green], Red, q1]; \)}], "Input", CellTags->"QuadricCone"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricAxes", "ObjectName", CellTags->{"Geo.16", "QuadricAxes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricAxes \[Rule] ", "MR"], StyleBox["{O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["},", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " axes ", StyleBox["(", FontFamily->"Times New Roman"], StyleBox["O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[")", FontFamily->"Times New Roman"], " of the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Axes", ButtonData:>{"Axes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricAxes"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadricAxes"], Cell["Axes of a hyperboloid of one sheet.", "ExampleText", CellTags->"QuadricAxes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[5, 7, \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(ax = QuadricAxes /. qe\)}], "Input", CellTags->"QuadricAxes"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricCanonicalForm", "ObjectName", CellTags->{"Geo.16", "QuadricCanonicalForm"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" Quadric", "MR"], "CanonicalForm", StyleBox[" \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the volume limited by a quadric", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ",", StyleBox["w", FontSlant->"Italic"], ") in the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricCanonicalForm"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"QuadricCanonicalForm"], Cell["Parametric form of the interior of an ellipsoid.", "ExampleText", CellTags->"QuadricCanonicalForm"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[\(-5\), \(-7\), \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(m = QuadricCanonicalForm /. qe\)}], "Input", CellTags->"QuadricCanonicalForm"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricCenter", "ObjectName", CellTags->{"Geo.16", "QuadricCenter"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricCenter \[Rule] ", "MR"], StyleBox["C", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " center ", StyleBox["C", FontFamily->"Times New Roman", FontSlant->"Italic"], " of the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ". If the quadric has no center of symmetry, the right hand side of the \ rule is ", StyleBox["None.", FontSlant->"Italic"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricCenter"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadricCenter"], Cell["Center of a hyperboloid of one sheet.", "ExampleText", CellTags->"QuadricCenter"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[5, 7, \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(ce = QuadricCenter /. qe\)}], "Input", CellTags->"QuadricCenter"], Cell["A hyperbolic paraboloid has no center of symmetry.", "ExampleText", CellTags->"QuadricCenter"], Cell[BoxData[{ \(\(qe = QuadricElements[0, 0, 0, 0, 0, 1, 0, 0, 1, 0];\)\), "\[IndentingNewLine]", \(ce = QuadricCenter /. qe\)}], "Input", CellTags->"QuadricCenter"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricElements", "ObjectName", CellTags->{"Geo.16", "QuadricElements"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], " determines the elements of the cartesian quadric of equation\n ", StyleBox["a", "TI"], Cell[BoxData[ \(TraditionalForm\`x\^2\)]], "+ ", StyleBox["b", "TI"], Cell[BoxData[ \(TraditionalForm\`y\^2\)]], " + ", StyleBox["c", "TI"], Cell[BoxData[ \(TraditionalForm\`z\^2\)]], " + 2", StyleBox["fyz ", "TI"], "+ 2", StyleBox["gzx ", "TI"], "+ 2", StyleBox["hxy + ", "TI"], "2", StyleBox["ux + 2vy + 2wz + d = ", "TI"], "0,\n where ", StyleBox["x", FontSlant->"Italic"], ", ", StyleBox["y", FontSlant->"Italic"], ", ", StyleBox["z", FontSlant->"Italic"], " are the coordinates of a point of the quadric, in the form of a list of \ rules.\n\[FilledSmallSquare]", StyleBox[" QuadricAxes \[Rule] ", "MR"], StyleBox["{O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The axes ", StyleBox["(", FontFamily->"Times New Roman"], StyleBox["O", "MR", FontFamily->"Times New Roman"], StyleBox["x", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["y", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", O", "MR", FontFamily->"Times New Roman"], StyleBox["z", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[")", FontFamily->"Times New Roman"], " are the reference system of the quadric defined in its standard form.\n\ \[FilledSmallSquare]", StyleBox[" ", "MR"], StyleBox["Quadric", "MR", FontFamily->"Courier New"], StyleBox["CanonicalForm", FontFamily->"Courier New"], StyleBox[" \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the volume limited by a quadric", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ",", StyleBox["w", FontSlant->"Italic"], ") in the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" QuadricCanonicalViewPoint \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The default ", StyleBox["Mathematica", FontSlant->"Italic"], " view point {1.3, -2.4, 2.} ", StyleBox["is located in the standard reference frame of the quadric and {", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["c", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}is the view point in the original cartesian frame of the quadric \ as used in ", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], StyleBox["Draw3D", "TI", FontFamily->"Courier", FontSlant->"Plain"], ".\n\[FilledSmallSquare]", StyleBox[" QuadricCenter \[Rule] ", "MR"], StyleBox["C", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" or ", "MR", FontFamily->"Times New Roman"], StyleBox["None", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[".", "MR"], " ", StyleBox["C", FontSlant->"Italic"], " is the center of symmetry of the quadric if it exists. Otherwise ", StyleBox["None", FontSlant->"Italic"], " is returned.\n\[FilledSmallSquare]", StyleBox[" QuadricGenerators \[Rule] {}, ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["} or {", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, \ d\_2\)]], StyleBox["}", "MR", FontFamily->"Times New Roman"], StyleBox[".", "MR"], " Ellipsoid, elliptic paraboloid and hyperboloid of two sheets are not \ ruled and the list of quadric generators is empty in that case. Hyperboloid \ of one sheet, cone and cylinder are generated by one family of lines ", StyleBox["d", FontSlant->"Italic"], ". The hyperbolic paraboloid is generated by two families ", Cell[BoxData[ \(TraditionalForm\`d\_1\ and\ d\_2\)]], " of lines. Each family of generators is given as a pure function and ", StyleBox["d", FontSlant->"Italic"], "[", StyleBox["u", FontSlant->"Italic"], "] is the generator passing through the point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], "). The parametric form of the quadric is specific to each type of quadric.\ \n\[FilledSmallSquare]", StyleBox[" QuadricPoint \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the quadric", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ") on the quadric.\n\[FilledSmallSquare]", StyleBox[" QuadricSymmetryPlanes \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["xy", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["yz", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["zx", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The planes ", StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["xy", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["yz", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ", "MR", FontFamily->"Times New Roman"], StyleBox["zx", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " are, in general, the planes of the reference system of the quadric \ defined in its standard form. In the case of the parabolic cylinder, two \ planes only are symmetry planes. The plane returned in the list may be one of \ a whole family of symmetry planes in the case of cylinders (plane \ perpendicular to the generators), quadrics of revolution (planes passing \ through the axis) and of spheres (planes passing through the center).\n\ \[FilledSmallSquare]", StyleBox[" QuadricType \[Rule] ", "MR"], StyleBox["type.", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], " The symbol ", StyleBox["type", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], " may be ", StyleBox["CEllipsoid", FontFamily->"Courier"], ", ", StyleBox["HyperboloidOfOneSheet", FontFamily->"Courier"], ", ", StyleBox["HyperboloidOfTwoSheets", FontFamily->"Courier"], ", ", StyleBox["EllipticParaboloid", FontFamily->"Courier"], ", ", StyleBox["HyperbolicParaboloid", FontFamily->"Courier"], ", ", StyleBox["QuadricCone", FontFamily->"Courier"], ", ", StyleBox["EllipticCylinder", FontFamily->"Courier"], ", ", StyleBox["HyperbolicCylinder", FontFamily->"Courier"], " or ", StyleBox["ParabolicCylinder", FontFamily->"Courier"], ". The quadratic expression which characterizes a quadric may not \ correspond to a real geometrical object and, in that case, ", StyleBox["type", FontSlant->"Italic"], " may be ", StyleBox["ImaginaryEllipsoid", FontFamily->"Courier"], ", ", StyleBox["ImaginaryQuadricCone", FontFamily->"Courier"], " or ", StyleBox["ImaginaryEllipticCylinder", FontFamily->"Courier"], ". The quadratic form may also be factorized in which case the quadric is \ degenerated into real or imaginary planes (", StyleBox["ImaginaryIntersectingPlanes", FontFamily->"Courier"], ", ", StyleBox["ImaginaryParallelPlanes", FontFamily->"Courier"], ").\n\[FilledSmallSquare]", StyleBox[" QuadricVertices \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], StyleBox["}", "TI", FontFamily->"Times New Roman", FontSlant->"Plain"], " The vertices ", StyleBox["a", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[",", "MR", FontFamily->"Times New Roman"], StyleBox[" b", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", ...", "MR", FontFamily->"Times New Roman"], " are the real intersections of the axes with the quadric.\n\ \[FilledSmallSquare]", StyleBox[" QuadricElements", "MR"], " is not ", StyleBox["Listable", FontSlant->"Italic"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["CanonicalForm", ButtonData:>{"CanonicalForm"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CanonicalViewPoint", ButtonData:>{"CanonicalViewPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["CQuadric", ButtonData:>{"CQuadric"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Axes", ButtonData:>{"Axes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Center", ButtonData:>{"Center"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Generators", ButtonData:>{"Generators"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["PPoint", ButtonData:>{"PPoint"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SymmetryPlanes", ButtonData:>{"SymmetryPlanes"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["Vertices", ButtonData:>{"Vertices"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricElements"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadricElements"], Cell["Elements of a hyperboloid of one sheet.", "ExampleText", CellTags->"QuadricElements"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[5, 7, \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(ColumnForm[qe]\)}], "Input", CellTags->"QuadricElements"], Cell["\<\ The parametric form of the hyperboloid can be inferred using the replacement \ technique. \ \>", "ExampleText", CellTags->"QuadricElements"], Cell[BoxData[ \(h1p = QuadricPoint /. qe\)], "Input", CellTags->"QuadricElements"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricGenerators", "ObjectName", CellTags->{"Geo.16", "QuadricGenerators"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricGenerators \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["d", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["} or {", "MR", FontFamily->"Times New Roman"], Cell[BoxData[ \(TraditionalForm\`d\_1, \ d\_2\)]], StyleBox["}", "MR", FontFamily->"Times New Roman"], StyleBox[".", "MR"], " Generators of the ruled quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ". If the quadric is not ruled, the list is empty", StyleBox[".", FontSlant->"Italic"], "\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Generators", ButtonData:>{"Generators"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricGenerators"}], Cell[CellGroupData[{ Cell["Examples", "ExampleSection", CellTags->"QuadricGenerators"], Cell["Generators of a hyperboloid of one sheet.", "ExampleText", CellTags->"QuadricGenerators"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[5, 7, \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \({g} = QuadricGenerators /. qe\)}], "Input", CellTags->"QuadricGenerators"], Cell["\<\ The generator passing through the points of parameters (0,v) is:\ \>", "ExampleText", CellTags->"QuadricGenerators"], Cell[BoxData[ \(g[0]\)], "Input", CellTags->"QuadricGenerators"], Cell["A hyperbolic paraboloid has two families of generators.", "ExampleText", CellTags->"QuadricGenerators"], Cell[BoxData[{ \(qe = QuadricElements[0, 0, 0, 0, 0, 1, 0, 0, 1, 0]; \), "\[IndentingNewLine]", \({g1, g2} = QuadricGenerators /. qe\)}], "Input", CellTags->"QuadricGenerators"], Cell["An ellipsoid is not a ruled surface", "ExampleText", CellTags->"QuadricGenerators"], Cell[BoxData[{ \(qe = QuadricElements[1, 2, 3, 0, 0, 0, 0, 0, 0, \(-1\)]; \), "\[IndentingNewLine]", \(g = QuadricGenerators /. qe\)}], "Input", CellTags->"QuadricGenerators"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricPoint", "ObjectName", CellTags->{"Geo.16", "QuadricPoint"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricPoint \[Rule] ", "MR"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[", parametric form ", "MR", FontFamily->"Times New Roman"], StyleBox["m", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox[" of the quadric", "MR", FontFamily->"Times New Roman"], " used by ", StyleBox["Pointer", FontFamily->"Courier"], " to locate a point of parameters (", StyleBox["u", FontSlant->"Italic"], ",", StyleBox["v", FontSlant->"Italic"], ") on the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of \n", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["Pointer", ButtonData:>{"Pointer"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricPoint"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"QuadricPoint"], Cell["Parametric form of an ellipsoid.", "ExampleText", CellTags->"QuadricPoint"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[\(-5\), \(-7\), \(-12\), 0, 0, \@3, \(-9\) - 3\ \@3, \(-5\) - 5\ \@3, 0, 24 + 14\ \@3];\)\), "\[IndentingNewLine]", \(m = QuadricPoint /. qe\)}], "Input", CellTags->"QuadricPoint"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["QuadricSymmetryPlanes", "ObjectName", CellTags->{"Geo.16", "QuadricSymmetryPlanes"}], Cell[TextData[{ "\[FilledSmallSquare]", StyleBox[" QuadricSymmetryPlanes \[Rule] ", "MR"], StyleBox["{", "MR", FontFamily->"Times New Roman"], StyleBox["p, ...", "MR", FontFamily->"Times New Roman", FontSlant->"Italic"], StyleBox["}", "MR", FontFamily->"Times New Roman"], StyleBox[", symmetry planes of", "MR", FontFamily->"Times New Roman"], " the quadric of coordinates ", StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], " in the output of ", StyleBox["QuadricElements[", "MR"], StyleBox["a", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["b", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["c", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["f", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["g", "TI"], StyleBox[", ", "TI", FontSlant->"Plain"], StyleBox["h, u, v, w, d", "TI"], StyleBox["]", "MR"], ".\n\[FilledSmallSquare]", StyleBox[" ", "MR"], "See also: ", ButtonBox["QuadricElements", ButtonData:>{"QuadricElements"}, ButtonStyle->"AddOnsLink"], ", ", ButtonBox["SymmetryPlanes", ButtonData:>{"SymmetryPlanes"}, ButtonStyle->"AddOnsLink"], "." }], "Notes", CellTags->{"Geo.16", "QuadricSymmetryPlanes"}], Cell[CellGroupData[{ Cell["Example", "ExampleSection", CellTags->"QuadricSymmetryPlanes"], Cell["Symmetry planes of an ellipsoid.", "ExampleText", CellTags->"QuadricSymmetryPlanes"], Cell[BoxData[{ \(\(Needs["\"];\)\), "\[IndentingNewLine]", \(\(qe = QuadricElements[\(-5\), \(-7\), \(-12\), 0, 0, \@3, \(-9\) - 3