(*^ ::[ Information = "This is a Mathematica Notebook file. It contains ASCII text, and can be transferred by email, ftp, or other text-file transfer utility. It should be read or edited using a copy of Mathematica or MathReader. If you received this as email, use your mail application or copy/paste to save everything from the line containing (*^ down to the line containing ^*) into a plain text file. On some systems you may have to give the file a name ending with ".ma" to allow Mathematica to recognize it as a Notebook. The line below identifies what version of Mathematica created this file, but it can be opened using any other version as well."; FrontEndVersion = "NeXT Mathematica Notebook Front End Version 2.2"; NeXTStandardFontEncoding; fontset = title, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, noPageBreakInGroup, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, L1, e6, 14, "Times"; ; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, L1, a20, 18, "Times"; ; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, L1, a15, 14, "Times"; ; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, L1, a12, 12, "Times"; ; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L-5, 12, "Courier"; ; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, R65535, L-5, 12, "Courier"; ; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, "Courier"; ; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, B65535, L-5, 12, "Courier"; ; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, L1, 12, "Courier"; ; fontset = name, inactive, noPageBreakInGroup, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, B65535, L1, 10, "Times"; ; fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = leftheader, 12; fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, L1, 12; fontset = leftfooter, 12; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12; paletteColors = 128; automaticGrouping; currentKernel; ] :[font = title; inactive; preserveAspect; startGroup] Symbolic Geometry, Golden Spiral and Descartes-Geometry ;[s] 3:0,0;37,1;56,2;58,-1; 3:1,21,16,Times,1,24,0,0,0;1,22,17,Times,3,24,0,0,0;1,21,16,Times,1,24,0,0,0; :[font = subtitle; inactive; preserveAspect] Denis Monasse :[font = subsubtitle; inactive; preserveAspect] Mathsoft Overseas, CP 641, 1211 Geneva 3 (Switzerland) ;[s] 1:0,0;55,-1; 1:1,16,12,Times,2,18,0,0,0; :[font = text; inactive; preserveAspect; center] To be published in Mathematica in Education ;[s] 4:0,0;19,1;30,2;31,3;43,-1; 4:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0; :[font = subsection; inactive; Cclosed; preserveAspect; startGroup] Availability :[font = text; inactive; preserveAspect; endGroup] Descartes is a registered trade mark of Mathsoft Overseas, Inc. Copyright Ó 1992, by Mathsoft Overseas, Inc. The program Descartesā-Geometry is available on any platform at 30 % of the Mathematica price. For information and orders, please contact: Mathsoft Overseas, cp 641, 1211 Geneva 3 (Switzerland). Tel: 41 22 / 346 52 60. Fax: 41 22 / 346 59 39 ;[s] 7:0,0;74,1;76,2;131,3;132,4;186,5;198,6;354,-1; 7:1,16,12,Times,0,18,0,0,0;1,0,0,Symbol,0,18,0,0,0;1,16,12,Times,0,18,0,0,0;1,0,0,Symbol,0,18,0,0,0;1,16,12,Times,0,18,0,0,0;1,16,12,Times,2,18,0,0,0;1,16,12,Times,0,18,0,0,0; :[font = subsection; inactive; preserveAspect; startGroup] Introduction :[font = text; inactive; preserveAspect; endGroup] In the seventeenth century, two french mathematicians, Pierre de Fermat and RenŽ Descartes, realized that algebra and geometry could be unified in a single science that was called analytic geometry. In fact, the recognition for the foundation of the new science went to Descartes although Fermat's work was a little earlier. The reason is due to the formalism used by Descartes who adopted the notation of modern algebra whereas Fermat had kept the cumbersome greek notations. Today, we can resume the treatment of analytic geometry in the context of the modern computers and information languages among which Mathematica is especially well adapted with its outstanding graphics facilities and its functional programming. Let us start :[font = section; inactive; preserveAspect; startGroup] Introduction :[font = text; inactive; preserveAspect] Symbolic algebra becomes familiar to a growing population of students and professional users but symbolic geometry is just emerging from the shade. Descartes-Geometry has been developed to cover all the domains of Euclidean geometry from graphics art to CAD, desktop publishing and, of course, education. The present package deals with 2D geometry, the 3D part being still under testing. It is written as a Mathematica library program and can be considered as an advanced language built on Mathematica graphics functions. There are specific virtues to symbolic geometry: the calculations being exact, the figures are rigorous and theorems can be proven or, at least, suggested by the constructions. Another aspect is the generalization of functional programming which can define families of figures. The example chosen here to illustrate this technique is the golden spiral which is made of arcs of circles deduced from each other by a set of given rules. Fractal geometry is one among many other fields of application which can be contemplated: wall papers, mosaics, molecular modeling, integrated electronic circuits, etc. Step by step, we shall show how to specify the relevant geometric objects. Geometric functions will then be coded to generate the spiral. ;[s] 9:0,0;153,1;171,2;413,3;424,4;497,5;508,6;867,7;880,8;1275,-1; 9:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; startGroup] (* This code is used to produce Fig.1 and should not be reproduced inthe paper *) o=POINT[0,0]; a1=POINT[1,0]; x1=POINT[0,1/2]; a2=POINT[0,(1+Sqrt[5])/2]; an=Angle[x1.a1,x1.a2]; x2=POINT[-(1+Sqrt[5])/4,0]; a3=POINT[-1-(1+Sqrt[5])/2,0]; x3=POINT[0,(-1-(1+Sqrt[5])/2)/2]; a4=POINT[0,-2-Sqrt[5]]; Draw[PointSize[.02], {a1,"A1",{-1,2}},{x1,"X1",{-2,1}},{a2,"A2",{-2,-1}}, {x2,"X2",{1,-2}},{a3,"A3",{1,-2}}, {x3,"X3",{-2,-1}},{a4,"A4",{-2,-1}},Red, ARC[x1,a1,an],ARC[x2,a1,Pi],ARC[x3,a2,Pi], Green, o.a1,o.x1,LINE[a1,a2],LINE[x2,x2>(a1.a2)], Interval->{{-3,2},{-5,2}}] ;[s] 2:0,0;81,1;599,-1; 2:1,11,8,Times,0,12,0,0,0;1,10,8,Courier,1,12,0,0,0; :[font = output; output; inactive; preserveAspect; endGroup; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = section; inactive; pageBreak; preserveAspect; startGroup] Definition of the Golden Spiral :[font = text; inactive; preserveAspect] The first steps of the construction of a golden spiral are illustrated in Fig.1. a. A1 is the point of coordinates (1,0) and X1 the point of coordinates (0,1/2). The arc of circle of center X1 passing through A1 intersects the upper y-axis at A2. b. The point X2 lies on the left hand part of the x-axis at a distance OA2/2 from the origin O. The half circle of center X2 starting at A1 intersects the left hand part of the x-axis at A3. That arc of circle passes through A2 but the property is not obvious. This is why the segment A1A2 and its perpendicular bisector have been drawn to suggest a proof of the property. In passing, the figure drawn with the Descartes-Geometry command Draw repects all the peculiarities of the construct: this is the WYWIWYG (What You Want Is What You Get) aspect of Descartes-Geometry. c. X3 on the lower part of the y-axis is at the distance OA3/2 from O. The half circle centered at X3 and starting at A2 cuts the y-axis at A4. The property noted in b is still valid: the new circle passes through A3. d. The process is then repeated indefinitely. ;[s] 49:0,0;46,1;59,2;96,3;97,4;137,5;138,6;202,7;203,8;221,9;222,10;255,11;256,12;278,13;279,14;337,15;338,16;387,17;388,18;402,19;403,20;452,21;453,22;490,23;491,24;551,25;552,26;553,27;555,28;676,29;694,30;703,31;707,32;768,33;775,34;818,35;836,36;849,37;850,38;904,39;905,40;945,41;946,42;964,43;965,44;986,45;987,46;1060,47;1061,48;1115,-1; 49:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0;1,5,4,Times,64,6,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 205; pictureHeight = 287] %! %%Creator: Mathematica %%AspectRatio: 1.4 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.595238 0.190476 0.985714 0.190476 [ [(A1)] 0.78571 0.98571 -1 2 Msboxa [(X1)] 0.59524 1.08095 -2 1 Msboxa [(A2)] 0.59524 1.29391 -2 -1 Msboxa [(X2)] 0.44114 0.98571 1 -2 Msboxa [(A3)] 0.09656 0.98571 1 -2 Msboxa [(X3)] 0.59524 0.73638 -2 -1 Msboxa [(A4)] 0.59524 0.17884 -2 -1 Msboxa [ 0 0 0 0 ] [ 1 1.4 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave gsave 0.02 setlinewidth 0.78571 0.98571 Mdot [(A1)] 0.78571 0.98571 -1 2 Mshowa grestore gsave 0.02 setlinewidth 0.59524 1.08095 Mdot [(X1)] 0.59524 1.08095 -2 1 Mshowa grestore gsave 0.02 setlinewidth 0.59524 1.29391 Mdot [(A2)] 0.59524 1.29391 -2 -1 Mshowa grestore gsave 0.02 setlinewidth 0.44114 0.98571 Mdot [(X2)] 0.44114 0.98571 1 -2 Mshowa grestore gsave 0.02 setlinewidth 0.09656 0.98571 Mdot [(A3)] 0.09656 0.98571 1 -2 Mshowa grestore gsave 0.02 setlinewidth 0.59524 0.73638 Mdot [(X3)] 0.59524 0.73638 -2 -1 Mshowa grestore gsave 0.02 setlinewidth 0.59524 0.17884 Mdot [(A4)] 0.59524 0.17884 -2 -1 Mshowa grestore 1 0 0 setrgbcolor 0.004 setlinewidth newpath 0.59524 1.08095 0.21296 -26.5651 90 arc stroke newpath 0.44114 0.98571 0.34457 0 180 arc stroke newpath 0.59524 0.73638 0.55753 90 270 arc stroke 0 1 0 setrgbcolor 0.02381 0.98571 moveto 0.97619 0.98571 lineto stroke 0.59524 0.03333 moveto 0.59524 1.36667 lineto stroke 0.78571 0.98571 moveto 0.59524 1.29391 lineto stroke 0.44114 0.98571 moveto 0.69048 1.13981 lineto stroke grestore 0 0 moveto 1 0 lineto 1 1.4 lineto 0 1.4 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = text; inactive; preserveAspect; center] Fig.1 Starting the construction of a golden spiral ;[s] 2:0,0;37,1;50,-1; 2:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0; :[font = text; inactive; preserveAspect; endGroup] The golden spiral being defined by a recursive process, it will be drawn using: i. geometric objects : points, straight lines, circles, arcs of circle; ii. geometric transformations : rotation and homothety; iii.geometric functions to define families of elements, iv.geometric arrays to construct the set of arcs of circle. ;[s] 9:0,0;88,1;105,2;161,3;186,4;217,5;236,6;272,7;288,8;329,-1; 9:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = section; inactive; preserveAspect; startGroup] Geometric objects :[font = text; inactive; preserveAspect] There are seven basic geometric objects in Descartes-Geometry: ARC, CIRCLE, LINE, POINT, POLYGON, STRAIGHT and VECTOR. For the present exercise, we shall consider ARC, CIRCLE, POINT and STRAIGHT only. ;[s] 3:0,0;48,1;66,2;208,-1; 3:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = subsection; inactive; preserveAspect; startGroup] Point :[font = text; inactive; preserveAspect] A point in the plane is characterized by its two coordinates and the head POINT. The origin, the points of coordinates (1,0) and (0,1/2) are respectively :[font = input; preserveAspect] o=POINT[0,0]; m=POINT[1,0]; p=POINT[0,1/2]; :[font = text; inactive; preserveAspect] and they are represented and named using Draw ;[s] 2:0,0;41,1;46,-1; 2:1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0; :[font = input; preserveAspect; startGroup] Draw[Red,PointSize[.02],{o,"O"},{m,"M"},{p,"P"}] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 281; pictureHeight = 140] %! %%Creator: Mathematica %%AspectRatio: 0.5 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.952381 0.0119048 0.952381 [ [(O)] 0.02381 0.0119 -1 -1 Msboxa [(M)] 0.97619 0.0119 -1 -1 Msboxa [(P)] 0.02381 0.4881 -1 -1 Msboxa [ 0 0 0 0 ] [ 1 0.5 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave 1 0 0 setrgbcolor gsave 0.02 setlinewidth 0.02381 0.0119 Mdot [(O)] 0.02381 0.0119 -1 -1 Mshowa grestore gsave 0.02 setlinewidth 0.97619 0.0119 Mdot [(M)] 0.97619 0.0119 -1 -1 Mshowa grestore gsave 0.02 setlinewidth 0.02381 0.4881 Mdot [(P)] 0.02381 0.4881 -1 -1 Mshowa grestore grestore 0 0 moveto 1 0 lineto 1 0.5 lineto 0 0.5 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = text; inactive; preserveAspect; endGroup] The Mathematica directive PointSize has been added to improve the legibility of the points. ;[s] 5:0,0;4,1;15,2;26,3;35,4;92,-1; 5:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = subsection; inactive; preserveAspect; startGroup] Straight line :[font = subsubsection; inactive; preserveAspect; startGroup] Basic form :[font = text; inactive; preserveAspect] The basic form of a straight line is STRAIGHT[u,v,w] where u, v, w are the coefficients of the equation of the straight line :[font = text; inactive; preserveAspect; center] u x + v y + w = 0 :[font = text; inactive; preserveAspect] (x,y ) being the coordinates of a point on the straight line. :[font = input; preserveAspect; endGroup] ox=STRAIGHT[0,1,0]; oy=STRAIGHT[1,0,0]; :[font = subsubsection; inactive; preserveAspect; startGroup] Using two points :[font = text; inactive; preserveAspect] It is very frequent to have a straight line defined by two points. The abbreviation for this function is ".". The line which joins M to P is ;[s] 3:0,0;111,1;112,2;146,-1; 3:1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; startGroup] d=m.p :[font = output; output; inactive; preserveAspect; endGroup] STRAIGHT[-1/2, -1, 1/2] ;[o] 1 1 STRAIGHT[-(-), -1, -] 2 2 :[font = text; inactive; preserveAspect] All the objects defined up to now can be plotted: :[font = input; preserveAspect; startGroup] Draw[PointSize[.02], {o,"O",{1,1}},{m,"M"},{p,"P",{1,1}},Red, ox,oy,d] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 282; pictureHeight = 282] %! %%Creator: Mathematica %%AspectRatio: 1 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.5 0.47619 0.5 0.47619 [ [(O)] 0.5 0.5 1 1 Msboxa [(M)] 0.97619 0.5 -1 -1 Msboxa [(P)] 0.5 0.7381 1 1 Msboxa [ 0 0 0 0 ] [ 1 1 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave gsave 0.02 setlinewidth 0.5 0.5 Mdot [(O)] 0.5 0.5 1 1 Mshowa grestore gsave 0.02 setlinewidth 0.97619 0.5 Mdot [(M)] 0.97619 0.5 -1 -1 Mshowa grestore gsave 0.02 setlinewidth 0.5 0.7381 Mdot [(P)] 0.5 0.7381 1 1 Mshowa grestore 1 0 0 setrgbcolor 0.004 setlinewidth 0.02381 0.5 moveto 0.97619 0.5 lineto stroke 0.5 0.02381 moveto 0.5 0.97619 lineto stroke 0.02381 0.97619 moveto 0.02381 0.97619 lineto 0.97619 0.5 lineto stroke grestore 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = text; inactive; preserveAspect; endGroup; endGroup] In order to avoid letters to be crossed by lines, the placing of the labels O and P in the representation of the points o and p has been explicitly specified with {1,1}. :[font = subsection; inactive; preserveAspect; startGroup] Circle :[font = subsubsection; inactive; preserveAspect; startGroup] Using center and point :[font = text; inactive; preserveAspect] The geometric object related to a circle has the head CIRCLE and the coordinates of the center and the radius as arguments. More often, the circle is defined by its center and a point, the abbreviated command is then "<" which reminds the compass. The circle c of center P passing through M is ;[s] 7:0,0;59,1;65,2;223,3;224,4;264,5;266,6;299,-1; 7:1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; startGroup] c=pFalse] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 282; pictureHeight = 188] %! %%Creator: Mathematica %%AspectRatio: 0.66915 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.308814 0.0142059 0.477078 0.0142059 [ [ 0 0 0 0 ] [ 1 0.669153 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave gsave gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.29732 0.47708 0.0257 0 180 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.45848 0.04158 90 270 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.3389 0.47708 0.06728 180 360 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.52576 0.10886 -90 90 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.23004 0.47708 0.17614 0 180 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.34962 0.285 90 270 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.51504 0.47708 0.46115 180 360 arc stroke grestore grestore grestore 0 0 moveto 1 0 lineto 1 0.66915 lineto 0 0.66915 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = text; inactive; preserveAspect] The two end arcs have now to be added. When there is no regular law to construct a figure, it is still possible to define geometric arrays by giving the arguments in matrix form. Here, the head of the command is Arc and each row contains the center, the starting point, the length and the name of the end points of a given arc. ;[s] 5:0,0;171,1;178,2;217,3;220,4;333,-1; 5:1,11,8,Times,0,12,0,0,0;1,10,8,Times,2,12,0,0,0;1,11,8,Times,0,12,0,0,0;1,10,8,Times,1,12,0,0,0;1,11,8,Times,0,12,0,0,0; :[font = input; preserveAspect; startGroup] p2=Arc[{{x[1],a[1],Angle[a[1].x[1],oy],"",""}, {x[9],a[8],Angle[oy,x[9].a[9]],"",""}}] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 282; pictureHeight = 183] %! %%Creator: Mathematica %%AspectRatio: 0.65248 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.0238095 0.0202726 0.604139 0.0202726 [ [ 0 0 0 0 ] [ 1 0.652476 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave gsave gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.02381 0.61428 0.02267 -26.5651 90 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.02381 1.08033 1.06479 -90 -26.5651 arc stroke grestore grestore grestore 0 0 moveto 1 0 lineto 1 0.65248 lineto 0 0.65248 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = text; inactive; preserveAspect] The angle is defined as the angle between the normal vectors of the straight lines and is therefore uniquely defined in magnitude and in sign. :[font = input; preserveAspect; startGroup] Show[p1,p2] :[font = postscript; PostScript; formatAsPostScript; output; inactive; preserveAspect; pictureLeft = 34; pictureWidth = 285; pictureHeight = 190] %! %%Creator: Mathematica %%AspectRatio: 0.66915 MathPictureStart /Courier findfont 10 scalefont setfont % Scaling calculations 0.308814 0.0142059 0.477078 0.0142059 [ [ 0 0 0 0 ] [ 1 0.669153 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath %%Object: Graphics [ ] 0 setdash 0 setgray gsave grestore gsave gsave gsave gsave gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.29732 0.47708 0.0257 0 180 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.45848 0.04158 90 270 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.3389 0.47708 0.06728 180 360 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.52576 0.10886 -90 90 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.23004 0.47708 0.17614 0 180 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.34962 0.285 90 270 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.51504 0.47708 0.46115 180 360 arc stroke grestore grestore grestore grestore gsave gsave gsave gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.48418 0.01588 -26.5651 90 arc stroke grestore gsave 0 0 1 setrgbcolor 0.004 setlinewidth newpath 0.30881 0.81077 0.74615 -90 -26.5651 arc stroke grestore grestore grestore grestore grestore 0 0 moveto 1 0 lineto 1 0.66915 lineto 0 0.66915 lineto closepath clip newpath % End of Graphics MathPictureEnd :[font = output; output; inactive; preserveAspect; endGroup] The Unformatted text for this cell was not generated. Use options in the Actions Preferences dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = text; inactive; preserveAspect; endGroup] This is the end of the exercise. :[font = section; inactive; preserveAspect; startGroup] Conclusion :[font = text; inactive; preserveAspect; endGroup; endGroup] The golden spiral has been used to illustrate the functionalities of Descartes-Geometry namely the construction of elementary figures and their assembly in an array defined by geometric functions. This example gives just a sampling of the facilities provided by Descartes-Geometry which contains more than hundred functions. The program is actually the symbolic image of a course of analytic geometry taught in high schools and colleges and updated with various objects such as the splines which are so common in graphical applications. ^*)