jpegmode %quadrillage marks 400 setheight -12 8 setxrange -6.5 14.5 setyrange %% la plan de base /P1 {-9 -4} def /P2 {4 -6} def /P3 {8.5 -1} def /o {0 0 0} def /o' {0 0 10} def /vect_I {15 cos 15 sin} def /vect_J {135 cos 135 sin .8 mulv} def /vect_K {0 1} def /xyz2xy { 3 dict begin /z exch def /y exch def /x exch def vect_I x mulv vect_J y mulv vect_K z mulv addv addv end } def [/O /O'] [o o'] {xyz2xy} capply mapnp /r1 5 def /r2 1.5 def /ell [O r1 r2 0] def /ell' [O' r1 r2 0] def 0 ell epoint /A defpoint 0 ell' epoint /A' defpoint A' A .8 hompoint /a defpoint 180 ell epoint /B defpoint 180 ell' epoint /B' defpoint /M {-7 -2} def /N {-.5 -4} def %% construction de l'intersection /manip { 3 dict begin /M defpoint %% pour le point M M A ell interdroiteell /M1 defpoint popp A A' M1 paral M a interdroite /M2 defpoint gsave orange .4 setlinewidth mixte [a M A] ligne pointilles [M1 M2] ligne M2 grestore end } def %% une astuce pour corriger le bug d'implementation dans %% l'algorithme de Hobby : on rend la fonction arg continue... /arg {argc} def noir [4.5 -35 dup neg nto] {M N xdpoint manip} apply dup {times} plot {1 1} papply [ exch aload pop {down} a] draw /dotscale {2 dup} def [a O O' A A'] {times} plot 1.2 setlinewidth -180 0 ell Ellipse ell' ellipse [A A'] ligne [B B'] ligne M N 1.5 hompoint N 1.5 trait gsave .8 setlinewidth pointilles 0 180 ell Ellipse grestore 2 setlinewidth [-12 P2 P1 xdpoint P2 P3] ligne 12 setfontsize setTimesItalic (a) a drtext (A) A drtext (A') A' drtext (O) O drtext (O') O' drtext (M) M dltext (N) N dltext