(*^ ::[paletteColors = 128; currentKernel; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e8, 24, "Times"; ; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, L1, e6, 18, "Times"; ; fontset = subsubtitle, inactive, noPageBreakBelow, 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, "Times"; ; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, 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, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, L1, 10, "Geneva"; ; fontset = header, inactive, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = Left Header, inactive, 12, "Times"; ; fontset = footer, inactive, noKeepOnOnePage, preserveAspect, center, M7, L1, 12, "Times"; ; fontset = Left Footer, inactive, 12, "Times"; ; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 10, "Times"; ; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1, 12, "Times"; ;] :[font = title; inactive; dontPreserveAspect; ] MathDraw :[font = subtitle; inactive; dontPreserveAspect; ] A Textbook of Euclidean Geometry & A Tool of Computer Aided Symbolic Design :[font = subtitle; inactive; dontPreserveAspect; ] by Denis Monasse :[font = section; inactive; Cclosed; dontPreserveAspect; startGroup; ] Introduction :[font = text; inactive; dontPreserveAspect; ] MathDraw in its present version can build all the geometrical objects which traditionally require ruler and compsssea. :[font = input; initialization; dontPreserveAspect; endGroup; ] *) <Æ Draw[{RGBColor[0,0,1],{p//N,"P"},{A,"A"}, RGBColor[1,0,0],Æ}, {-2,2},{-2,2}] p :[font = section; inactive; Cclosed; dontPreserveAspect; startGroup; ] Tests :[font = input; Cclosed; dontPreserveAspect; startGroup; ] ParallelQ[sl,slp] :[font = output; output; inactive; dontPreserveAspect; endGroup; ] False ;[o] False :[font = input; Cclosed; dontPreserveAspect; startGroup; ] PerpendicularQ[sl,slp] :[font = output; output; inactive; dontPreserveAspect; endGroup; ] True ;[o] True :[font = input; Cclosed; dontPreserveAspect; startGroup; ] OfQ[p,Æ] :[font = output; output; inactive; dontPreserveAspect; endGroup; ] True ;[o] True :[font = input; Cclosed; dontPreserveAspect; startGroup; ] AlignedQ[M,A,B] :[font = output; output; inactive; dontPreserveAspect; endGroup; ] True ;[o] True :[font = input; Cclosed; dontPreserveAspect; startGroup; ] ?TangentQ :[font = info; inactive; dontPreserveAspect; endGroup; ] TangentQ[D,C] teste si la straight line D est Tangent au circle C :[font = input; Cclosed; dontPreserveAspect; startGroup; ] ?ConcentricQ :[font = info; inactive; dontPreserveAspect; endGroup; endGroup; ] ConcentricQ[C1,C2] teste si les ofux circles sont concentriques :[font = section; inactive; Cclosed; dontPreserveAspect; startGroup; ] More Constructions :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Circle given by a diameter :[font = input; dontPreserveAspect; endGroup; ] ce=CircleByDiameter[A,B] Draw[{RGBColor[0,1,0],ce, RGBColor[0,0,1],{A,"A"},{B,"B"}}, {-2,2},{-2,2}] ce :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Circle given by three points :[font = input; dontPreserveAspect; endGroup; ] P=Point[-1.5,Sqrt[2]//N] ce=CircleByThreePoints[A,B,P] Draw[{RGBColor[0,1,0],ce, RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"}}, {-2,2},{-2,2}] ce :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Center of gravity of a triangle :[font = input; dontPreserveAspect; endGroup; ] triangle=Line[Apply[List,{A,B,P,A},2]] AB=A.B;BP=B.P; PA=P.A A1=Middle[B,P];B1=Middle[A,P];P1=Middle[B,A] m1=Line[Apply[List,{A,A1},2]] m2=Line[Apply[List,{B,B1},2]] m3=Line[Apply[List,{P,P1},2]] G=CenterOfGravity[A,B,P] Draw[{RGBColor[1,0,0],triangle, RGBColor[1,1,0],m1,m2,m3, RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"},{G,"G"}, {A1,"A1"},{B1,"B1"},{P1,"P1"}}, {-2,2},{-2,2}] ConcurrentQ[P.P1,A.A1,B.B1] :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Orthocenter of a triangle :[font = input; dontPreserveAspect; endGroup; ] AB=A.B;BP=B.P; PA=P.A A1=Intersection[StraightLinePerpendicular[A,BP],BP] B1=Intersection[StraightLinePerpendicular[B,PA],PA] P1=Intersection[StraightLinePerpendicular[P,AB],AB] H=Orthocenter[A,B,P] m1=Line[Apply[List,{A,A1},2]] m2=Line[Apply[List,{B,B1},2]] m3=Line[Apply[List,{P,P1},2]] Draw[{RGBColor[1,0,0],triangle, RGBColor[1,1,0],m1,m2,m3, RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"},{H,"H"}, {A1,"A1"},{B1,"B1"},{P1,"P1"}}, {-2,2},{-2,2}] ConcurrentQ[P.P1,A.A1,B.B1] :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Center of a circle circumscribed to a triangle :[font = input; dontPreserveAspect; endGroup; ] M1=Mediatrix[B,P];M2=Mediatrix[A,P];M3=Mediatrix[B,A] M=CenterOfCircumscribedCircle[A,B,P] ce=CircleByThreePoints[A,B,P] Draw[{RGBColor[1,0,0],triangle, RGBColor[1,1,0],M1,M2,M3, RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"},{M,"M"}, RGBColor[0,1,0],ce}, {-2,2},{-2,2}] :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Center du circle inscrit dans un triangle :[font = input; dontPreserveAspect; endGroup; ] B1=Intersection[Bisectors[AB,BP][[2]],PA] P1=Intersection[Bisectors[BP,PA][[2]],AB] A1=Intersection[Bisectors[PA,AB][[2]],BP] m1=Line[Apply[List,{A,A1},2]] m2=Line[Apply[List,{B,B1},2]] m3=Line[Apply[List,{P,P1},2]] OI=CenterOfInscribedCircle[A,B,P] ce=CircleByCenterAndPoint[OI,OI>AB] Draw[{RGBColor[1,0,0],triangle, RGBColor[1,1,0],m1,m2,m3, RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"}, {A1,"A1"},{B1,"B1"},{P1,"P1"}, {OI,"I"}, RGBColor[0,1,0],ce}, {-2,2},{-2,2}] OI :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Euler Straight line of a triangle :[font = text; inactive; dontPreserveAspect; ] It is the straight line joining the orthocenter, the center of the circumscribed circle and the center of gravity of a triangle. :[font = input; Cclosed; dontPreserveAspect; startGroup; ] AlignedQ[G,H,M] :[font = output; output; inactive; dontPreserveAspect; endGroup; ] True ;[o] True :[font = input; dontPreserveAspect; endGroup; ] Draw[{RGBColor[1,0,0],triangle,StraightLineEuler[A,B,P], RGBColor[0,0,1],{A,"A"},{B,"B"},{P,"P"}, {G,"G"},{H,"H"},{M,"M"}}, {-2,2},{-2,2}] :[font = subsubsection; inactive; Cclosed; dontPreserveAspect; startGroup; ] Envelopes :[font = text; inactive; dontPreserveAspect; ] Example: Envelope of a radius of light coming from infinity in the direction (0,1) and reflected on a circular mirror (caustic of a circle). ;[s] 3:0,0;119,1;127,0;141,-1; 2:2,13,9,Times,0,12,0,0,0;1,13,9,Times,2,12,0,0,0; :[font = input; dontPreserveAspect; ] U[t_]=PointParameter[K,t] Delta[t_]=StraightLineParallel[StraightLine[0,1,0],U[t]] radius[t_]=Point[0,0].U[t] sym[t_]=Symmetric[Delta[t],radius[t]] f[t_]=(Apply[List,StraightLinesEnvelope[sym[t],t]]/. Cos[t]^2->1-Sin[t]^2)//Factor :[font = input; dontPreserveAspect; ] gr1=ParametricPlot[f[t],{t,-Pi,Pi}, AspectRatio->Automatic] :[font = input; Cclosed; dontPreserveAspect; startGroup; ] gr2=Draw[{RGBColor[0,1,0],K, RGBColor[1,0,0],Delta[t],sym[t], RGBColor[1,1,0],radius[t]}/.t->0.7, {-2,2},{-2,2}]; Show[Graphics[{RGBColor[1,0,0]}],gr1, gr2] :[font = output; output; inactive; dontPreserveAspect; endGroup; endGroup; endGroup; ] The Unformatted text for this cell was not generated. Use options in the Actions Settings dialog box to control when Unformatted text is generated. ;[o] -Graphics- :[font = section; inactive; Cclosed; dontPreserveAspect; startGroup; ] Index :[font = text; inactive; dontPreserveAspect; endGroup; ] AlignedQ AlignedQ[M1,M2,M3] is True if the three points M1, M2, M3 are aligned. BarycentricCoordinates BarycentricCoordinates[M,{A1,A2,A3}] returns the list of barycentric coordinates of M in the affine system (A1,A2,A3). Bisectors Bisectors[D1,D2] returns the two bisectors of (D1, D2). CenterOfCircumscribedCircle CenterOfCircumscribedCircle[A,B,C] returns the center of the circle circumscribed to the triangle ABC. CenterOfGravity CenterOfGravity[A,B,C] returns the center of gravity of A, B, C. CenterOfInscribedCircle CenterOfInscribedCircle[A,B,C] returns the center of the circle inscribed in the triangle ABC. Circle Circle[x,y,r] is the circle of center (x,y) and of radius r. CircleByCenterAndPoint CircleByCenterAndPoint[C,M] returns le circle of center C passing through M. CircleByDiameter CircleByDiameter[A,B] returns the circle of diameter AB. CircleByThreePoints CircleByThreePoints[A,B,C] returns the circle passing through A,B et C. CircleCenter CircleCenter[C] returns the center of the circle C. ConcentricQ ConcentricQ[C1,C2] is True if the two circles C1 and C2 are concentric. ConcurrentQ ConcurrentQ[D1,D2,D3] is True if the three straight lines are concurrent or parallel. Draw Draw[{list},{xMin,xMax},{yMin,yMax}] draws, in the rectangle xMin, xMax, yMin, yMax, the objects of list. The list of objects may be made of points, straight lines, circles, of named points (of the form {Point[x,y],name}or of any Mathematica graphical object such as RGBColor. EqualQ EqualQ[Object1,Object2] is True if two objects are identical. Abbreviation: Object1==Object2. Intersection Intersection[Object1,Object2] returns the intersection(s) of two objects (straight lines or circles). Abbreviation: Object1*Object2. Mediatrix Mediatrix[M1,M2] returns the straight line mŽdiatrix of the segment M1 M2. Middle Middle[M1,M2] returns thee Middle of M1 and M2. OfQ OfQ[M,Object] or OfQ[Object,M] is True if the point M belongs to Object (Circle or StraightLine). Orthocenter Orthocenter[A,B,C] returns the orthocenter of the triangle ABC. ParallelQ ParallelQ[D1,D2] is True if the two straight lines D1 and D2 are Parallel. PerpendicularQ PerpendicularQ[D1,D2] is True if the two straight lines D1 and D2 are perpendicular. Point Point[x,y] is the point of coordinates (x,y). Point[u] returns the point Point[u[1],u[2]]. PointParameter PointParameter[Object,t] returns the point of parameter t of the object which may be a straight line or a circle. PointQ PointQ[M] is True if M is a point. Projection Projection[M,Object] returns the point projection of M onto Object (StraightLine or Circle). Abbreviation: M>Object. RandomPoint RandomPoint[...] retourns a random point (see Random parameters). RandomStraightLine RandomStraightLine[...] returns a random straight line au hasard (see Random parameters). StraightLine StraightLine[u,v,w] is the straight line of equation ux+vy+w=0. StraightLine[Ox] and StraightLine[Oy] return the two axes. StraightLine[u] returns the straight line StraightLine[u[1],u[2],u[3]]. StraightLineQ StraightLineQ[D] is True if D is a straight line. StraightLineByTwoPoints StraightLineByTwoPoints[M1,M2] returns the straight line passing through M1 et M2. Abbreviation M1.M2. StraightLinesEnvelope StraightLinesEnvelope[D,t] returns the envelope of straight lines D whose coordinates are function s of the parameter t. StraightLineEuler StraightLineEuler[A,B,C] returns the Euler straight line of the triangle ABC. StraightLineParallel StraightLineParallel[D,M] returns the straight line parallel to D passing through M. StraightLinePerpendicular StraightLinePerpendicular[D,M] returns the straight line perpendicular to D passing through M. Symmetric Symmetric[Object1,Object2] returns the symmetric of Object1 (StraightLine, Circle or Point) with respect to Object2 (StraightLine or Point). Abbreviation: Object1/Object2. TangentQ TangentQ[D,C] is True if the straight line D is tangent to the circle C. ;[s] 109:0,0;1,2;10,0;32,1;36,0;82,2;105,0;226,2;236,0;293,2;321,0;425,2;441,0;507,2;531,0;627,2;634,0;696,2;719,0;797,2;814,0;872,2;892,0;965,2;978,0;1031,2;1043,0;1065,1;1069,0;1116,2;1128,0;1153,1;1157,0;1215,2;1220,0;1320,1;1325,0;1426,2;1431,0;1437,1;1441,0;1452,1;1464,0;1489,2;1497,0;1500,2;1507,0;1534,1;1538,0;1603,2;1616,0;1750,2;1760,0;1836,2;1843,0;1892,2;1896,0;1930,1;1934,0;1995,2;2007,0;2072,2;2082,0;2102,1;2106,0;2159,2;2174,0;2199,1;2203,0;2260,2;2266,0;2359,2;2374,0;2489,2;2496,0;2509,1;2513,0;2532,2;2543,0;2664,2;2675,0;2723,2;2730,0;2744,2;2762,0;2834,2;2841,0;2855,2;2868,0;3066,2;3080,0;3100,1;3105,0;3131,2;3155,0;3260,2;3282,0;3406,2;3424,0;3503,2;3524,0;3610,2;3636,0;3732,2;3742,0;3915,2;3924,0;3941,1;3945,0;3998,-1; 3:55,13,9,Times,0,12,0,0,0;13,13,9,Times,2,12,0,0,0;41,13,9,Times,1,12,0,0,0; ^*)