

用我在以前一篇博文中所讲的方法来作扭带(见这里)。

以下是一些例子,以及用数学软件画的图形。

作图的Mathematica程序(运行时,将中文说明删去)
a:=4;
r[t_]:={a*Cos[t],a*Sin[t],0} (曲线的矢量方程)
n[t_]:=Normalize[Cross[r'[t],r''[t]]] (曲线的单位副法矢)
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]] (曲线的单位主法矢)
h:=2;k:=1;p:=1; (h是带宽,k是直线的斜率,p控制直线的转速)
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s; (绕曲线旋转的线段的参数方程)
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]]; (x轴的参数方程)
Y=ParametricPlot3D[{0,y,0},{y,-4,4},PlotStyle->AbsoluteThickness[3]]; (y轴的参数方程)
Z=ParametricPlot3D[{0,0,z},{z,-2,3},PlotStyle->AbsoluteThickness[3]]; (z轴的参数方程)
XYZ=Show[X,Y,Z]; (显示坐标轴)
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h/2,h/2},{t,0,2*Pi}, (扭带的参数方程)
Boxed->False,Axes->False,ViewPoint->{4,2,3},AspectRatio->.8]; (画曲面的一些设置)
Show[Qumian,XYZ,PlotRange->All] (显示扭带及坐标轴)



a:=2;
r[t_]:={a*Cos[t],a*Sin[t],0}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=1/2;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,2},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h/2,h/2},{t,0,2*Pi},Boxed->False,
Axes->False,ViewPoint->{3,-2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=2;
r[t_]:={a*Cos[t],a*Sin[t],0}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=3/2;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,2},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h/2,h/2},{t,0,2*Pi},Boxed->False,
Axes->False,ViewPoint->{3,-2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=2;
r[t_]:={a*Cos[t],a*Sin[t],0}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=3;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,2},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h/2,h/2},{t,0,2*Pi},Boxed->False,
Axes->False,ViewPoint->{3,-2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=2;
r[t_]:={a*Cos[t],a*Sin[t],a*t}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=2;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,20},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,0,h},{t,0,10},Boxed->False,
Axes->False,ViewPoint->{3,-2,3},AspectRatio->1.8];
Show[Qumian,XYZ,PlotRange->All]

a:=1;
r[t_]:={t,0,a*Cos[t]}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=1;k:=0;p:=1/4;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,10},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,2},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h,h},{t,-2,10},Boxed->False,Axes->False,
ViewPoint->{1,4,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=1;
r[t_]:={t*Cos[t],t*Sin[t],a*t}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=1;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-4,4},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,4},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,20},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h,h},{t,-2,10},Boxed->False,Axes->False,
ViewPoint->{4,2,3},AspectRatio->1.2];
Show[Qumian,XYZ,PlotRange->All]

a:=2;b:=4;
r[t_]:={a*Cos[t],b*Sin[t],0}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=2;k:=0;p:=2;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-4,4},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,4},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,2},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,0,h},{t,0,2*Pi},Boxed->False,Axes->False,
ViewPoint->{4,2,3},AspectRatio->0.8];
Show[Qumian,XYZ,PlotRange->All]

r[t_]:={t,t,t^2}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=1;k:=0;p:=1;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-2,2},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-1,6},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h,h},{t,-3,3},Boxed->False,Axes->False,
ViewPoint->{4,-2,3},AspectRatio->1.2];
Show[Qumian,XYZ,PlotRange->All]




r[t_]:={0,t,t^2/10000} (说明:本方法不适合直线(r 的二阶导数是零向量!),故在 z 坐标加一个很小的量 t^2/10000,得一近似直线。)
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
h:=1;k:=0;p:=1;
x[s_,t_]:=Cos[p*t]*s-Sin[p*t]*k*s;y[s_,t_]:=Sin[p*t]*s+Cos[p*t]*k*s;
X=ParametricPlot3D[{x,0,0},{x,-1,1},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-5,5},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-1,1},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s,t]*m[t]+y[s,t]*n[t],{s,-h,h},{t,-5,5},Boxed->False,Axes->False,
ViewPoint->{2,1,2},AspectRatio->1.2];
Show[Qumian,XYZ,PlotRange->All]

扭带的应用
吊坠

手镯
耳环

彩带

评论