MATLAB vbdp=polyfit,MATLAB总结

Flash与3D MAX等都提供了逐帧动画制作功能,其方法也是把每一帧图像或图形存入播放数组,然后进行逐帧播放。

②形变动画动画制作软件都提供了形变动画制作功能。首先给定一个物体的初始形状,然后给定终止形状,中间过程的各个帧使用插值计算来实现。插值计算的关键是找好初始与终结两个时刻的对应顶点(关键点),然后计算中间各帧的顶点(关键点),最后,使用类似surf 的函数绘制每一帧。一般的形变动画都是靠计算给出中间帧,这虽然增加了计算时间,但是不需要存储大量的中间图像(图形),节省了存储空间。

例作动画演示peaks图形逐渐趋近于平面的过程。p=peaks(11); h=axes('Position',[0,0,1,1],'visible','off') for i=1:10 p1=p/i;surf(p1) set(h,'Zlim',[0 10]) axis off; pause(0.3) end 程序运行时,随着i的增加,曲面的高度逐渐缩小,形成了动画效果。为了更好的观察,设置固定了坐标系的Z轴范围为[0 10]。

例作动画演示一个图形逐渐演化成peaks图形的过程。p=peaks(16);s=sphere(15); for i=30:-2:1 p1=s+p/i;surf(p1);axis off;pause(0.1); end 程序中,先使用peaks函数产生图形数据,再使用sphere 函数产生数据,然后对这些数据进行组合,实现从一个图形到peaks图形的转变。下图是一些中间帧。

注:sphere函数产生数据后,使用surf函数对这些数据进行绘制不能产生球体。而是类似于上图中的第一个图形。如果演示从sphere 曲面变成一个球体,可以使用下面程序。[X1,Y1,Z1]= peaks(16); [X2,Y2,Z2]=sphere(15); for i=1:5:100 Z3=Z1/i+Z2; surf(X2,Y2,Z3) axis square off pause(0.1) end

③路径动画路径动画制作方法也是动画制作软件常用的一个方法。首先为动画设定一个路径,路径可以是规则的几何曲线,也可以是手工绘制的曲线;然后先把物体放到始点位置,再放到终点位置,确认后,让物体沿曲线运动。三维物体路径动画制作过程中,需要处理好消隐问题。根据使用的具体语言或软件来处理消隐问题,Matlab语言函数可以自动实现消隐,三维软件也都可以自动处理消隐问题;但是象C 语言、VB等就没有提供这方面的功能。使用Matlab可以很容易地实现路径动画。

例作一个球体沿一段正弦曲线运动。x=0:0.1:1; y=sin(x); h=axes('Position',[0,0,0.1,0.1]) for i=1:10 set(h,'Position',[x(i),y(i),0.1,0.1]) sphere(15); axis off pause(0.1) end 因为程序中的正弦曲线是自变量取0~1 之间的一段,所以,看上去像是沿直线运动。程序关键是每次重新设置绘图坐标轴的起始位置。

例作一个球体沿正弦曲线运动一个周期。修改前一页中的程序如下:x=0:0.1:2*pi; y=sin(x); h=axes('Position',[0,0,0.1,0.1]) for i=1:62 set(h,'Position',[x(i)/(2*pi),y(i)/(2*pi)+0.5,0.1,0.1]) sphere(15);axis off;pause(0.1); end 该程序能够实现一个球体沿正弦曲线运动一个周期。如下图所示。

图中的曲线是使用语句后加入的。

下例演示的是一个球体沿随机曲线运动的动画。例作一个球体沿随机曲线运动。y=rand(1,30); axis off h1=axes('Position',[0,0,1,1]) plot(y) axis off h=axes('Position',[0,0,0.1,0.1]) for i=1:30 set(h,'Position',[i/30,y(i),0.1,0.1]) sphere(15);axis square off pause(0.1) end 上述程序的运行结果如下图所示。

一个球体沿着随机曲线运动

从上面几个例子可以看出,只要给出路线,就可以沿着路线绘制物体,形成路径动画。上面例题是一个三维物体绕一个平面曲线运动,下面例子实现了一个球体沿着一条空间曲线运动。例作一个球体沿空间中一条曲线运动。[X1,Y1,Z1]=sphere(15); x=1:0.1:pi;y=sin(x)*10;z=cos(x)*10; for i=1:31 X2=X1+x(i)*10;Y2=Y1+y(i)*10; Z2=Z1+z(i);surf(X2,Y2,Z2) axis square off pause(0.1) end 程序使用了球体的三维数据,每次把

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值