麦比乌斯带(Mobius strip)是以德国数学家麦比乌斯(Mobius)的名字命名的曲面。

麦比乌斯带的神奇之处在于这个曲面是单侧曲面,也就是说它只有一侧,而不像一般的曲面那样有两侧。
1. 麦比乌斯带的参数方程是:

2. 麦比乌斯带的图形:

图形的Maple程序:
with(plots): a:=2:b:=0.5:
qumian:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,grid=[20,20]):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..3,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([0,0,-3,"XUXZ 2008"],color=grey):
display(qumian,text,xyz,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
动画的Maple程序:
with(plots): with(plottools): a:=2:b:=0.5: w:=1:
K:=40:for i from 1 to K do ti:=i*4*Pi/K:
qumian[i]:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],
u=-1..1,v=0..ti,scaling=constrained,style=patch,grid=[20,20]):
muxian[i]:=spacecurve([(a+u*cos(b*ti))*cos(ti),(a+u*cos(b*ti))*sin(ti),u*sin(b*ti)],u=-1..1,color=red,thickness=4) od:
qumian:=display(seq(qumian[i],i=1..K),insequence=true):
muxian:=display(seq(muxian[i],i=1..K),insequence=true):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..2,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(muxian,qumian,text,xyz,orientation=[-30,64],tickmarks=[4,4,4],
title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
3. 麦比乌斯带是有边界的单侧曲面。
以下图形显示:麦比乌斯带的边界是一条空间的闭曲线

with(plots): with(plottools): a:=2:b:=0.5: w:=1: K:=40: for i from 1 to K do:
ti:=i*2*Pi/K:
quxian:=spacecurve([(a+cos(b*v))*cos(v),(a+cos(b*v))*sin(v),sin(b*v)],v=0..4*Pi,color=red,thickness=3):
muxian[i]:=spacecurve([(a+u*cos(b*ti))*cos(ti),(a+u*cos(b*ti))*sin(ti),u*sin(b*ti)],u=-1..1,color=blue,thickness=2) od:
muxian:=display(seq(muxian[i],i=1..K)):
x_axis:=plot3d([u,0,0],u=-3..3,v=0..0.01,thickness=3):
y_axis:=plot3d([0,u,0],u=-3..3,v=0..0.01,thickness=3):
z_axis:=plot3d([0,0,u],u=-2..2,v=0..0.01,thickness=3):
xyz:=display(x_axis,y_axis,z_axis,thickness=3):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(quxian,muxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
A=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,2*Pi},{v,-0.81,0.81},Boxed->False,Axes->None,PlotStyle->FaceForm[LightBlue,LightCyan],Mesh->{15,2}];
v=0.8;
B=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,4*Pi},PlotStyle->{Red,AbsoluteThickness[2]}];
Show[A,B]
with(plots): with(plottools): a:=2:b:=0.5:
qumian:=plot3d([(a+u*cos(b*v))*cos(v),(a+u*cos(b*v))*sin(v),u*sin(b*v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=wireframe,color=blue,thickness=2,grid=[20,20]):
u0:=1: K:=60:for i from 1 to K do ti:=i*4*Pi/K:
quxian[i]:=spacecurve([(a+u0*cos(b*v))*cos(v),(a+u0*cos(b*v))*sin(v),u0*sin(b*v)],v=0..ti,color=red,thickness=5) od:
quxian:=display(seq(quxian[i],i=1..K),insequence=true):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(qumian,quxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);

Mathematica程序:
A=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,2*Pi},{v,-0.81,0.81},
Boxed->False,Axes->None,PlotStyle->FaceForm[LightBlue,LightCyan],Mesh->{15,2}]; v=0.8; B=ParametricPlot3D[{(1+v/2*Cos[1/2*u])*Cos[u],(1+v/2*Cos[1/2*u])*Sin[u],v/2*Sin[u/2]},{u,0,4*Pi},PlotStyle->{Red,AbsoluteThickness[2]}];
Show[A,B]
4. 以下动画显示:麦比乌斯带只有一侧

