Télécharger le fichier Maple


Rubans de Mobius tracés sur un cylindre,
sur un conoïde Plucker.



I. Animations de rubans de Moebius

Animation d'un ruban ayant subi un certain nombre de demi-tours avec deux bonshommes de couleurs différentesrestart:with(plots):
restart:with(plots):
pv:= proc(U,V) simplify([U[2]*V[3]-U[3]*V[2],U[3]*V[1]-U[1]*V[3],U[1]*V[2]-U[2]*V[1]]): end:
ps:= proc(U,V) simplify(add(U[i]*V[i],i=1..nops(U))): end:
norme:= proc(U) simplify(sqrt(ps(U,U))): end:
ruban:= proc(M,nb_tours,a,range_t)
local dM,d2M,B,N,C,rub,bord1,bord2,cor1,cor2,pte1,pte2,
graf_cor1,graf_pte1,graf_cor2,graf_pte2,n,dep,large,courbe :
dep:=op(1,range_t); large:=op(2,range_t)-op(1,range_t);
dM:=simplify(map2(diff,M,t)):
d2M:=simplify(map2(diff,dM,t)):
B:=pv(dM, d2M):

N:=pv(dM, B): N:=expand(N/norme(N)): B:=expand(B/norme(B)):
C:=expand(cos(t*Pi/large*nb_tours)*N+sin(t*Pi/large*nb_tours)*B):

rub:=plot3d(expand(M+u*C),t=range_t,u=-a..a,grid=[150,3]):
cor1:= expand(M+a*pv(C,expand(dM/norme(dM)))):
cor2:= expand(M-a*pv(C,expand(dM/norme(dM)))):

n:=50: graf_cor1:=display([seq(polygonplot3d(evalf(subs(t=dep+i*large/n,[M,cor1])),
style=line,thickness=3,color=red),i=1..2*n-1)],insequence=true):
graf_pte1:=display([seq(pointplot3d(evalf(subs(t=dep+i*large/n,cor1)),
symbol=circle,symbolsize=20,color=red),i=1..2*n)],insequence=true):
graf_cor2:=display([seq(polygonplot3d(evalf(subs(t=dep+i*large/n,[M,cor2])),
style=line,thickness=3,color=black),i=1..2*n)],insequence=true):
graf_pte2:=display([seq(pointplot3d(evalf(subs(t=dep+i*large/n,cor2)),
symbol=circle,symbolsize=20,color=black),i=1..2*n)],insequence=true):
bord1:=spacecurve(expand(M+C*a),t=range_t,color=blue,thickness=2):
courbe:=spacecurve(M,t=range_t,color=yellow,thickness=1):
bord2:=spacecurve(expand(M-C*a),t=range_t,color=blue,thickness=2):
display(bord1,bord2,courbe,graf_pte1,graf_cor1,graf_pte2,graf_cor2,rub,style=patchnogrid,axes=none,
scaling=constrained,orientation=[0,70],lightmodel=light1);
end:
ruban([cos(t),sin(t),1],1,1/2,0..2*Pi);
ruban([cos(t),sin(t),1],2,1/4,0..2*Pi);

I. Ruban développable constitué d'une bande de cylindre

# ruban ayant 2 demi-tours, d'aspect un peu déroutant

