Présentation de cycloide.jps

/syracuse/bbgraf/icons/exemples/cycloide.jpg
-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.2 1.2} 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