input courbes; vardef fx(expr t) = 2*cos(2*t) enddef; vardef fy(expr t) = 2*cos(2*t)*tan(t) enddef; % valeur utilisée pour le paramètrage. numeric PI; PI := 3.1; vues := 60; for vue=1 upto vues: beginfig(vue); repere(11cm,18cm,5.5cm,9cm,2cm,2cm); % marque.unites(1mm); numeric t; path rayon,cercle; pair A,B,P,O,Q; t = -PI/2 + (vue-1)*PI/2/(vues-1); A = (2,0); O = (0,0); if vue=1: Q = (2,3*r_ymax); P = (fx(t+PI/2),fy(t+PI/2)); elseif vue=vues: Q = (fx(t),fy(t)); P = (2,3*r_ymin); else: Q = (fx(t),fy(t)); P = (fx(t+PI/2),fy(t+PI/2)); fi B = .5[P,Q]; rayon = 2[B,A]--2[A,B]; if vue=1: % rien ! elseif vue=vues: drawarrow ftrace(-1.4,1.4,100) en_place withpen pencircle scaled 1.5pt withcolor 0.2[blue,red]; else: draw fullcircle scaled (2*abs(O-B)*unite) shifted (B en_place) withpen pencircle scaled 1pt withcolor 0.3white; drawarrow ftrace(-1.4,t-0.01,100) en_place withpen pencircle scaled 1.5pt withcolor 0.2[blue,red]; drawarrow ftrace(0,t-0.01+Pi/2,100) en_place withpen pencircle scaled 1.5pt withcolor 0.2[blue,red]; fi % Tracé du rayon draw rayon en_place; % Points draw A en_place withpen pencircle scaled 5pt withcolor blue; draw P en_place withpen pencircle scaled 5pt withcolor blue; draw B en_place withpen pencircle scaled 5pt withcolor blue; draw Q en_place withpen pencircle scaled 3pt; label.llft(btex $A$ etex scaled 2,A en_place); label.llft(btex $B$ etex scaled 2,B en_place); decoupe.repere; trace.axes(0.5pt); etiquette.axes; dotlabel.llft(btex $O$ etex scaled 2,rpoint(0,0)); draw rpoint(r_xmin-0.2,r_ymin-0.2)-- rpoint(r_xmin-0.2,r_ymax+0.2)-- rpoint(r_xmax+0.2,r_ymax+0.2)-- rpoint(r_xmax+0.2,r_ymin-0.2)--cycle withpen pencircle scaled 1.5pt withcolor (0.8,0.6,0.1); endfig; endfor end