动画程序:
with(plots): with(linalg): a:=2:b:=1/2: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,grid=[10,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
K:=80: for i from 1 to K do ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..0.95,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0.95..1.05,color=red,thickness=10):
dian2[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=-0.06...0.05,color=red,thickness=10):
A[i]:=display(fashi[i],dian[i],dian2[i]) od:
AA:=display(seq(A[i],i=1..K),insequence=true):
text:=textplot3d([-3,3,-1.5,"XUXZ 2008"],color=grey):
display(AA,qumian,quxian,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);

with(plots): witwith(plottools): a:=2: b:=0.5:
x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v):
z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,color=yellow,grid=[30,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
K:=30: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..0.3,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0.3...0.35,color=red,thickness=4):
A[i]:=display(fashi[i],dian[i]): od:
AA:=display(seq(A[i],i=1..K)):
K:=60: for i from 1 to K do: ti:=i*360/K:
B[i]:=display(qumian,quxian,AA,orientation=[ti,90]): od:
BB:=display(seq(B[i],i=1..K),insequence=true):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(BB,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
5. 以下图形显示:麦比乌斯带的这些法线又构成一个麦比乌斯带

with(plots): with(plottools): a:=2:b:=0.5: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patchnogrid,color=grey,thickness=2,grid=[20,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
s0:=0.5:
quxian2:=spacecurve([x(0,v)+s0*M1(0,v),y(0,v)+s0*M2(0,v),z(0,v)+s0*M3(0,v)],v=0..4*Pi,color=red,thickness=4):
K:=50: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..s0,color=blue,thickness=4):
dian[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=s0...s0+0.05,color=red,thickness=4):
A[i]:=display(fashi[i],dian[i]): od:
AA:=display(seq(A[i],i=1..K)):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(qumian,quxian,quxian2,AA,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
with(plots): witwith(plottools): a:=2: b:=0.5: x:=(u,v)->(a+u*cos(b*v))*cos(v):
y:=(u,v)->(a+u*cos(b*v))*sin(v): z:=(u,v)->u*sin(b*v):
qumian:=plot3d([x(u,v),y(u,v),z(u,v)],u=-1..1,v=0..2*Pi,scaling=constrained,style=patch,color=yellow,grid=[30,20]):
quxian:=spacecurve([x(0,v),y(0,v),z(0,v)],v=0..2*Pi,thickness=2):
N:=crossprod([diff(x(u,v),u),diff(y(u,v),u),diff(z(u,v),u)],[diff(x(u,v),v),diff(y(u,v),v),diff(z(u,v),v)]):
M1:=unapply(N[1],u,v): M2:=unapply(N[2],u,v): M3:=unapply(N[3],u,v):
s0:=0.5:
quxian2:=spacecurve([x(0,v)+s0*M1(0,v),y(0,v)+s0*M2(0,v),z(0,v)+s0*M3(0,v)],v=0..4*Pi,color=red,thickness=3):
K:=80: for i from 1 to K do: ti:=i*4*Pi/K:
fashi[i]:=spacecurve([x(0,ti)+s*M1(0,ti),y(0,ti)+s*M2(0,ti),z(0,ti)+s*M3(0,ti)],s=0..s0,color=blue,thickness=3): od:
fashi:=display(seq(fashi[i],i=1..K)):
K:=60: for i from 1 to K do: ti:=i*360/K:
B[i]:=display(qumian,quxian,quxian2,fashi,orientation=[ti,90]): od:
BB:=display(seq(B[i],i=1..K),insequence=true):
text:=textplot3d([0,0,0,"XUXZ 2008"],color=grey):
display(BB,text,orientation=[-30,64],tickmarks=[4,4,4],title="Mobius strip",axes=none,lightmodel=light2,scaling=constrained);
Updated: 14 JULY 2010
评论