restart:with(plots):
restart:with(plots):
eps:=10^(-6):
large:=1: # max =1
cyl:=[sqrt(cos(2*t))*cos(t),sqrt(cos(2*t))*sin(t),u]:
ro:=0.01:
mesoptions:=radius=ro,grid=[300,20],style=patchnogrid:for i from 1 to 2 do
rub[i]:=plot3d(subs(u=cos(2*(t+Pi/4))/2+u,cyl),u=0..large, t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,grid=[2,243]):
# courbe[i]:=spacecurve(subs(u=cos(2*(t+Pi/4))/2+large/2,cyl),t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,color=red,thickness=2):
courbe[i]:=tubeplot(subs(u=cos(2*(t+Pi/4))/2+large/2,cyl), t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,radius=ro,mesoptions,color=red):
# bord1[i]:=spacecurve(subs(u=cos(2*(t+Pi/4))/2+large,cyl), t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,color=blue,thickness=2):
bord1[i]:=tubeplot(subs(u=cos(2*(t+Pi/4))/2+large,cyl), t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,mesoptions,color=blue):
#bord2[i]:=spacecurve(subs(u=cos(2*(t+Pi/4))/2,cyl), t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,color=blue,thickness=2):
bord2[i]:=tubeplot(subs(u=cos(2*(t+Pi/4))/2,cyl), t=(4*i-5)*Pi/4+eps..(4*i-3)*Pi/4-eps,mesoptions,color=blue):
gcyl[i]:=plot3d(subs(sqrt(cos(2*t))=sqrt(cos(2*t))-0.2/(0.1+10*sqrt(cos(2*t))),cyl),
t=(2*i-3)*Pi/2+0.01..(2*i-1)*Pi/2-0.01, u=-large..1+large,grid=[101,3]):
gcyl1[i]:=plot3d(cyl,t=(2*i-3)*Pi/2+10^(-8)..(2*i-1)*Pi/2-10^(-8),
u=-1/4-large..-large,grid=[101,3]):
od:
gr:=display([courbe[1],courbe[2],display([rub[1],rub[2]],#,gcyl1[1],gcyl2[1] avec rub[i]
style=patchnogrid),bord1[1],bord1[2],bord2[1],bord2[2],

display([gcyl[1],gcyl[2]],style=LINE,color=grey)],
scaling=constrained,orientation=[85,60],lightmodel=light2):
#plotsetup(jpeg,plotoutput="I:/siteperso/fichiersMaple/mobius/moebius-cylindre-a-base lemniscate.jpg",plotoptions="height=800,width=600"):
gr;
plotsetup(inline):

display([courbe[1],courbe[2],display([rub[1],rub[2]],style=patchnogrid),
bord1[1],bord1[2],bord2[1],bord2[2]],
scaling=constrained,orientation=[65,65],lightmodel=light2);






Début  

II. Autre ruban développable constitué d'une bande de cylindre

# ruban ayant 2 demi-tours donc deux faces

restart:with(plots):
eps:=10^(-6):
old_digits:=Digits(): Digits:=20:
cyl:=[cos(3*t)*cos(t),cos(3*t)*sin(t),u]:
a:=1/6:
rub1:=plot3d(subs(u=sin(t*2)/2+u,cyl),u=-a..a,t=0..2*Pi,grid=[2,200]):
courbe1:=spacecurve(subs(u=sin(t*2)/2,cyl),t=0..2*Pi,color=red,thickness=2,numpoints=200):
bord1:=spacecurve(subs(u=sin(t*2)/2+a,cyl),t=0..2*Pi,color=blue,thickness=2,numpoints=200):
bord2:=spacecurve(subs(u=sin(t*2)/2-a,cyl),t=0..2*Pi,color=blue,thickness=2,numpoints=200):
cylgraf:=plot3d(cyl,t=0..2*Pi,u=-5*a..5*a,grid=[81,2],style=LINE,color=grey):
display([courbe1,rub1,bord1,bord2,cylgraf],style=patchnogrid,scaling=constrained,orientation=[40,70],lightmodel=light2);
Digits:=old_digits:



Début  

III. Ruban de Mobius tracé sur un conoide de Plucker

restart:

with(plots):
x:=r*cos(u): y:=r*sin(u):
z:=x*y/(x^2+y^2):
plk:=plot3d([r,u,z],u=0..2*Pi,r=-0.00001..1.45,coords=cylindrical,grid=[60,2],style=line):
k:=0.4:
r:=cos(u)-k*sin(u/2)^2: x:=r*cos(u): y:=r*sin(u):
m:=[x,y,z]:
m:=simplify(expand(m+t*(subs(u=u+Pi,m)-m))):
c:=spacecurve([x,y,z],u=-Pi..Pi,color=red,thickness=3):
d:=plot3d(m,u=-Pi..0,t=0..1,color=yellow,grid=[30,2]):
plotsetup(inline):
display([plk,c,d],orientation=[-30,20]);



Début