用Matlab动画演示几何图形的几种方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“repeat”按钮。
பைடு நூலகம்
程序1:
function weiwei()
hold on;m=5;axis([-m,m,-m,m,-m,m]);
axis image;a=5;
%画圆
[x1,y1,z1]=sphere(30);surf(x1*5,y1*5,z1*5);
%画圆柱体
[x,y,z]=cylinder(a/2,40);mesh(x+a/2,y,z*10-5);
关键词 matlab 解析几何 几何图形 动画演示
解析几何是用代数方法研究几何图形的一门学科,是数学中最基 本的分支学科之一,也是科学技术中最基本的数学工具之一。学好解 析几何需要较强的空间想象能力才能将方程与几何图形联系起来。如 何向学生描述空间中的图形,帮助学生更好地理解几何图形是许多数 学老师感到困难的事情。老师一般只能在黑板上手工绘制几何图形; 或者以图片或实物模型方式演示几何图形。这种传统的教学方式很难 绘制出真实的、具有立体效果的几何图形,且不能从全方位、多角 度、任意大小观看几何图形,更不能动态演示许多曲线和曲面的生成 过程。在解析几何的多媒体教学中,可以运用matlab的图形绘制功能 辅助教学。使用matlab辅助解析几何教学的具体方式有:①应用绘图 函数自动绘制几何图形;②交互式自由旋转图形,可从不同角度观察 几何图形;③交互式绘制图形;④演示空间中图形间位置关系;⑤动 画演示几何图形的生成过程。本文将介绍几种使用matlab动画演示几 何图形生成过程的方法。利用这些方法可以演示一些曲线和曲面的动 态生成过程,使教学内容形象、生动,提高学生的理解能力和学习积 极性。
(收稿日期:2008·06·23)
(接152页)图 3简单使用LINE、CIRCLE、TRIM命令,难度较低。 图4使用CIRCLE、TRIM等命令,需要使用圆弧连接圆弧,增加了一 定的难度。
采用适应认知差异的实例教学方式,利于因材施教,避免了课堂 上部分学生由于内容相对难度较大听不懂、不会做或者完成作业后无 所事事的情况,使得每个学生在课堂上都感觉到自己真正能参与其 中,从而调动了全体学生的积极性,使得学生都各尽所能,都能体验 到学有所成,都有一种成功的喜悦和成就感。
参考文献 [1] 苏金明,王永利 . MATLAB 7.0实用指南[M] . 北京:电子工业出 版社,2004 [2] 吕林银,许子道 . 解析几何(第三版)[M] . 北京:高等教育出 版社,1987 [3] 孙家广,杨长贵 . 计算机图形学(第三版)[M] . 北京:清华大学出 版社,1998 作者简介 郑凤川(1966-),讲师,工作于自贡职业培训学院二校 区。
④ ezplot3(axes_handle,...); ⑤ h = ezplot3(...)。 其 中 使 用
ezplot3(...,'animate')绘制曲线时可以自动动态演示曲线的轨迹[1] 。程序
1实现动态显示维维安尼曲线的轨迹[2] ,从图1可以看出,有一个红点
在绕曲线运动。如果想再次观看运动点的运动情况,可以点击
[x,y,z]=generatrix():得到母线的坐标点,坐标点保存到x、y、 z中,通过修改这个函数可以实现将任意的空间曲线段做母线。如程 序4、程序5就是不同的母线。
[T1,T2]=rotateaxis(x0,y0,z0,l,m,n):得到旋转矩阵。母线上的任意 点P围绕旋转轴旋转时,需进行如下三步空间变换[3] :
-sin(derta),cos(delta),0,0; 0,0,1,0; 0,0,0,1]; for i=1:40; ox=xyz(:,1);oy=xyz(:,2);oz=xyz(:,3); xyz=xyz*T1*zrot*T2;%旋转母线 xx=[ox,xyz(:,1)];yy=[oy,xyz(:,2)];zz=[oz,xyz(:,3)]; surf(xx,yy,zz); pause(0.1); M(i)=getframe;%得到动画帧 End
图3(a)为母线 y = b 1+ z2 / c2 围绕z轴旋转形成的单叶双曲
面过程中所创建的40帧中的第20帧;图3(b)为u簇直线生成单叶双曲 面过程中所创建的40帧中的第20帧[2]。他们的母线函数分别为程序4, 程序5。
程序3: MIN=-10;MAX=10;p=[MIN:MAX]; setaxis(MIN,MAX); %设置坐标 [x,y,z]=generatrix();%得到母线的坐标点 c1=ones(1,size(x,2));xyz=[x;y;z;c1];xyz=xyz'; x0=0;y0=0;z0=0;l=1;m=1;n=1; lx=l*p+x0;ly=m*p+y0;lz=n*p+z0; plot3(lx,ly,lz,'Color','r');%绘制旋转轴 [T1,T2]=rotateaxis(x0,y0,z0,l,m,n); delta=pi/20;%每次旋转角度 zrot=[cos(delta),sin(delta),0,0; %z轴旋转矩阵
b=5;c=6;
z=-30/4:0.5:30/4;
y=b*sqrt(1+(z.*z)/c^2);%二次曲线
x=zeros(1,size(y,2));
matlab还提供了movie2avi函数可以将矩阵中的一系列动画帧转换
成视频文件-avi文件[1]。这样,即使脱离了matlab环境都可以播放动
画。
在程序3中,去掉M(i)=getframe也可以动画演示旋转过程,只是
每次演示都需要运行一次程序,不像电影方式,可以创建一次,播放
多次。
4 结束语
Matlab具有强大的绘图功能。解析几何教学的实践表明,应用 matlab动画演示曲线、曲面等几何图形的生成过程对老师的教学、学 生的学习起到了非常大的帮助。Matlab不仅可以动画演示曲线和曲面 的生成过程,而且可以动画演示直线之间、直线与平面之间、平面之 间的位置关系,动画演示切线、切面、渐近线的变化过程等。
none :重新绘制图形对象时不擦除原来的对象,这种模式可动 态演示图形的生成过程,如曲线和旋转曲面的生成过程。
background :在重新绘制图形对象之前,用背景色重绘对象来达 到擦除原来图形对象的目的。该模式会擦除任何对象和它下面的任何 图形。
Xor :在重新绘制图形对象之前,只擦除原来的对象,不会擦除 其他对象或图形。这种模式能产生图形对象移动的效果。
教科园地
2008年第10期 164
用Matlab动画演示几何图形的几种方法
郑凤川
(自贡市职业培训学院计算机教研室)
摘 要 本文将matlab的图形绘制功能应用到解析几何的教学中,介绍了几种动画演示几何图形的方法。实践证明,通过matlab动 画演示一些几何图形的生成过程能帮助学生加深对几何图形的理解,使教学内容生动形象。
t=0:pi/40:2*pi;fx=@(t)a*cos(t).^2;
fy = @(t)a*cos(t).*sin(t);fz=@(t)a*sin(t);
View(3);
%动态绘制维维安尼曲线
Ezplot3(fx,fy,fz,'animate');
(2)使用comet和comet3函数绘制动
画。
Comet函数和comet3函数可以分别在
1 使用动画函数演示曲线轨迹
(1)使用ezplot3函数绘制动画。
使 用 e z p l o t 3 可 以 绘 制 三 维 参 数 函 数 , 函 数有 5 种 语 法 格 式 : ①
ezplot3(x,y,z); ② ezplot3(x,y,z,[tmin,tmax]); ③ ezplot3(...,'animate');
程序2实现的是动态演示摆线的生成过程,图2(a)(b)是两个不同 阶段的摆线轨迹[2]
程序2: function drawtrace() axis([0,300,0,50]);hold on; axis image;set(gcf,'Position',[520,520,500,100]); a=20;alpha=0:pi/80:2*pi; cx=a*sin(alpha);cy=a*cos(alpha)+a; ocx=cx;lsx=0;lsy=a;px=0;py=0; LX=[lsx,px];LY=[lsy,py]; %绘制半径 lh=line(LX,LY,'EraseMode','xor','Color','b'); %绘制圆 ch=plot(cx,cy,'c.','EraseMode','xor','MarkerSize',1); %绘制轨迹 ph=plot(px,py,'r.','EraseMode','none','MarkerSize',5); pause; for theta=0:pi/80:5*pi; px=a*(theta-sin(theta)); py=a*(1-cos(theta)); lsx=px+a*sin(theta);cx=ocx+lsx; LX=[lsx,px];LY=[lsy,py]; set(lh,'XData',LX,'YData',LY); set(ch,'XData',cx,'YData',cy,'Color','r'); set(ph,'XData',px,'YData',py); Drawnow; pause(0.1) end
S1:首先P点与旋转轴一起通过平移、旋转,使旋转轴与z轴重 合,T1为此时平移与旋转矩阵之积。
S2:然后P点围绕z轴旋转,设此时旋转一定角度的旋转矩阵为 zrot;
S3:最后需将P点随同旋转轴回到原来位置,这步同S1刚好相 反。T2为此时平移与旋转矩阵之积。
因此任意点P围绕任意直线旋转,只需要按序乘以T1、zrot、 T2就可以了。函数中x0、y0、z0为旋转轴上任意已知点坐标;l、m、 n为旋转轴分别在x、y、z轴上的方向矢量。
图1 维维安尼曲线
二维和三维空间上根据给定的一组坐标点的轨迹动态运动一个类似彗
星的图形 ,形成动画效果[1]。
2 以重绘方式实现动画
使用matlab的图形绘制函数不断重复绘制图形对象,重绘过程中 递增式地改变图形对象位置将产生动画效果。在重复绘制图形对象的 过程中之所以能产生动画效果是由于对原来的图形对象进行了擦除处 理。Matlab的图形绘制函数允许采用不同的擦除模式来擦除原来的对 象,不同的擦除模式将产生不同的动画效果。擦除模式是通过设置 “EraseMode”属性来完成的,一共有三种擦除模式 : [1]
(a)双曲线旋转形成
(b)直线旋转形成
图3 单叶双曲面
程序4:
function [x,y,z]=generatrix()
a=4;b=5;c=6;
x=-5:0.5:5;
Z=c*x/a;%直线
y=zeros(1,size(x,2))+b;
程序5:
function [x,y,z]=generatrix()
(a)
(b)
图2 摆线演示
3 以电影方式实现动画
Matlab可以保存一系列的动画帧,然后像播放电影一样播放这些 动画帧实现动画,其中包含两个步骤:
(1)用getframe函数创建动画。 getframe函数可以捕捉动画帧,并保存到矩阵中。一般将函数放 到for循环中得到一系列的动画帧。函数格式有[1]:①F = getframe,从 当前图形框中得到动画帧;②F = getframe(h),从图形句柄h中得到动 画帧;③F = getframe(h,rect),从图形句柄h的指定区域rec中得到动画 帧。 (2)用movie播放动画。 当创建了一系列的动画帧后,可以利用movie函数播放这些动画 帧。该函数的主要格式有[1]:①movie(M),将矩阵M中的动画帧播放 一 次 ; ② movie(M,n), 将 矩 阵 M中 的 动 画 帧 播 放 n次 , ③ movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次。
165
2 0 0 8 年 第 1 0期
教科园地
程序3是实现将任意的母线围绕任意的旋转轴旋转形成旋转曲面 的过程动态演示[2],并保存动画帧。运行程序3后可以运行movie(M,10) 播放动画10次。程序3中调用了三个自定义函数,三个函数的具体功 能是:
setaxis(MIN,MAX):根据MIN,MAX设置三维空间坐标的 最大值与最小值,并且进行一些其他设置。
相关文档
最新文档