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

Hyperbolographes

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


I. Hyperbolographe 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):

hyperboleAP:= proc(aa,bb)
local a,b, u,U,t,t1,t2,u0,k,A,B,E,C,D,cercle_B,cercle_D,ass,
tiges,tigeEA,tigeEC,AB,courbe,arti,artiE,nbf,Cbar:
Cbar:=0.7,0.2,0.2:
b:= 2*aa;a:=sqrt(4*bb^2+b^2) ;
U:=simplify([solve(( b*cos(t)-a-b*cos(w) )^2 + (b*sin(t)-b*sin(w) )^2-a^2,w)][2]):
A:=[-a/2,0]: D:=[a/2,0]: B:=[-a/2+b*cos(t),b*sin(t)]:
cercle_B:=plot([op(B),t=0..2*Pi],color =grey,thickness=2):
cercle_D:=plot([a/2+b*cos(w),b*sin(w),w=0..2*Pi],color =grey,thickness=2):
ass:=plot([bb/aa*x,-bb/aa*x],x=-4*aa..4*aa,color=red,linestyle=2):
C:=[a/2+b*cos(U),b*sin(U)]:
AB:=B-A;
E:=expand(D+u*(C-D)); u0:=solve((A-E)[1]*AB[2]-(A-E)[2]*AB[1],u);
E:=simplify(subs(u=u0,E));
nbf:=7:t1:=arctan(bb/aa)-0.15: t2:=arctan(bb/aa)+0.2:

arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+2*j*t1/nbf,[A,B,C,D]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+2*j*(Pi-t2)/nbf,[A,B,C,D]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf)],insequence=true):
artiE:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+2*j*t1/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(BOX,12))),j=0..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+2*j*(Pi-t2)/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(BOX,12))),j=1..nbf)],insequence=true):
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+2*j*t1/nbf,[A,B,C,D])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+2*j*(Pi-t2)/nbf,[A,B,C,D])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf)],insequence=true):
tigeEA:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+2*j*t1/nbf,[A,E])),
COLOR(RGB,Cbar),THICKNESS(3), LINESTYLE(3))), j=0..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+2*j*(Pi-t2)/nbf,[A,E])),
COLOR(RGB,Cbar),THICKNESS(3), LINESTYLE(3))), j=1..nbf)],insequence=true):
tigeEC:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+2*j*t1/nbf,[C,E])),
COLOR(RGB,Cbar),THICKNESS(3), LINESTYLE(3))), j=0..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+2*j*(Pi-t2)/nbf,[C,E])),
COLOR(RGB,Cbar),THICKNESS(3), LINESTYLE(3))), j=1..nbf)],insequence=true):

courbe:=display([seq(plot([op(E),t=-t1..-t1+t1/2/nbf+2*t1*k/nbf],color=red),k=0..nbf),
seq(plot({[op(E),t=-t1..t1],[op(E),t=t2..t2+2*k*(Pi-t2)/nbf]},
color=red),k=1..nbf)],insequence=true):
display([cercle_B,cercle_D,ass,arti,tiges,tigeEA,tigeEC,artiE,courbe],scaling=constrained,
title=cat("X^2/",convert(aa^2,string)," - Y^2/",convert(bb^2,string)," = 1"),
view=[-1.5*a..1.5*a,-a..a],axes=none):
end:


hyperboleAP(1,1);

Voir l'image

Début  

II. Hyperbolographe 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):
hyperboleD:= proc(a,b)
local u,u0,t1,t,w,A,B,E,F,tiges,courbe,arti,nbf,d,L,M,Cbar:
Cbar:=0.7,0.2,0.2:
M:= [t,b/a*t] :
A:=[0,u]: u0:=[solve((A-M)[1]^2+(A-M)[2]^2-(1.5*a)^2,u)]:
B:=evalf(subs(u=u0[1],A)):A:=evalf(subs(u=u0[2],A)):

L:= simplify(expand((A+B)/2)) :
E:=expand(L+u*(M-L)): u0:=[solve(expand(A-E)[1]^2+expand(A-E)[2]^2-4*a^2,u)]:
F:=simplify(subs(u=u0[1],E)):E:=simplify(subs(u=u0[2],E)):
nbf:=15:t1:=1.5*a;
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*2*t1/nbf,[A,B,E,F,M,B]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
tiges:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*2*t1/nbf,[A,E,B,F,A,M,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
courbe:=animate([op(subs(t=-t1+t*w,E)),t=0..2*t1],w=0..1,frames=nbf+1),
animate([op(subs(t=-t1+t*w,F)),t=0..2*t1],w=0..1,frames=nbf+1):
display([plot({b/a*t,-b/a*t},t=-1.5*t1..1.5*t1,color=grey,thickness=2),
arti,tiges,courbe],scaling=constrained,
title=cat("Hyperbole X^2/",convert(a^2,string)," - Y^2/",convert(b^2,string)),
axes=none):
end:
hyperboleD(1,1);

Voir l'image


Début  

III. Hyperbolographe 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):

