设L是一条空间曲线,在曲线上任意取一点P,欲作一个以P为圆心且垂直于曲线的圆。
如何处理这个问题?
我们可以以曲线L的单位主法矢和单位副法矢为基本单位矢量,以点P为原点,在L的法平面上建立直角坐标系,然后就象xOy面上那样作出圆的矢量方程。
这个方法也适合其他参数曲线,如椭圆、星形线等,包括极坐标曲线(转化为参数曲线即可)。
如果以空间曲线L的参数为第一参数,以圆的参数为第二参数,则我们就得到动圆形成的参数曲面。
可以用数学软件把这种参数曲面的图形作出来。
这个方法也适合其他参数曲线,如椭圆、星形线等,包括极坐标曲线(转化为参数曲线即可)。
------------------------------------------------------------------------------------------------
以下是一些例子(附绘制图形的Mathematica程序)
图形的Mathematica程序(执行时,删去其中的中文说明):
a:=4;b:=1;
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]]]] (曲线的单位主法矢)
x[s_]:=b*Cos[s];y[s_]:=b*Sin[s]; (平面曲线L的参数方程)
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]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,0,2*Pi}, (曲面的矢量方程(参数方程))
Boxed->False,Axes->False,ViewPoint->{4,2,3}, AspectRatio->.8]; (绘图的一些设置)
Show[Qumian,XYZ,PlotRange->All] (显示曲面和坐标轴)
a:=4;b:=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]]]]
x[s_]:=Cos[s];y[s_]:=b*Sin[s];
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,4},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,3},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,0,2*Pi}, Boxed->False,Axes->False,ViewPoint->{4,2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=4;b:=2;
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]]]]
x[s_]:=Cos[s];y[s_]:=Sin[s];
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,4},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,3},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,0,2*Pi}, Boxed->False,Axes->False,ViewPoint->{4,2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

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

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]]]]
x[s_]:=s;y[s_]:=s^2;
X=ParametricPlot3D[{x,0,0},{x,-2,5},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,5},PlotStyle->AbsoluteThickness[3]];
Z=ParametricPlot3D[{0,0,z},{z,-2,7},PlotStyle->AbsoluteThickness[3]];
XYZ=Show[X,Y,Z];
Qumian=ParametricPlot3D[r[t]+x[s]*m[t]+y[s]*n[t],{s,-2,1.5},{t,0,2*Pi}, Boxed->False,Axes->False,ViewPoint->{4,2,3},AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=4;
r[t_]:={a*Cos[t],a*Sin[t],2*t}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]]
x[s_]:=s;y[s_]:=s^2;
X=ParametricPlot3D[{x,0,0},{x,-2,5},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-4,5},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]*m[t]+y[s]*n[t],{s,-2,2},{t,0,6}, Boxed->False,Axes->False,ViewPoint->{4,-1,3}, AspectRatio->.8];
Show[Qumian,XYZ,PlotRange->All]

a:=4;
r[t_]:={a*Cos[t],a*Sin[t],2*t}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]];
x[s_]:=Cos[s];y[s_]:=Sin[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]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,0,10},Boxed->False,Axes->False,AspectRatio->1.5];
Show[Qumian,XYZ,PlotRange->All,ViewPoint->{4,-2,2}]

a:=3;b:=2
r[t_]:={a*Cos[t],a*Sin[t],b*t}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]];
x[s_]:=b*Cos[s]^3;y[s_]:=b*Sin[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]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,0,10},Boxed->False,Axes->False,AspectRatio->1.5];
Show[Qumian,XYZ,PlotRange->All,ViewPoint->{4,-2,2}]

r[t_]:={0,t,Sin[t]}
n[t_]:=Normalize[Cross[r'[t],r''[t]]]
m[t_]:=Normalize[Cross[r'[t],Cross[r'[t],r''[t]]]];
x[s_]:=Cos[s]^3;y[s_]:=Sin[s];
X=ParametricPlot3D[{x,0,0},{x,-2,2},PlotStyle->AbsoluteThickness[3]];
Y=ParametricPlot3D[{0,y,0},{y,-6,6},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]*m[t]+y[s]*n[t],{s,0,2*Pi},{t,-5,5},Boxed->False,Axes->False,AspectRatio->.5];
Show[Qumian,XYZ,PlotRange->All,ViewPoint->{4,2,1}]
Updates:10Jun2011,11Jun2011
评论