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

Ellipsographes

Voir le site : "http://www.museo.unimo.it/theatrum/macchine"


I. Ellipsographe par anti-parallélogramme

Tiges articulées AB, BC, CD formant un quadrilatère non convexe : A et D fixes, AB=CD, AD=BC ; le point d'intersection E de AB et CD décrit une ellipse

restart;
with(plots):
N2:=V->sqrt(V[1]^2+V[2]^2):

ellipseAP:= proc(aa,bb)
local u,U,a,b,t,u0,k,A,B,E,C,D,cercle_B,cercle_D,tiges,courbe,arti,artiE,nbf,Cbar:
if bb>aa then print("le 2-ième paramètre est le petit demi-axe doit être inférieur au 1-er"):
else
Cbar:=0.7,0.2,0.2:
b:=2*aa: a:=2*sqrt(aa^2-bb^2):
U:=simplify([solve(( b*cos(t)-a-b*cos(w) )^2 + (b*sin(t)-b*sin(w) )^2-a^2,w)][2]):
A:=[0,0]: D:=[a,0]: B:=[b*cos(t),b*sin(t)]:
cercle_B:=plot([op(B),t=0..2*Pi],color =grey,thickness=2):
cercle_D:=plot([a+b*cos(w),b*sin(w),w=0..2*Pi],color =grey,thickness=2):
C:=[a+b*cos(U),b*sin(U)]:
E:=expand(D+u*(C-D)); u0:=solve(E[1]*B[2]-E[2]*B[1],u);
E:=simplify(subs(u=u0,E));
nbf:=20:
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[A,B,C,D]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
artiE:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(BOX,12))),j=0..nbf)],insequence=true):
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B,C,D])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
courbe:=animate([op(subs(t=t*w,E)),t=0..2*Pi],w=0..1,frames=nbf+1,color=red):
display([cercle_B,cercle_D,arti,artiE,tiges,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(aa,string)," b=",convert(bb,string)),axes=none):
fi;
end:


plotsetup(inline):
ellipseAP(4,3);

Voir l'image

 


Début  

II. Ellipsographe de Delaunay

tige AB, A fixe ; parallélogramme articulé BCED, les points L de BC et M de BD sont tels que BL=BM et décrivent une droite fixe

with(plots):
ellipseD:= proc(a,b)
local u,t,w,A,B,E,C,tiges,courbe,arti,nbf,d,L,M,D1,r,m,m1,Cbar:
Cbar:=0.7,0.2,0.2:
r:=b:
d:=-2*r: m1:=r-d: m:=m1*(b+a)/b/2:
A:=[0,0]: B:=[r*cos(t),r*sin(t)] :
L:= [r*cos(t)-sqrt(m1^2-(d-r*sin(t))^2),d] :
M:= [r*cos(t)+sqrt(m1^2-(d-r*sin(t))^2),d] :
C:= simplify(evalf(expand(B+m/m1*(L-B)))) :
D1:= simplify(evalf(expand(B+m/m1*(M-B)))) :
E:= simplify(evalf(expand(D1+m/m1*(L-B))));
nbf:=15:
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[A,C,B,E,L,M,D1]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
if a>b then
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B,C,E,D1,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
else
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B,L,C,E,D1,M,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
fi;
courbe:=animate([op(subs(t=t*w,E)),t=0..2*Pi],w=0..1,frames=nbf+1):
display([plot([[-m,d],[m,d]],color=grey,thickness=2),
plot([r],t=0..2*Pi,coords=polar,color=grey,thickness=2),
arti,tiges,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(a,string)," b=",convert(b,string)),axes=none):
end:


plotsetup(inline):ellipseD(2,4);

Voir l'image

ellipseD(4,2);


Début  

III. Ellipsographe par cercle directeur

tige AB et parallélogramme CLBM, E l'intersection de AB et LM : A et C fixes : E décrit une ellipse de demi-axes AB/2 et sqrt(AB^2-AC^2)

with(plots):
N2:=V->sqrt(V[1]^2+V[2]^2):

