注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

徐小湛的博客

高等数学课件、函数图形动画、数学软件应用

 
 
 

日志

 
 

扭带   

2011-06-12 09:30:22|  分类: 高等数学图形动画 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

扭带 - calculus - 高等数学博客

扭带 - calculus - 高等数学博客

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

扭带 - calculus - 高等数学博客

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

扭带 - calculus - 高等数学博客

扭带 - calculus - 高等数学博客扭带 - calculus - 高等数学博客
作图的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] (显示扭带及坐标轴)

扭带 - calculus - 高等数学博客

   
扭带 - calculus - 高等数学博客扭带 - calculus - 高等数学博客
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]
 

扭带 - calculus - 高等数学博客

   
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]
 

扭带 - calculus - 高等数学博客

   
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]
 

扭带 - calculus - 高等数学博客

   
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]
 

扭带 - calculus - 高等数学博客

 
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]

 

扭带 - calculus - 高等数学博客

 
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] 
 

扭带 - calculus - 高等数学博客

 
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] 
 

扭带 - calculus - 高等数学博客

 
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] 
 

扭带 - calculus - 高等数学博客

 

扭带 - calculus - 高等数学博客

 

扭带 - calculus - 高等数学博客

 

扭带 - calculus - 高等数学博客

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]
 

扭带 - calculus - 高等数学博客

 

 

扭带的应用

 

吊坠

  扭带 - calculus - 高等数学博客

 

手镯

扭带 - calculus - 高等数学博客扭带 - calculus - 高等数学博客

 

 

耳环 

扭带 - calculus - 高等数学博客

 

彩带

扭带 - calculus - 高等数学博客

  评论这张
 
阅读(1173)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016