Télécharger le fichier Maple "zippé"
parag. 2   parag. 3  

Epicycloïdes et Hypocycloïdes



Une animation interactive en javascript des épi et hypocycloïdes
Voir cette animationr

I. Génération simple

restart:
with(plots):

graf_cloide:=proc(R,r,t0,trait,epais,col)
plot([(R+r)*cos(t)+r*cos((r+R)/r*t),(R+r)*sin(t)+r*sin((r+R)/r*t),t=0..t0],
thickness=epais,linestyle=trait,color=col)
end:

cercle_mobile:=proc(R,r,t0,c)
local A,AM0,cer,M0,diam,courbe;
A:=[(R+r)*cos(t0),(R+r)*sin(t0)]; # centre cercle mobile
AM0:=[r*cos(t0+R/r*t0),r*sin(t0+R/r*t0)]:
cer:=plot([op(A+[r*cos(t),r*sin(t)]),t=0..2*Pi],color=c): # cercle mobile
M0:=plot([[A+AM0]],style=point,symbol=circle,color=blue):# point mobile
diam:=plot([A-AM0,A+AM0],color=c);
courbe:=graf_cloide(R,r,t0+0.00001,1,2,blue); # portion de ?cloïde parcourue
# 0.00001 sinon graphe vide si t0=0
display([cer,M0,diam,courbe]);
end:



# -----épicycloïde, [(R1,r1) tq R1 >= r1 0] ou [(R1,r2) avec r2 = -(R1+r1) }
# -----hypocycloïde [(R1,r1) tq R1 -r1 >0] ou {(R1,r2) avec r2 = -(R1+r1) }
hypo_epi:=proc(R::integer,r::integer)
local n,k,roulante,base,courbe,ppm :
n:=30: # ---- nombre de frames de l'animation ---------
if r R then ppm:=2*Pi*ilcm(R,r)/R else ppm:=2*Pi*ilcm(R,r)/R fi:
base:=plot(R,0..2*Pi,coords=polar,color=black,thickness=2);
courbe:=graf_cloide(R,r,ppm,3,1,blue):
roulante:=[seq(cercle_mobile(R,r,k*ppm/n,red),k=0..n)]:
display([base,display(roulante,insequence=true),courbe],scaling=constrained,axes=none);
end:



# === hypocycloïde à trois points de rebroussement ========
plotsetup(inline):
hypo_epi(3,-1);hypo_epi(3,-2);

Voir l'image

Voir l'image

# === épicycloïde à trois points de rebroussement ========
hypo_epi(3,1);hypo_epi(3,-4);
# === épicycloïde à un point de rebroussement ========
hypo_epi(1,-3);hypo_epi(1,2);
# ======== Cardioïde ========
hypo_epi(1,-2);hypo_epi(1,1);

Voir l'image

Voir l'image

# ======== astroïde ========
hypo_epi(4,-1);hypo_epi(4,-3);
# ======== néphroïde ========
hypo_epi(2,1);hypo_epi(2,-3);
# ======== fleur ========
hypo_epi(10,3);hypo_epi(10,-13);



Début  

II. Double génération

Il faut faire exécuter les procédures ci-dessus de la génération simple qui sont utilisées telles quelles sauf la procédure "cercle_point"

cercle_mobile:=proc(R,r,t0,c)
local A,AM0,cer,cer1,A1,A1M0,diam1,M0,diam,courbe,r1,col1,t1;
r1:=-(R+r): col1:=COLOR(RGB,0,0.7,0):t1:=r1/r*t0:
A:=[(R+r)*cos(t0),(R+r)*sin(t0)]; # centre cercle mobile
A1:=[-(R+r1)*cos(t1),(R+r1)*sin(t1)];
AM0:=[r*cos(t0+R/r*t0),r*sin(t0+R/r*t0)]:
A1M0:=[r1*cos(t0+R/r1*t0),r1*sin(t0+R/r1*t0)]:
cer:=plot([op(A+[r*cos(t),r*sin(t)]),t=0..2*Pi],color=c): # cercle mobile
cer1:=plot([op(A1+[r1*cos(t),r1*sin(t)]),t=0..2*Pi],color=col1):
M0:=plot([[A+AM0]],style=point,symbol=circle,color=blue):# point mobile
diam:=plot([A-AM0,A+AM0],color=c);
diam1:=plot([A1+(A1-A-AM0),A+AM0],color=col1);
courbe:=graf_cloide(R,r,t0+0.0001,1,2,blue); # portion de ?cloïde parcourue
# 0.00001 pour que ça parte à 0
display([cer1,cer,diam1,M0,diam,courbe]);
end:



# === hypocycloïde à trois points de rebroussement ========
hypo_epi(3,-1);
# === épicycloïde à trois points de rebroussement ========
hypo_epi(3,1);
# === épicycloïde à un point de rebroussement ========
hypo_epi(1,-3);
# ======== Cardioïde ========
hypo_epi(1,-2);;
# ======== astroïde ========
hypo_epi(4,-1);
# ======== néphroïde ========
hypo_epi(2,1);

Voir l'image

# ======== fleur ========
hypo_epi(10,3);



Début  

III. Cycloïde

with(plots):
cercle:=animate({[u+cos(t), 1+sin(t), t=0..2*Pi],[u-t*sin(u), 1-t*cos(u), t=0..1]}, u=0..4*Pi, numpoints=[10,2], symbol=circle, color=black,frames=40):
cyclo:=plot([[t,0,t=-1..4*Pi+1],[t-sin(t),1-cos(t), t=0..4*Pi]], color=[blue,red]):
#display([cercle,cyclo],axes=none,scaling=constrained);
display([cercle,cyclo],axes=none,view=[-1..14,0..11]);

Voir l'image


Début