ellipseCD:= proc(a,b)
local u,t,w,w0,k,A,B,E,C,c,BC,L,tigeAB,para,M,M1,Cbar,courbe,arti,artiE,nbf:
if b>a then print("le 2-ième paramètre est le petit demi-axe doit être inférieur au 1-er"):
else
nbf:=21:#mettre un nombre IMPAIR
c:=sqrt(a^2-b^2): Cbar:=0.7,0.2,0.2:
A:=[0,0]; B:=[2*a*cos(t),2*a*sin(t)] ; C:= [2*c,0] ;
BC:=expand(B-C): BC:=simplify([BC[1]/N2(BC),BC[2]/N2(BC)]);
L:=simplify(expand((B+C)*0.5+sqrt((a+c)^2-N2(expand((B-C)/2))^2)*[-BC[2],BC[1]])):
M:=simplify(expand((B+C)*0.5-sqrt((a+c)^2-N2(expand((B-C))/2)^2)*[-BC[2],BC[1]])):
M1:=simplify(expand(L+4*sqrt(a*c)*(M-L)/N2(expand(M-L)))):
E:=expand(L+w*(M-L)):w0:=simplify(solve(E[2]*B[1]-E[1]*B[2],w));
E:=simplify(subs(w=w0,E)): arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[A,B,C,L,M]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
artiE:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
tigeAB:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
para:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[L,C,M,B,L,M1])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
courbe:=animate([op(subs(t=t*w,E)),t=0..2*Pi],w=0..1,frames=nbf+1):
print(display([plot([op(B),t=0..2*Pi],color=black),
arti,artiE,para,tigeAB,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(a,string)," b=",convert(b,string)),axes=none))
#[plot([op(E),t=0..2*Pi],color=green),
fi;
end:


plotsetup(inline):
ellipseCD(3,2);

Voir l'image


Début  

IV. Méthode de la bande de papier : ellipsographe de Van Schooten

tige AB et BCE : A fixe , C décrit une droite (D) passant par A : E décrit une ellipse de demi-axes BE-AB et BE+AB
si l'on considère H de BC tel BH=BA alors H décrit la perendiculaire en A à (D) : on retrouve la bande de papier HBCE

with(plots):
ellipseVS:= proc(a,b)
local u,t,w,k,A,B,E,C,L,BC,tiges,courbe,arti,nbf,Cbar,tigeL:
if b>a then print("le 2-ième paramètre est le petit demi-axe doit être inférieur au 1-er"):
else
Cbar:=0.7,0.2,0.2:
u:=(a-b)/2: k:=(a+b)/2:
A:=[0,0]: B:=[u*cos(t),u*sin(t)] : C:= [2*u*cos(t),0] :
L:=[0,2*u*sin(t)] : BC:=C-B: E:=B+k*BC/u:
nbf:=20:
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[A,B,C,E]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B,E])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
tigeL:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[L,B])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(2))),j=0..nbf)],insequence=true):
courbe:=animate([op(subs(t=t*w,E)),t=0..2*Pi],w=0..1,frames=nbf+1):
display([plot([[-a,0],[a,0]],color=grey,thickness=2),
plot([[0,-(a+b)/2],[0,(a+b)/2]],color=grey,thickness=2),
arti,tiges,tigeL,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(a,string)," b=",convert(b,string)),axes=none)#

fi;
end:


plotsetup(inline):
ellipseVS(3,1);

Voir l'image


Début  

V. Méthode de la bande de papier : ellipsographe d'Archimède ou de L'Hospital

une tige AEB se déplace de façon que A et B décrivent deux droites perpendiculaires ( ou non de L'Hospital ) : E décrit une ellipse de demi-axes AE et BE

with(plots):
ellipseA:= proc(a,b)
local A,B,E,tiges,courbe,arti,nbf,Cbar:
if b>a then print("le 2-ième paramètre est le petit demi-axe doit être inférieur au 1-er"):
else
Cbar:=0.7,0.2,0.2:
A:=[0,(a+b)*sin(t)]: B:=[-(a+b)*cos(t),0] :
E:=[-a*cos(t),b*sin(t)]:
nbf:=20:
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=j*2*Pi/nbf,[A,B,E]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=j*Pi*2/nbf,[A,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],thickness=2,insequence=true):
courbe:=animate([op(subs(t=t*w,E)),t=0..2*Pi],w=0..1,frames=nbf+1):
display([plot([[-a-b,0],[a+b,0]],color=grey,thickness=2),
plot([[0,-a-b],[0,a+b]],color=grey,thickness=2),
arti,tiges,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(a,string)," b=",convert(b,string)),axes=none)#

fi;
end:


plotsetup(inline):
ellipseA(3.1,2);

Voir l'image


Début