Peut être avez joué au spirographe quand vous étiez petits ? Ce jeux consiste en un assortiment d'engrenages permettant de tracer des épicycloides : courbe obtenue à partir d'un crayon attaché à un cercle (appelé épicycle) roulant sans glissement le long d'un autre cercle. Ce type de courbe est un excellent moyen pour trouver des problèmes intéressants à base de courbes paramétrées et de fonctions trigonométriques! Voici quelques exemples dessinés avec scilab :
function epicycloid(R,r,N) //R= diametre du cercle fixe //r= diamètre de l'épicycle //N=nombre de tours d=R+r;//distance du centre de l'épicycle à celui du cercle fixe L=max(d+r+1,R+1) // largeur de la fenêtre x=[];y=[]; for t=[0:0.1:int(2*%pi*10*N)/10, 2*%pi*N] drawlater clf trace_repere(-L,-L,L,L,color('grey')) trace_cercle(0,0,R,2) angle=t*d/r;// angle du point sur l'épicycle x=[x;d*cos(t)-r*cos(angle)]; y=[y;d*sin(t)-r*sin(angle)]; plot(x,y,'-g')// épicycloïde e=gce(),e.children.thickness=2 plot([d*cos(t),x($)],[d*sin(t),y($)],'-k') trace_cercle(d*cos(t),d*sin(t),r,5) plot(d*cos(t),d*sin(t),'k')//centre du cercle épicycle plot(x($),y($),'r')// dernier point de l'épicycloïde drawnow end endfunctionou j'utilise deux macros personnelles : une pour tracer tracer les cercles en donnant juste leur centre, leur rayon et la couleur :
function trace_cercle(x,y,r,couleur) // cercle de rayon r // de centre (x,y) xarc(x-r,y+r,2*r,2*r,0,360*64) e=gce(),e.thickness=2,e.foreground=couleur endfunctionune autre pour tracer un repère cartésien à partir de sa taille L :
function trace_repere(xmin,ymin,xmax,ymax,couleur) clf xgrid(couleur) A=gca() A.data_bounds=[xmin,ymin;xmax,ymax] A.isoview="on" A.x_location="origin" A.y_location="origin" endfunctionUne fois chargé ces trois fonctions dans Scilab, le premier tracé s'obtient juste en tapant dans la console de scilab la commande :
--> epicycloid(3,1,1)
L'épicycloïde la plus simple consiste à faire rouler un petit cercle (de rayon r) à l'extérieur d'un grand cercle (de rayon R). Dans le cas particulier ou R=r on obtient alors une cardioide :
Cardioïde pour R=r=2 |
Si le rapport des deux rayons est rationnel on obtiendra une courbe fermée (en forme de pétales de fleurs) mais si le rapport des deux rayon est irrationnel alors la courbe obtenue ne se refermera jamais et remplira la couronne comprise entre les cercles de rayons R et R+2r.
R=3 et $r=\sqrt{2}$ |
R=3 et r=-1 |
En prenant le rayon r<0 on a même pas besoin de modifier le code de la fonction epicycloid ! Là encore on a pris un rapport rationnel entre le rayon des deux cercles pour obtenir une courbe fermée. Une petite modification du principe de tracé consistant à placer le crayon n'importe où sur le rayon du cercle rouge (qui apparaît en noir) et non pas juste sur le cercle rouge lui même on obtient alors toute une gamme de dessins du type de ceux générés par un spirographe :
Merci pour ce post. Je l'ai trouvé très intéressant.
RépondreSupprimerBonjour Philippe!
RépondreSupprimerMerci beaucoup pour ce script, avez-vous vu la vidéo de ElJJ (Jérôme) sur les épycicloïdes (2 minutes pour convaincre)? On peut grâce à votre script et en calculant des coefficients de Fourier correspondant à un dessin donné, réaliser des Pokemon, Homer Simpson ou même des éléphants.
Merci pour ce site bien expliqué,c'est vraiment très intéressant et beau ce qui ne gâte
RépondreSupprimerCe commentaire a été supprimé par un administrateur du blog.
RépondreSupprimer