// Macros : $macros={}; $macros["Cnk1P2TC"]={ name:"Coniques/Constructions/Cnk 1P 2TC", parameters:["point","line","point","line","point"], exec: function (C,L2,AB1,L1,BA1){ L3=Line("L3",C,BA1); L31=Line("L31",C,BA1); L4=Line("L4",C,AB1); P=OrderedIntersection("P",L2,L1,0); Perp1=Perpendicular("Perp1",L3,P); N=OrderedIntersection("N",Perp1,L3,0); M=OrderedIntersection("M",L4,Perp1,0); L6=Line("L6",BA1,M); L5=Line("L5",AB1,N); C1=OrderedIntersection("C1",L6,L5,0); L21=Line("L21",AB1,C1); L41=Line("L41",C,C1); P2=OrderedIntersection("P2",L21,L1,0); Perp11=Perpendicular("Perp11",L31,P2); N1=OrderedIntersection("N1",Perp11,L31,0); M1=OrderedIntersection("M1",L41,Perp11,0); L51=Line("L51",BA1,M1); L61=Line("L61",AB1,N1); C11=OrderedIntersection("C11",L61,L51,0); Quad=Quadric("Quad",AB1,C,C1,C11,BA1); STL(Quad,"c:#007c7c;s:3.5;f:30;p:500"); return [Quad]; }}; $macros["Cnk3P1TC"]={ name:"Coniques/Constructions/Cnk 3P 1TC", parameters:["point","point","point","line","point"], exec: function (A,C,B1,L1,BA1){ L2=Line("L2",A,B1); L3=Line("L3",C,BA1); L4=Line("L4",C,B1); P=OrderedIntersection("P",L2,L1,0); Perp1=Perpendicular("Perp1",L3,P); N=OrderedIntersection("N",Perp1,L3,0); M=OrderedIntersection("M",L4,Perp1,0); L5=Line("L5",BA1,M); L6=Line("L6",A,N); C1=OrderedIntersection("C1",L6,L5,0); Quad=Quadric("Quad",A,C,B1,C1,BA1); STL(Quad,"c:#007c7c;s:3.5;f:30;p:500"); return [Quad]; }}; $macros["Cnk2TC1T"]={ name:"Coniques/Constructions/Cnk 2TC 1T", parameters:["line","point","line","point","line"], exec: function (L2,P,L1,Q,L3){ A=OrderedIntersection("A",L2,L1,0); C=OrderedIntersection("C",L3,L2,0); B=OrderedIntersection("B",L3,L1,0); P6=OrderedIntersection("P6",L2,L1,0); L4=Line("L4",P,B); L5=Line("L5",C,Q); P4=OrderedIntersection("P4",L5,L4,0); L6=Line("L6",A,P4); R=OrderedIntersection("R",L6,L3,0); L311=Line("L311",R,Q); L31=Line("L31",R,Q); L41=Line("L41",R,P); Perp1=Perpendicular("Perp1",L31,P6); M=OrderedIntersection("M",L41,Perp1,0); N=OrderedIntersection("N",Perp1,L31,0); L61=Line("L61",Q,M); L51=Line("L51",P,N); C1=OrderedIntersection("C1",L61,L51,0); L21=Line("L21",P,C1); L411=Line("L411",R,C1); P21=OrderedIntersection("P21",L21,L1,0); Perp11=Perpendicular("Perp11",L311,P21); N1=OrderedIntersection("N1",Perp11,L311,0); M1=OrderedIntersection("M1",L411,Perp11,0); L511=Line("L511",Q,M1); L611=Line("L611",P,N1); C11=OrderedIntersection("C11",L611,L511,0); Quad=Quadric("Quad",P,R,C1,C11,Q); STL(Quad,"c:#007c7c;s:3.5;f:30;p:500"); return [Quad]; }}; $macros["Cnk5tangentes"]={ name:"Coniques/Constructions/Cnk 5 tangentes", parameters:["line","line","line","line","line"], exec: function (d1,d2,d3,d4,d5){ P11=OrderedIntersection("P11",d5,d1,0); P12=OrderedIntersection("P12",d2,d1,0); P13=OrderedIntersection("P13",d3,d2,0); P14=OrderedIntersection("P14",d4,d3,0); P15=OrderedIntersection("P15",d5,d4,0); L1=Line("L1",P11,P14); L2=Line("L2",P15,P13); L4=Line("L4",P12,P15); L6=Line("L6",P11,P13); L8=Line("L8",P12,P14); P16=OrderedIntersection("P16",L2,L1,0); P17=OrderedIntersection("P17",L4,L1,0); P18=OrderedIntersection("P18",L4,L6,0); P19=OrderedIntersection("P19",L8,L6,0); P20=OrderedIntersection("P20",L8,L2,0); L3=Line("L3",P12,P16); L5=Line("L5",P13,P17); L7=Line("L7",P14,P18); L9=Line("L9",P15,P19); L10=Line("L10",P11,P20); T1=OrderedIntersection("T1",L3,d4,0); T2=OrderedIntersection("T2",L5,d5,0); T3=OrderedIntersection("T3",L7,d1,0); T4=OrderedIntersection("T4",L9,d2,0); T5=OrderedIntersection("T5",L10,d3,0); Quad=Quadric("Quad",T1,T2,T3,T4,T5); STL(Quad,"c:#ed00ff;s:2.5;f:30;p:500"); return [Quad]; }}; $macros["Cnk4P1T"]={ name:"Coniques/Constructions/Cnk 4P 1T", parameters:["point","point","point","point","line"], exec: function (A,B,C,D,L1){ L5=Line("L5",B,D); L4=Line("L4",C,A); L2=Line("L2",B,A); L3=Line("L3",C,D); Q=OrderedIntersection("Q",L3,L1,0); N=OrderedIntersection("N",L5,L1,0); P=OrderedIntersection("P",L2,L1,0); M=OrderedIntersection("M",L4,L1,0); I=Point("I","[(x(P)*x(Q)-x(M)*x(N))/(x(P)+x(Q)-x(M)-x(N)),(y(P)*y(Q)-y(M)*y(N))/(y(P)+y(Q)-y(M)-y(N))]","0"); M1=MidPoint("M1",M,N); C1=Circle("C1",M1,M); M2=MidPoint("M2",M1,I); C2=Circle("C2",M2,I); P1=OrderedIntersection("P1",C2,C1,1); C3=Circle("C3",I,P1); P2=OrderedIntersection("P2",L1,C3,0); P3=OrderedIntersection("P3",L1,C3,1); Quad=Quadric("Quad",A,B,C,D,P2); Quad1=Quadric("Quad1",D,A,P3,B,C); STL(P2,"c:#0000b2;s:6;f:30"); STL(P3,"c:#0000b2;s:6;f:30"); STL(Quad,"c:#00adff;s:1;f:30;p:500"); STL(Quad1,"c:#00adff;s:1;f:30;p:500"); return [P2,P3,Quad,Quad1]; }}; $macros["Cnk1T2P1TC"]={ name:"Coniques/Constructions/Cnk 1T 2P 1TC", parameters:["line","point","point","line","point"], exec: function (L1,A,B,L5,C){ L31=Line("L31",A,C); L2=Line("L2",B,A); L3=Line("L3",C,B); L4=Line("L4",C,A); L41=Line("L41",A,B); L22=Line("L22",A,B); P=OrderedIntersection("P",L4,L1,0); M=OrderedIntersection("M",L5,L1,0); Q=OrderedIntersection("Q",L3,L1,0); N=OrderedIntersection("N",L2,L1,0); P4=OrderedIntersection("P4",L22,L5,0); I=Point("I","[(x(P)*x(Q)-x(M)*x(N))/(x(P)+x(Q)-x(M)-x(N)),(y(P)*y(Q)-y(M)*y(N))/(y(P)+y(Q)-y(M)-y(N))]","0"); M1=MidPoint("M1",M,N); M2=MidPoint("M2",M1,I); C1=Circle("C1",M1,M); C2=Circle("C2",M2,I); P1=OrderedIntersection("P1",C2,C1,1); C3=Circle("C3",I,P1); sol1=OrderedIntersection("sol1",L1,C3,0); sol2=OrderedIntersection("sol2",L1,C3,1); L42=Line("L42",sol2,B); L21=Line("L21",sol1,B); L32=Line("L32",sol2,C); Perp11=Perpendicular("Perp11",L32,P4); P3=OrderedIntersection("P3",L21,L5,0); M4=OrderedIntersection("M4",L42,Perp11,0); N2=OrderedIntersection("N2",Perp11,L32,0); Perp1=Perpendicular("Perp1",L31,P3); N1=OrderedIntersection("N1",Perp1,L31,0); M3=OrderedIntersection("M3",L41,Perp1,0); L52=Line("L52",C,M4); L61=Line("L61",A,N2); L6=Line("L6",sol1,N1); L51=Line("L51",C,M3); C12=OrderedIntersection("C12",L61,L52,0); C11=OrderedIntersection("C11",L6,L51,0); Quad1=Quadric("Quad1",A,sol2,B,C12,C); Quad=Quadric("Quad",sol1,A,B,C11,C); STL(sol1,"c:#0000b2;s:6;sn:true;f:30"); STL(sol2,"c:#0000b2;s:6;sn:true;f:30"); STL(Quad1,"c:#16db08;s:3.5;f:30;p:500"); STL(Quad,"c:#0007ff;s:3.5;f:30;p:500"); return [sol1,sol2,Quad1,Quad]; }}; $macros["PointsPoncelet"]={ name:"Coniques/Constructions/Points Poncelet", parameters:["line","point","point","point","point"], exec: function (L1,M,N,P,Q){ I=Point("I","[(x(P)*x(Q)-x(M)*x(N))/(x(P)+x(Q)-x(M)-x(N)),(y(P)*y(Q)-y(M)*y(N))/(y(P)+y(Q)-y(M)-y(N))]","0"); M1=MidPoint("M1",M,N); C1=Circle("C1",M1,M); M2=MidPoint("M2",M1,I); C2=Circle("C2",M2,I); P1=OrderedIntersection("P1",C2,C1,1); C3=Circle("C3",I,P1); P2=OrderedIntersection("P2",L1,C3,0); P3=OrderedIntersection("P3",L1,C3,1); STL(P2,"c:#0000b2;s:6;f:18"); STL(P3,"c:#0000b2;s:6;f:18"); return [P2,P3]; }}; $macros["DivHarmoABCD"]={ name:"Coniques/Outils/DivHarmo ABC D", parameters:["point","point","point"], exec: function (A,B,C){ d1=Line("d1",B,A); C1=Circle("C1",A,B); Perp1=Perpendicular("Perp1",d1,A); Perp2=Perpendicular("Perp2",d1,B); P4=OrderedIntersection("P4",Perp1,C1,1); L1=Line("L1",P4,C); P5=OrderedIntersection("P5",Perp2,L1,0); Symc1=Symmetry("Symc1",B,P5); L2=Line("L2",P4,Symc1); D=OrderedIntersection("D",L2,d1,0); STL(C,"c:#0000b2;s:6;sn:true;f:18"); STL(D,"c:#b40000;s:6;sn:true;f:18;sp:2"); return [C,D]; }}; $macros["Polaire1pt"]={ name:"Coniques/Outils/Polaire 1 pt", parameters:["quadric","point"], exec: function (Quad,P4){ A=DefinitionPoint("A",Quad,0); P3=DefinitionPoint("P3",Quad,4); L1=Line("L1",P4,A); L2=Line("L2",P4,P3); P5=OrderedIntersection("P5",L1,Quad,1,A); P6=OrderedIntersection("P6",L2,Quad,1,P3); d1=Line("d1",P6,P3); C1=Circle("C1",P3,P6); d11=Line("d11",P5,A); C11=Circle("C11",A,P5); Perp1=Perpendicular("Perp1",d1,P3); Perp2=Perpendicular("Perp2",d1,P6); Perp11=Perpendicular("Perp11",d11,A); Perp21=Perpendicular("Perp21",d11,P5); P41=OrderedIntersection("P41",Perp1,C1,1); P42=OrderedIntersection("P42",Perp11,C11,1); L11=Line("L11",P41,P4); L12=Line("L12",P42,P4); P51=OrderedIntersection("P51",Perp2,L11,0); P52=OrderedIntersection("P52",Perp21,L12,0); Symc1=Symmetry("Symc1",P6,P51); Symc11=Symmetry("Symc11",P5,P52); L21=Line("L21",P41,Symc1); L22=Line("L22",P42,Symc11); D=OrderedIntersection("D",L21,d1,0); D1=OrderedIntersection("D1",L22,d11,0); L3=Line("L3",D,D1); STL(L3,"c:#780013;s:1;f:18;p:0"); return [L3]; }}; $macros["Tgt1ptCnk"]={ name:"Coniques/Outils/Tgt 1 pt (de) Cnk", parameters:["quadric","point"], exec: function (Quad,M){ B=DefinitionPoint("B",Quad,1); P2=DefinitionPoint("P2",Quad,3); P6=Point("P6","Quad.center()","0"); L1=Line("L1",P6,M); Par1=Parallel("Par1",L1,B); Par2=Parallel("Par2",L1,P2); P4=OrderedIntersection("P4",Par1,Quad,1,B); P5=OrderedIntersection("P5",Par2,Quad,0,P2); M1=MidPoint("M1",P5,P2); M2=MidPoint("M2",B,P4); L2=Line("L2",M2,M1); Par3=Parallel("Par3",L2,M); STL(Par3,"c:#780013;s:1;f:18;p:0"); return [Par3]; }}; $macros["TgtesptExtCnk"]={ name:"Coniques/Outils/Tgtes pt Ext Cnk", parameters:["quadric","point"], exec: function (Quad,M){ P2=DefinitionPoint("P2",Quad,1); P3=DefinitionPoint("P3",Quad,2); L3=Line("L3",P2,P3); L2=Line("L2",M,P3); L1=Line("L1",M,P2); P6=OrderedIntersection("P6",L2,Quad,0,P3); P7=OrderedIntersection("P7",L1,Quad,1,P2); L4=Line("L4",P6,P7); L6=Line("L6",P3,P7); L5=Line("L5",P6,P2); I=OrderedIntersection("I",L4,L3,0); J=OrderedIntersection("J",L6,L5,0); L7=Line("L7",J,I); R=OrderedIntersection("R",L7,Quad,0); S=OrderedIntersection("S",L7,Quad,1); L8=Line("L8",M,S); L9=Line("L9",M,R); STL(R,"c:#0000b2;s:6;sn:true;f:30"); STL(S,"c:#0000b2;s:6;sn:true;f:30"); STL(L8,"c:#780013;s:1;f:30;p:0"); STL(L9,"c:#780013;s:1;f:30;p:0"); return [R,S,L8,L9]; }}; $macros["CnkpardirF1pt"]={ name:"Coniques/Euclidiennes/Cnk par dir F 1pt", parameters:["line","point","point"], exec: function (dir,F,A){ Perp1=Perpendicular("Perp1",dir,F); P3=OrderedIntersection("P3",Perp1,dir,0); C1=Circle("C1",P3,F); P5=OrderedIntersection("P5",dir,C1,1); P4=OrderedIntersection("P4",dir,C1,0); Symc1=Symmetry("Symc1",P4,P3); L21=Line("L21",P4,F); L22=Line("L22",P5,F); L12=Line("L12",P5,A); L11=Line("L11",P4,A); Perp22=Perpendicular("Perp22",L22,F); Perp21=Perpendicular("Perp21",L21,F); L1=Line("L1",Symc1,A); M1=MidPoint("M1",P4,Symc1); L2=Line("L2",Symc1,F); Syma12=Reflection("Syma12",Perp22,A); L13=Line("L13",M1,A); L23=Line("L23",M1,F); Syma11=Reflection("Syma11",Perp21,A); Perp2=Perpendicular("Perp2",L2,F); L31=Line("L31",F,Syma11); Syma1=Reflection("Syma1",Perp2,A); L32=Line("L32",F,Syma12); Perp23=Perpendicular("Perp23",L23,F); Syma13=Reflection("Syma13",Perp23,A); B2=OrderedIntersection("B2",L32,L12,0); B1=OrderedIntersection("B1",L31,L11,0); L3=Line("L3",F,Syma1); L33=Line("L33",F,Syma13); B=OrderedIntersection("B",L3,L1,0); B3=OrderedIntersection("B3",L33,L13,0); Quad=Quadric("Quad",B,B3,B1,A,B2); STL(Quad,"c:#00adff;s:2;f:30;p:1000"); return [Quad]; }}; $macros["CnkBifocDFe"]={ name:"Coniques/Euclidiennes/Cnk Bifoc. DFe", parameters:["line","point","expression"], exec: function (dir,F,e){ Perp1=Perpendicular("Perp1",dir,F); C1=Circle1("C1",F,"e"); K=OrderedIntersection("K",Perp1,dir,0); Perp2=Perpendicular("Perp2",Perp1,F); P5=OrderedIntersection("P5",Perp2,C1,0); U3=OrderedIntersection("U3",Perp2,C1,1); C2=Circle1("C2",K,"1"); U1=Point("U1","K+U3-F","0"); P3=OrderedIntersection("P3",dir,C2,0); P4=Point("P4","F+(e/(1+e))*(U1-F)","0"); P7=Point("P7","F-(e/(1-e))*(U1-F)","0"); Perp3=Perpendicular("Perp3",dir,U1); S1=Segment("S1",P3,P5); Symc2=Symmetry("Symc2",P3,K); M2=MidPoint("M2",P4,P7); S=OrderedIntersection("S",S1,Perp1,0); L2=Line("L2",Symc2,F); C3=Circle("C3",M2,P4); L1=Line("L1",Symc2,S); Perp4=Perpendicular("Perp4",L2,F); bf1=OrderedIntersection("bf1",Perp3,C3,0); P9=OrderedIntersection("P9",Perp3,C3,1); Syma3=Reflection("Syma3",Perp4,S); bf2=Reflection("bf2",Perp1,bf1); bf4=Reflection("bf4",Perp1,P9); L3=Line("L3",F,Syma3); bf3=OrderedIntersection("bf3",L3,L1,0); Quad=Quadric("Quad",bf1,S,bf2,bf3,bf4); STL(Quad,"c:#00adff;s:2;f:30;p:500"); return [Quad]; }}; $macros["CnkGeneDFe"]={ name:"Coniques/Euclidiennes/CnkGene DFe", parameters:["line","point","expression"], exec: function (dir,F,e){ C1=Circle1("C1",F,"e"); Perp1=Perpendicular("Perp1",dir,F); Perp2=Perpendicular("Perp2",Perp1,F); K=OrderedIntersection("K",Perp1,dir,0); C4=Circle("C4",K,F); P5=OrderedIntersection("P5",Perp2,C1,0); C2=Circle1("C2",K,"1"); U3=OrderedIntersection("U3",Perp2,C1,1); prbS=MidPoint("prbS",F,K); P3=OrderedIntersection("P3",dir,C2,0); P6=OrderedIntersection("P6",dir,C4,0); U1=Point("U1","K+U3-F","0"); P8=OrderedIntersection("P8",dir,C4,1); Perp3=Perpendicular("Perp3",dir,U1); S1=Segment("S1",P3,P5); Symc2=Symmetry("Symc2",P3,K); Perp6=Perpendicular("Perp6",dir,P6); P7=Point("P7","F-(e/(1-e))*(U1-F)","0"); P4=Point("P4","F+(e/(1+e))*(U1-F)","0"); M3=MidPoint("M3",P6,K); M4=MidPoint("M4",K,P8); L5=PerpendicularBisector("L5",F,P6); L4=PerpendicularBisector("L4",F,M3); M2=MidPoint("M2",P4,P7); prb2=OrderedIntersection("prb2",L5,Perp6,0); S=OrderedIntersection("S",S1,Perp1,0); Perp5=Perpendicular("Perp5",dir,M3); Symc3=Symmetry("Symc3",P8,M4); L2=Line("L2",Symc2,F); L6=PerpendicularBisector("L6",F,Symc3); Perp7=Perpendicular("Perp7",dir,Symc3); C3=Circle("C3",M2,P4); L1=Line("L1",Symc2,S); Perp4=Perpendicular("Perp4",L2,F); prb1=OrderedIntersection("prb1",L4,Perp5,0); CnkS=Point("CnkS","prbS*(e==1)+S*(e!=1)","0"); P9=OrderedIntersection("P9",Perp3,C3,1); Syma3=Reflection("Syma3",Perp4,S); prb3=Reflection("prb3",Perp1,prb1); bf1=OrderedIntersection("bf1",Perp3,C3,0); prb4=OrderedIntersection("prb4",L6,Perp7,0); bf4=Reflection("bf4",Perp1,P9); bf2=Reflection("bf2",Perp1,bf1); Cnk1=Point("Cnk1","prb1*(e==1)+bf1*(e!=1)","0"); L3=Line("L3",F,Syma3); Cnk2=Point("Cnk2","prb2*(e==1)+bf2*(e!=1)","0"); Cnk4=Point("Cnk4","prb4*(e==1)+bf4*(e!=1)","0"); bf3=OrderedIntersection("bf3",L3,L1,0); Cnk3=Point("Cnk3","prb3*(e==1)+bf3*(e!=1)","0"); Quad2=Quadric("Quad2",Cnk1,CnkS,Cnk2,Cnk3,Cnk4); STL(Quad2,"c:#ff00b5;s:2;f:30;p:1000"); return [Quad2]; }}; $macros["ParaboledirF"]={ name:"Coniques/Euclidiennes/Parabole dir F", parameters:["line","point"], exec: function (dir,F){ Perp1=Perpendicular("Perp1",dir,F); K=OrderedIntersection("K",Perp1,dir,0); prbS=MidPoint("prbS",F,K); C4=Circle("C4",K,F); P8=OrderedIntersection("P8",dir,C4,1); P6=OrderedIntersection("P6",dir,C4,0); L5=PerpendicularBisector("L5",F,P6); M4=MidPoint("M4",K,P8); M3=MidPoint("M3",P6,K); Perp6=Perpendicular("Perp6",dir,P6); prb2=OrderedIntersection("prb2",L5,Perp6,0); L4=PerpendicularBisector("L4",F,M3); Perp5=Perpendicular("Perp5",dir,M3); Symc3=Symmetry("Symc3",P8,M4); Perp7=Perpendicular("Perp7",dir,Symc3); L6=PerpendicularBisector("L6",F,Symc3); prb1=OrderedIntersection("prb1",L4,Perp5,0); prb3=Reflection("prb3",Perp1,prb1); prb4=OrderedIntersection("prb4",L6,Perp7,0); Quad1=Quadric("Quad1",prb2,prb1,prbS,prb3,prb4); STL(Quad1,"c:#00adff;s:2;f:30;p:1000"); return [Quad1]; }}; $macros["TgteCom2Cnk"]={ name:"Coniques/Tgtes Comm. 2 Cnk", parameters:["quadric","quadric"], exec: function (Quad,Quad1){ B=DefinitionPoint("B",Quad,1); A=DefinitionPoint("A",Quad,0); P1=DefinitionPoint("P1",Quad,2); P2=DefinitionPoint("P2",Quad,3); P3=DefinitionPoint("P3",Quad,4); P4=DefinitionPoint("P4",Quad1,0); P5=DefinitionPoint("P5",Quad1,1); P7=DefinitionPoint("P7",Quad1,3); P8=DefinitionPoint("P8",Quad1,4); L1=Line("L1",A,P4); L2=Line("L2",A,P8); L13=Line("L13",B,P4); L23=Line("L23",B,P8); L14=Line("L14",P1,P4); L24=Line("L24",P1,P8); L15=Line("L15",P2,P4); L25=Line("L25",P2,P8); L16=Line("L16",P3,P4); L26=Line("L26",P3,P8); P51=OrderedIntersection("P51",L1,Quad1,1,P4); P61=OrderedIntersection("P61",L2,Quad1,1,P8); P53=OrderedIntersection("P53",L13,Quad1,1,P4); P62=OrderedIntersection("P62",L23,Quad1,1,P8); P54=OrderedIntersection("P54",L14,Quad1,1,P4); P63=OrderedIntersection("P63",L24,Quad1,1,P8); P55=OrderedIntersection("P55",L15,Quad1,1,P4); P64=OrderedIntersection("P64",L25,Quad1,1,P8); P56=OrderedIntersection("P56",L16,Quad1,1,P4); P65=OrderedIntersection("P65",L26,Quad1,1,P8); P66=Point("P66","Quad1.center()","0"); P67=Point("P67","Quad1.center()","0"); P68=Point("P68","Quad1.center()","0"); P69=Point("P69","Quad1.center()","0"); d1=Line("d1",P61,P8); C1=Circle("C1",P8,P61); d11=Line("d11",P51,P4); C11=Circle("C11",P4,P51); d12=Line("d12",P62,P8); C12=Circle("C12",P8,P62); d111=Line("d111",P53,P4); C111=Circle("C111",P4,P53); d13=Line("d13",P63,P8); C13=Circle("C13",P8,P63); d112=Line("d112",P54,P4); C112=Circle("C112",P4,P54); d14=Line("d14",P64,P8); C14=Circle("C14",P8,P64); d113=Line("d113",P55,P4); C113=Circle("C113",P4,P55); d15=Line("d15",P65,P8); C15=Circle("C15",P8,P65); d114=Line("d114",P56,P4); C114=Circle("C114",P4,P56); Perp1=Perpendicular("Perp1",d1,P8); Perp2=Perpendicular("Perp2",d1,P61); Perp11=Perpendicular("Perp11",d11,P4); Perp21=Perpendicular("Perp21",d11,P51); Perp12=Perpendicular("Perp12",d12,P8); Perp22=Perpendicular("Perp22",d12,P62); Perp111=Perpendicular("Perp111",d111,P4); Perp211=Perpendicular("Perp211",d111,P53); Perp13=Perpendicular("Perp13",d13,P8); Perp23=Perpendicular("Perp23",d13,P63); Perp112=Perpendicular("Perp112",d112,P4); Perp212=Perpendicular("Perp212",d112,P54); Perp14=Perpendicular("Perp14",d14,P8); Perp24=Perpendicular("Perp24",d14,P64); Perp113=Perpendicular("Perp113",d113,P4); Perp213=Perpendicular("Perp213",d113,P55); Perp15=Perpendicular("Perp15",d15,P8); Perp25=Perpendicular("Perp25",d15,P65); Perp114=Perpendicular("Perp114",d114,P4); Perp214=Perpendicular("Perp214",d114,P56); P41=OrderedIntersection("P41",Perp1,C1,1); P42=OrderedIntersection("P42",Perp11,C11,1); P411=OrderedIntersection("P411",Perp12,C12,1); P421=OrderedIntersection("P421",Perp111,C111,1); P412=OrderedIntersection("P412",Perp13,C13,1); P422=OrderedIntersection("P422",Perp112,C112,1); P413=OrderedIntersection("P413",Perp14,C14,1); P423=OrderedIntersection("P423",Perp113,C113,1); P414=OrderedIntersection("P414",Perp15,C15,1); P424=OrderedIntersection("P424",Perp114,C114,1); L11=Line("L11",P41,A); L12=Line("L12",P42,A); L111=Line("L111",P411,B); L121=Line("L121",P421,B); L112=Line("L112",P412,P1); L122=Line("L122",P422,P1); L113=Line("L113",P413,P2); L123=Line("L123",P423,P2); L114=Line("L114",P414,P3); L124=Line("L124",P424,P3); P511=OrderedIntersection("P511",Perp2,L11,0); P52=OrderedIntersection("P52",Perp21,L12,0); P512=OrderedIntersection("P512",Perp22,L111,0); P521=OrderedIntersection("P521",Perp211,L121,0); P513=OrderedIntersection("P513",Perp23,L112,0); P522=OrderedIntersection("P522",Perp212,L122,0); P514=OrderedIntersection("P514",Perp24,L113,0); P523=OrderedIntersection("P523",Perp213,L123,0); P515=OrderedIntersection("P515",Perp25,L114,0); P524=OrderedIntersection("P524",Perp214,L124,0); Symc1=Symmetry("Symc1",P61,P511); Symc11=Symmetry("Symc11",P51,P52); Symc12=Symmetry("Symc12",P62,P512); Symc111=Symmetry("Symc111",P53,P521); Symc13=Symmetry("Symc13",P63,P513); Symc112=Symmetry("Symc112",P54,P522); Symc14=Symmetry("Symc14",P64,P514); Symc113=Symmetry("Symc113",P55,P523); Symc15=Symmetry("Symc15",P65,P515); Symc114=Symmetry("Symc114",P56,P524); L21=Line("L21",P41,Symc1); L22=Line("L22",P42,Symc11); L211=Line("L211",P411,Symc12); L221=Line("L221",P421,Symc111); L212=Line("L212",P412,Symc13); L222=Line("L222",P422,Symc112); L213=Line("L213",P413,Symc14); L223=Line("L223",P423,Symc113); L214=Line("L214",P414,Symc15); L224=Line("L224",P424,Symc114); D=OrderedIntersection("D",L21,d1,0); D1=OrderedIntersection("D1",L22,d11,0); D2=OrderedIntersection("D2",L211,d12,0); D11=OrderedIntersection("D11",L221,d111,0); D3=OrderedIntersection("D3",L212,d13,0); D12=OrderedIntersection("D12",L222,d112,0); D4=OrderedIntersection("D4",L213,d14,0); D13=OrderedIntersection("D13",L223,d113,0); D5=OrderedIntersection("D5",L214,d15,0); D14=OrderedIntersection("D14",L224,d114,0); L3=Line("L3",D,D1); L31=Line("L31",D2,D11); L32=Line("L32",D3,D12); L33=Line("L33",D4,D13); L34=Line("L34",D5,D14); P11=OrderedIntersection("P11",L3,L31,0); P12=OrderedIntersection("P12",L34,L31,0); P13=OrderedIntersection("P13",L33,L34,0); P14=OrderedIntersection("P14",L32,L33,0); P15=OrderedIntersection("P15",L3,L32,0); L17=Line("L17",P11,P14); L27=Line("L27",P15,P13); L4=Line("L4",P12,P15); L6=Line("L6",P11,P13); L8=Line("L8",P12,P14); P16=OrderedIntersection("P16",L27,L17,0); P17=OrderedIntersection("P17",L4,L17,0); P18=OrderedIntersection("P18",L4,L6,0); P19=OrderedIntersection("P19",L8,L6,0); P20=OrderedIntersection("P20",L8,L27,0); L35=Line("L35",P12,P16); L5=Line("L5",P13,P17); L7=Line("L7",P14,P18); L9=Line("L9",P15,P19); L10=Line("L10",P11,P20); T1=OrderedIntersection("T1",L35,L32,0); T2=OrderedIntersection("T2",L5,L3,0); T3=OrderedIntersection("T3",L7,L31,0); T4=OrderedIntersection("T4",L9,L34,0); T5=OrderedIntersection("T5",L10,L33,0); Quad2=Quadric("Quad2",T1,T2,T3,T4,T5); P9=OrderedIntersection("P9",Quad2,Quad1,0); P10=OrderedIntersection("P10",Quad2,Quad1,1); P21=OrderedIntersection("P21",Quad2,Quad1,3); P22=OrderedIntersection("P22",Quad2,Quad1,2); L18=Line("L18",P66,P22); L19=Line("L19",P67,P21); L110=Line("L110",P68,P10); L115=Line("L115",P69,P9); Par1=Parallel("Par1",L18,P5); Par2=Parallel("Par2",L18,P7); Par11=Parallel("Par11",L19,P5); Par21=Parallel("Par21",L19,P7); Par12=Parallel("Par12",L110,P5); Par22=Parallel("Par22",L110,P7); Par13=Parallel("Par13",L115,P5); Par23=Parallel("Par23",L115,P7); P43=OrderedIntersection("P43",Par1,Quad1,1,P5); P57=OrderedIntersection("P57",Par2,Quad1,0,P7); P44=OrderedIntersection("P44",Par11,Quad1,1,P5); P58=OrderedIntersection("P58",Par21,Quad1,0,P7); P45=OrderedIntersection("P45",Par12,Quad1,1,P5); P59=OrderedIntersection("P59",Par22,Quad1,0,P7); P46=OrderedIntersection("P46",Par13,Quad1,1,P5); P510=OrderedIntersection("P510",Par23,Quad1,0,P7); M1=MidPoint("M1",P57,P7); M2=MidPoint("M2",P5,P43); M11=MidPoint("M11",P58,P7); M21=MidPoint("M21",P5,P44); M12=MidPoint("M12",P59,P7); M22=MidPoint("M22",P5,P45); M13=MidPoint("M13",P510,P7); M23=MidPoint("M23",P5,P46); L28=Line("L28",M2,M1); L29=Line("L29",M21,M11); L210=Line("L210",M22,M12); L215=Line("L215",M23,M13); Par3=Parallel("Par3",L28,P22); Par31=Parallel("Par31",L29,P21); Par32=Parallel("Par32",L210,P10); Par33=Parallel("Par33",L215,P9); STL(Par3,"c:#780013;s:1;f:30;p:0"); STL(Par31,"c:#780013;s:1;f:30;p:0"); STL(Par32,"c:#780013;s:1;f:30;p:0"); STL(Par33,"c:#780013;s:1;f:30;p:0"); return [Par3,Par31,Par32,Par33]; }}; // Coordinates System : SetCoords(471.2930683043573,321.9782862652776,41.72745443805635); // Geometry : P1=Point("P1",-0.2706388025927066,-0.21620570572103784); P5=Point("P5",3.2481205000603035,4.279107938355723); C=Point("C",-2.864379118674214,-2.389073463900116); BA1=Point("BA1",2.749999999999986,-0.01249999999999422); AB1=Point("AB1",-2.100000000000003,2.037500000000002); E1=Expression("E1","Conique par 3points , une tangente et son contact ","","","0","-11.054905565570468","4.84041715425298"); L3=Line("L3",C,BA1); L2=Line("L2",AB1,P1); L4=Line("L4",C,AB1); L1=Line("L1",BA1,P5); L31=Line("L31",C,BA1); P=OrderedIntersection("P",L2,L1,0); Perp1=Perpendicular("Perp1",L3,P); N=OrderedIntersection("N",Perp1,L3,0); M=OrderedIntersection("M",L4,Perp1,0); L6=Line("L6",BA1,M); L5=Line("L5",AB1,N); C1=OrderedIntersection("C1",L6,L5,0); L21=Line("L21",AB1,C1); L41=Line("L41",C,C1); P2=OrderedIntersection("P2",L21,L1,0); Perp11=Perpendicular("Perp11",L31,P2); N1=OrderedIntersection("N1",Perp11,L31,0); M1=OrderedIntersection("M1",L41,Perp11,0); L51=Line("L51",BA1,M1); L61=Line("L61",AB1,N1); C11=OrderedIntersection("C11",L61,L51,0); Quad=Quadric("Quad",AB1,C,C1,C11,BA1); // Styles : STL(P1,"c:#966400;s:6;f:30;sp:1"); STL(P5,"c:#966400;s:6;f:19;sp:1"); STL(C,"c:#0000b2;s:6;sn:true;f:19"); STL(BA1,"c:#ff00d3;s:6;sn:true;f:19"); STL(AB1,"c:#0000b2;s:6;sn:true;f:19"); STL(E1,"c:#135f10;s:7;f:17;p:-1;cL:200;cPT:YzojNzgwMDEzO3M6MTA7ZjoxOQ=="); STL(L3,"c:#780013;s:1;f:30;p:0"); STL(L2,"c:#e827de;s:2.5;f:30;p:0"); STL(L4,"c:#780013;s:1;f:30;p:0"); STL(L1,"c:#ce00ff;s:2.5;f:30;p:0"); STL(L31,"c:#780013;h:2;s:1;f:30;p:0"); STL(P,"c:#0000b2;s:6;sn:true;f:30"); STL(Perp1,"c:#007c00;s:1;f:30;p:0"); STL(N,"c:#007c00;s:6;sn:true;f:30"); STL(M,"c:#007c00;s:6;sn:true;f:30"); STL(L6,"c:#780013;s:1;f:30;p:0"); STL(L5,"c:#780013;s:1;f:30;p:0"); STL(C1,"c:#0000b2;s:6;sn:true;f:30"); STL(L21,"c:#780013;h:2;s:1;f:30;p:0"); STL(L41,"c:#780013;h:2;s:1;f:30;p:0"); STL(P2,"c:#0000b2;h:2;s:6;f:30"); STL(Perp11,"c:#780013;h:2;s:1;f:30;p:0"); STL(N1,"c:#0000b2;h:2;s:6;f:30"); STL(M1,"c:#0000b2;h:2;s:6;f:30"); STL(L51,"c:#780013;h:2;s:1;f:30;p:0"); STL(L61,"c:#780013;h:2;s:1;f:30;p:0"); STL(C11,"c:#0000b2;h:2;s:6;f:30"); STL(Quad,"c:#007c7c;s:3.5;f:30;p:500"); SetCoordsStyle("isAxis:false;isGrid:true;isOx:true;isOy:true;isLockOx:false;isLockOy:false;centerZoom:false;color:#111111;fontSize:18;axisWidth:1;gridWidth:0.1");