-7 12 setxrange
-5 3 setyrange
%% les parametres
/r 1 def %% diametre de la roue
/x0 -5 def %% abscisse du depart
/x1 10 def %% abscisse d'arrivee
/n 30 def %% nombre de points
/dotscale {1.5 1.5} def %% agrandissement des points
%% le reste depend des parametres initiaux
/A {x0 r} def %% le centre de depart
/roue [A r r 0] def %% la roue, definie comme une ellipse
/l x1 x0 sub n div def %% longueur d'une translation
/fillstyle {hachure} def %% pour le trace du sol
%% pendant que le centre avance de l, la roue tourne de l/r (puisque
%% alpha x r = l)
%% option = booleen indiquant si on dessine la roue
/option true def
%% definition de la manip, qui prend une ellipse sur la pile, et la
%% redepose apres l'avoir translation et rotation
/trace {
l 0 translateell %% on translate l'ellipse
dup ellcentre l r div neg rd rotateell %% on la tourne autour
%% de son centre
option %% et si l'option est mise,
{dup ellipse} %% on la dessine
if
dup -90 exch epoint dot %% en tout cas, on dessine le
%% point repere
} def
/dessin {
xmin -.7 xmax 0 (u) frame* %% le dessin du sol
gsave %% un gsave/grestore
%% pour que les pointilles restent locaux
1 dict begin %% un dict pour que linewidth
.3 setlinewidth %% reste local
pointilles
roue %% on part de la roue
n {trace} repeat %% on fait n x la manip
pop %% et on supprime le reliquat sur la pile
end
grestore
} def
dessin
%% on recommence, mais plus bas, et sans le trace de la roue
/option false def
0 -3.5 stranslate
/dotstyle {bleu point} def
dessin
|