我制作的单叶双曲面动画

<h3>单叶双曲面是直纹面。其上有两组直纹,即两组直线组成的母线。</h3> <h3>下面是我用数学软件Maple做的动画。动画演示一条直线在运动时生成单叶双曲面的过程。</h3> <h3>参数方程</h3><h3>(我忘了这个参数方程的来源,应该不是我推出的。)<br></h3> <h3>图形绘制原理: </h3><h3>当参数θ固定时,参数t的变动,便得到一条直母线(即每一个θ对应一条直母线)。</h3><h3>当θ从0变到2π,便得到所有直母线。</h3><h3><br></h3><h3>根据以上原理,可编写出以下绘制图形的Maple 代码。</h3> <h3></h3><h3><font color="#ed2308">动画的Maple代码</font></h3>with(plots):<h3>x_axis:=plot3d([u,0,0],u=0..10,v=0..0.01,thickness=2):</h3><h3>y_axis:=plot3d([0,u,0],u=0..5,v=0..0.01,thickness=2):</h3><h3>z_axis:=plot3d([0,0,u],u=0..10,v=0..0.01,thickness=2):</h3><h3>a:=1:b:=2.3:c:=2.3:phi:=0.6*Pi:</h3><h3>K:=80:for i from 1 to K do ti:=i*2*Pi/K:</h3><h3>qumian[i]:=plot3d([a*(cos(theta)+t*(cos(theta+phi)-cos(theta))),b*(sin(theta)+t*(sin(theta+phi)-sin(theta))),c*(2*t-1)],t=-0.6..2,theta=0..ti):</h3><h3>muxian[i]:=spacecurve([a*(cos(ti)+t*(cos(ti+phi)-cos(ti))),b*(sin(ti)+t*(sin(ti+phi)-sin(ti))),c*(2*t-1)],t=-1..2.2,thickness=3,color=red) od:</h3><h3>muxian:=display(seq(muxian[i],i=1..K),insequence=true):</h3><h3>qumian:=display(seq(qumian[i],i=1..K),insequence=true):</h3><h3>text:=textplot3d([4,4,-10,"XUXZ MAY2018"],color=grey):</h3><h3>display(muxian,qumian,x_axis,y_axis,z_axis,text,orientation=[28,56],lightmodel=light1,title="hyperboloid of one sheet",scaling=constrained);</h3> <h3></h3><h3><font color="#ed2308">产生曲面的代码:</font></h3>with(plots):<h3>a:=1:b:=2.3:c:=2.3:phi:=0.6*Pi:</h3><h3>qumian:=plot3d([a*(cos(theta)+t*(cos(theta+phi)-cos(theta))),b*(sin(theta)+t*(sin(theta+phi)-sin(theta))),c*(2*t-1)],t=0..1,theta=0..2*Pi,scaling=constrained,style=patch):</h3><h3>x_axis:=plot3d([u,0,0],u=-2..4,v=0..0.01,thickness=3):</h3><h3>y_axis:=plot3d([0,u,0],u=-2..3,v=0..0.01,thickness=3):</h3><h3>z_axis:=plot3d([0,0,u],u=-0..4,v=0..0.01,thickness=3):</h3><h3>xyz:=display(x_axis,y_axis,z_axis,thickness=3):</h3><h3>text:=textplot3d([0,0,-4,"XUXZ MAY 2018"],color=grey):</h3><h3>display(qumian,text,xyz,orientation=[40,56],tickmarks=[4,4,4],title="hyperboloid of one sheet",axes=none,grid=[39,63],lightmodel=light1,scaling=constrained);</h3><h3><br></h3> <h3>以下是Wikipedia给的参数方程</h3> <h3>验证参数方程的正确性</h3> <h3><font color="#ed2308"><b>图形的代码:</b></font></h3><h3><br></h3><h3>with(plots):</h3><h3>a:=1:b:=2.3:c:=5:</h3><h3>x:=(theta,t)-&gt;a*(cos(theta)-t*sin(theta)):</h3><h3>y:=(theta,t)-&gt;b*(sin(theta)+t*cos(theta)):</h3><h3>z:=(theta,t)-&gt;c*t:</h3><h3>qumian:=plot3d([x(theta,t), y(theta,t),z(theta,t)],t=-1..1,theta=0..2*Pi):</h3><h3>x_axis:=plot3d([u,0,0],u=-2..4,v=0..0.01,thickness=3):</h3><h3>y_axis:=plot3d([0,u,0],u=-2..3,v=0..0.01,thickness=3):</h3><h3>z_axis:=plot3d([0,0,u],u=-0..4,v=0..0.01,thickness=3):</h3><h3>xyz:=display(x_axis,y_axis,z_axis,thickness=3):</h3><h3>text:=textplot3d([0,0,-4,"XUXZ MAY 2018"],color=grey):</h3><h3>display(qumian,text,xyz,orientation=[40,56],tickmarks=[4,4,4],title="hyperboloid of one sheet",axes=none,grid=[39,63],lightmodel=light1,scaling=constrained);</h3> <h3>从不同角度观察曲面(手机拍摄)</h3> <h3></h3><h3><font color="#ed2308"><b>动画的代码:</b></font></h3>with(plots):<h3>a:=1:b:=2.3:c:=5:</h3><h3>x:=(theta,t)-&gt;a*(cos(theta)-t*sin(theta)):</h3><h3>y:=(theta,t)-&gt;b*(sin(theta)+t*cos(theta)):</h3><h3>z:=(theta,t)-&gt;c*t:</h3><h3>K:=80:for i from 1 to K do ti:=i*2*Pi/K:</h3><h3>qumian[i]:=plot3d([x(theta,t),y(theta,t),z(theta,t)],t=-2..2,theta=0..ti):</h3><h3>muxian[i]:=spacecurve([x(ti,t),y(ti,t),z(ti,t)],t=-2.2..2.2,thickness=3,color=red) od:</h3><h3>muxian:=display(seq(muxian[i],i=1..K),insequence=true):</h3><h3>qumian:=display(seq(qumian[i],i=1..K),insequence=true):</h3><h3>x_axis:=plot3d([u,0,0],u=0..10,v=0..0.01,thickness=2):</h3><h3>y_axis:=plot3d([0,u,0],u=0..5,v=0..0.01,thickness=2):</h3><h3>z_axis:=plot3d([0,0,u],u=0..10,v=0..0.01,thickness=2):</h3><h3>xyz:=display(x_axis,y_axis,z_axis,thickness=3):</h3><h3>text:=textplot3d([4,4,-10,"XUXZ MAY 2018"],color=grey):</h3><h3>display(muxian,qumian,xyz,text,orientation=[28,56],lightmodel=light1,title="hyperboloid of one sheet",scaling=constrained);</h3> <h3>演示直线生成曲面的过程(手机拍摄)</h3> <h3>参考文献: Maple图形动画技术</h3>

动画

母线

参数

代码

双曲面

图形

方程

单叶

曲面

直线