HyperboleCD:= proc(a,b)
local u,t,t1,t2,w,ass,w0,k,A,B,E,C,c,BC,L,tigeAB,para,M,Cbar,courbe,arti,artiE,nbf:

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]])):
E:=expand(L+w*(M-L)):w0:=simplify(solve(E[2]*B[1]-E[1]*B[2],w));
E:=simplify(subs(w=w0,E)):
t1:=arctan(b/a)-0.2; t2:=arctan(b/a)+0.3; nbf:=8:#mettre un nombre IMPAIR
ass:=plot([b/a*(t-c),-b/a*(t-c)],t=-c..3*c,color=red,linestyle=2):
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*2*t1/nbf,[A,B,C,L,M]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+j*(Pi-t2)*2/nbf,[A,B,C,L,M]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf)],insequence=true):
artiE:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*2*t1/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(CIRCLE,12))),j=1..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+j*(Pi-t2)*2/nbf,[E]))),
COLOR(RGB,1,0,0),SYMBOL(CIRCLE,12))),j=1..nbf)],insequence=true):
tigeAB:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*2*t1/nbf,[A,B,E,L])),
evalf(subs(t=-t1+j*2*t1/nbf,[E,M])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3))),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(Pi-t2)*2/nbf,[A,B,E,L])),
evalf(subs(t=t2+j*(Pi-t2)*2/nbf,[M,E])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3))),j=1..nbf)],insequence=true):
para:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*2*t1/nbf,[A,B,L,C,M,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(Pi-t2)*2/nbf,[A,B,L,C,M,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf)],insequence=true):
courbe:=display([seq(plot([op(E),t=-t1..-t1+j*2*t1/nbf],color=red),j=1..nbf),
seq(plot({[op(E),t=-t1..t1],[op(E),t=t2..t2+j*(Pi-t2)*2/nbf]},
color=red),j=1..nbf)],insequence=true):
print(display([plot([op(B),t=0..2*Pi],color=grey,thickness=2),
ass,arti,artiE,tigeAB,para,courbe],scaling=constrained,
title=cat("Ellipse a=",convert(a,string)," b=",convert(b,string)),
view=[-c..3*c,-3*a..3*a],axes=none))
end:
HyperboleCD(1,1);

Voir l'image


Début  

IV. Hyperbolographe de Descartes

un triangle mobile ABC rectangle en B est tel que CB se déplace sur la droite x=-a ; soit Q de CB tel que CQ=b.
Le point E intersection de OQ et AC décrit une hyperbole

with(plots):
#--------------------------------
# x=-a coté BC du triangle ABC, b = longueur CQ, c=longueur CB
#---------------------------------
hyperboleDesc:= proc(a,b,c)
local d,u,u0,t,OO,t1,triangle,k,A,B,E,C,Q,AC,EC,tigeOQ,courbe,arti,nbf,Cbar,tigeL:
Cbar:=0.7,0.2,0.2:
d:=1:
OO:=[0,0]:B:=[-a,t+c]:
A:=expand(B+[1,0]): C:= [-a,t] :
Q:=[-a,t+b] : E:=u*Q:
EC:=expand(E-C):AC:=expand(A-C):
u0:=solve(expand(EC[1]*AC[2]-EC[2]*AC[1]),u):

E:=simplify(expand(subs(u=u0,E))):
nbf:=20:
t1:=3*a;
arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*2*t1/nbf,[Q,E,OO]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=0..nbf)],insequence=true):
triangle:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*2*t1/nbf,[A,B,C,A])),
COLOR(RGB,Cbar),THICKNESS(3))),j=0..nbf)],insequence=true):
tigeOQ:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*2*t1/nbf,[OO,Q,E,A])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(2))),j=0..nbf)],insequence=true):
courbe:=animate([op(subs(t=-t1+t*w,E)),t=0..2*t1],w=0..1,frames=nbf+1):
display([plot([[-a,-3*a],[-a,3*a]],color=grey,thickness=2),
arti,triangle,tigeOQ,courbe],scaling=constrained,axes=none,view=[-a-0.2..1,-3*a..3*a]):
end:
hyperboleDesc(0.9,1,2);

Voir l'image


Début  

V. Hyperbolographe 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


version 1

with(plots):
hyperboleH:= proc(a,b)
local A,B,E,F,coef,ass,tigeAF,tigeEB,tigeAE,t1,t2,t3,courbe,arti,nbf,Cbar:
Cbar:=0.7,0.2,0.2:
A:=[-a,0]: B:=[t,-b/a*t] :
E:=expand(A+u*(B-A)):F:=subs(u=solve(E[2]-b/a*E[1],u),E):
E:=simplify(expand(B+F-A));
nbf:=8:
t1:=3*a; t2:=-a/2+0.1:t3:=2*a: coef:=1.95:
ass:=plot([b/a*t,-b/a*t],t=-2*a..2*a,color=red,linestyle=2):

arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[A,B,E,F]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+j*(t3-t2)/nbf,[A,B,E]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf)],insequence=true):
tigeAE:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[A,E])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(t3-t2)/nbf,[F,B])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf)],insequence=true):
tigeAF:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[A,F])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3)) ),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(t3-t2)/nbf,[E,B])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3)) ),j=1..nbf)],insequence=true):
tigeEB:=display([seq(PLOT(CURVES( evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[E,B])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3)) ),j=1..nbf),
seq(PLOT(CURVES( evalf(subs(t=t2+j*(t3-t2)/nbf,[A,F])),
COLOR(RGB,Cbar),THICKNESS(3),LINESTYLE(3)) ),j=1..nbf)],insequence=true):
courbe:=display([seq(plot([op(E),t=-t1..-t1+j*(-a/coef+t1)/nbf],color=red),j=1..nbf)],
[seq(display([plot([op(E),t=-t1..-a/1.9],color=red),
plot([op(E),t=t2..t2+j*(t3-t2)/nbf],color=red)])
,j=1..nbf)],insequence=true):
display([ass,arti,courbe,tigeAE,tigeAF,tigeEB],scaling=constrained,
title=cat("Hyperbole X^2/",convert(a^2,string)," - Y^2/",convert(b^2,string)," = 1"),axes=none,view=[-2*a..2*a,-2*a..2*a])#

end:
hyperboleH(1,1);

Voir l'image


Début  

version 2

with(plots):
hyperboleH:= proc(a,b)
local A,B,E,F,coef,ass,tigeE1E2,tigeAE,t1,t2,t3,dAB1,dAB2,
courbe,arti,nbf,Cbar,B1,B2,B3,B4,E1,E2,C,c,curseur,long,larg,cL,cl:
Cbar:=0.7,0.2,0.2:
A:=[-a,0]: B:=[t,-b/a*t] :
cL:=2: cl:=1:
dAB1:=expand(A+10*(B-A)):dAB2:=expand(A-10*(B-A)):
c:=sqrt(a^2+b^2):
larg:=[b/c,-a/c]: long:=[a/c,b/c]:
E:=expand(A+u*(B-A)):F:=subs(u=solve(E[2]-b/a*E[1],u),E):
B1:=expand(B+cL*long): B2:=expand(B-cL*long):
B3:=expand(B1+cl*larg):B4:=expand(B2+cl*larg):
E:=simplify(expand(B+F-A));
E1:=expand(E+8*long): E2:=expand(E-8*long):
C:= expand(B-cl/2/larg[1]/larg[2]*[a/c,-b/c]):

nbf:=8:
t1:=3*a; t2:=-a/2+0.1:t3:=2*a: coef:=1.95:
ass:=plot([b/a*t,-b/a*t],t=-3*a..3*a,color=grey,thickness=2):

arti:=display([seq(PLOT(POINTS(op(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[A,B,E,F,C]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf),
seq(PLOT(POINTS(op(evalf(subs(t=t2+j*(t3-t2)/nbf,[A,B,E,C]))),
COLOR(RGB,0,0,0),SYMBOL(CIRCLE,12))),j=1..nbf)],insequence=true):
tigeAE:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[dAB1,dAB2])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(t3-t2)/nbf,[dAB1,dAB2])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf)],insequence=true):
tigeE1E2:=display([seq(PLOT(CURVES(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[E1,E2])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(t3-t2)/nbf,[E1,E2])),
COLOR(RGB,Cbar),THICKNESS(3))),j=1..nbf)],insequence=true):
curseur:=display([seq(
PLOT(CURVES(evalf(subs(t=-t1+j*(-a/coef+t1)/nbf,[B1,B2,B4,B3,B1])),
COLOR(RGB,Cbar),THICKNESS(3)) ),j=1..nbf),
seq(PLOT(CURVES(evalf(subs(t=t2+j*(t3-t2)/nbf,[B1,B2,B4,B3,B1])),
COLOR(RGB,Cbar),THICKNESS(3)) ),j=1..nbf)],insequence=true):
courbe:=display([seq(plot([op(E),t=-t1..-t1+j*(-a/coef+t1)/nbf],color=red),j=1..nbf)],
[seq(display([plot([op(E),t=-t1..-a/1.9],color=red),
plot([op(E),t=t2..t2+j*(t3-t2)/nbf],color=red)])
,j=1..nbf)],insequence=true):
display([ass,arti,tigeAE,tigeE1E2,courbe,curseur],scaling=constrained,
title=cat("Hyperbole X^2/",convert(a^2,string)," - Y^2/",convert(b^2,string)," = 1"),
axes=none,view=[-3*a..3*a,-2*a..2*a]):#,tigeAE

end:



hyperboleH(1,1);

Voir l'image


Début