版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1数学实验第七讲图形修饰和动画制作(了解)图形修饰和动画制作(了解)Matlab介绍2三维图形的修饰三维图形的修饰1.颜色映像颜色映像 图形的一个重要因素就是图形的颜色,对于数值计图形的一个重要因素就是图形的颜色,对于数值计算,颜色在图形显示中所起的作用不仅仅是美观,主要算,颜色在图形显示中所起的作用不仅仅是美观,主要是它能够提供给用户另外一附加维数是它能够提供给用户另外一附加维数第四维。第四维。 Matlab采用颜色映像来处理图形颜色,也即采用颜色映像来处理图形颜色,也即RGB色系。该方法在色系。该方法在Matlab语言内的实现是借助于矩阵来语言内的实现是借助于矩阵来完成的,该矩阵为三列矩阵
2、,完成的,该矩阵为三列矩阵,每一列代表每一列代表R(红色红色)、G(绿色绿色)和和B(蓝色蓝色)中的一个颜色,三者综合构成对应的中的一个颜色,三者综合构成对应的颜色。颜色。2022-5-25一、一、1. 绘图色彩的调整绘图色彩的调整colormap 函数函数 colormap(map),设置,设置map为当前颜色映像矩阵为当前颜色映像矩阵 colormap(default),恢复当前颜色映像矩阵为默认值,恢复当前颜色映像矩阵为默认值 cmap = colormap,获取当前颜色映像矩阵,获取当前颜色映像矩阵 colormap(ax,),设置当前,设置当前axes对象的颜色映像矩阵对象的颜色映像
3、矩阵 MATLAB中提供了中提供了colormap函数,可以根据颜色映像函数,可以根据颜色映像矩阵对图形对象的色彩进行调整。所谓的颜色映像矩阵就是矩阵对图形对象的色彩进行调整。所谓的颜色映像矩阵就是一个一个 的矩阵,的矩阵,k行表示有行表示有k种颜色,每行种颜色,每行3个元素分别个元素分别代表红、绿、蓝三元色的强度值,取值均在代表红、绿、蓝三元色的强度值,取值均在0,1之间。之间。3kmap的设置有两种,可以人为指定一个元素值均在的设置有两种,可以人为指定一个元素值均在0,1之间之间的的 的矩阵,也可以用的矩阵,也可以用MATLAB自带的自带的17种颜色映像矩阵。在种颜色映像矩阵。在MATLA
4、B命令窗口分别运行命令窗口分别运行autumn、bone、colorcube、cool、copper、flag、gray、hot、hsv、jet、lines、pink、prism、spring、summer、white和和winter函数,就可得到函数,就可得到这这17种颜色映像矩阵种颜色映像矩阵 色图色图colormap colormap(CM) 设置当前图形窗的着色色图为设置当前图形窗的着色色图为CM nMATLAB的预定义色图矩阵的预定义色图矩阵CMCM含含 义义CM含含 义义autumn红、黄浓淡色jet蓝头红尾饱和值色bone蓝色调浓淡色lines采用plot绘线色colorcube
5、三浓淡多彩交错色pink淡粉红色图cool青、品红浓淡色prism光谱交错色copper纯铜色调线性浓淡色SPRING青、黄浓淡色flag红-白-蓝-黑交错色summer绿、黄浓淡色gray灰色调线性浓淡色winter蓝、绿浓淡色hot黑、红、黄、白浓淡色white全白色hsv两端为红的饱和值色注意:jet时默认色图。2 色彩处理色彩处理(1)颜色的向量表示)颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有除用字符表示颜色外,还可以用含有3个个元素的向量表示颜色。向量元素在元素的向量表示颜色。向量元素在0,1范围取值,范围取值,3个个元素分别表示红、绿、蓝元素分别表示红、绿、蓝3种
6、颜色的相对亮度,称为种颜色的相对亮度,称为RGB三元组。三元组。 x,y=meshgrid(-10:0.3:10); R=sqrt(x.2+y.2); Z=sin(R)./R; surf(x,y,Z) figure colormap(hot) surf(x,y,Z)3三维表面图形的着色三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上三维表面图实际上就是在网格图的每一个网格片上涂上颜色。涂上颜色。surf函数用缺省的着色方式对网格片着色。函数用缺省的着色方式对网格片着色。除此之外,还可以用除此之外,还可以用shading命令来改变着色方式。命令来改变着色方式。 shading f
7、aceted命令将每个网格片用其高度对应的颜色进命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式省着色方式。 shading flat命令将每个网格片用同一个颜色进行着色,命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。且网格线也用相应的颜色,从而使得图形表面显得更加光滑。 shading interp命令在网格片内采用颜色插值处理,得命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。出的表面图显得最光滑。 例例1 三种图形着色方式的效果展示。
8、程序如下:三种图形着色方式的效果展示。程序如下:x,y,z=sphere(20); %球面函数球面函数 colormap(copper);%copper古铜调色图古铜调色图 subplot(1,3,1);surf(x,y,z);axis equalsubplot(1,3,2);surf(x,y,z);shading flat;axis equalsubplot(1,3,3);surf(x,y,z);shading interp;axis equal例例2 三种浓淡处理方式比较。三种浓淡处理方式比较。 nclfnx=-4:4;y=x;nX,Y=meshgrid(x,y);nZ=X.2+Y.2;n
9、surf(X,Y,Z)ncolormap(jet)nsubplot(1,3,1),surf(Z),axis offnsubplot(1,3,2),surf(Z),axis off,shading flatnsubplot(1,3,3),surf(Z),axis off,shading interpnset(gcf,Color,w) 4.透明度控制透明度控制 alphanalpha(v) 对面、块、象三种图形对象的透明度对面、块、象三种图形对象的透明度加以控制;加以控制;0-1之间,之间,0为完全透明,为完全透明,1为不透明。为不透明。V的值越接近于的值越接近于0,透明度越高,透明度越高n例例3
10、 半透明的表面图。半透明的表面图。 nclfnsurf(peaks)nshading interpnalpha(0.5)ncolormap(summer) 2022-5-25figure; X,Y,Z = sphere; surf(X,Y,Z); colormap(lines); shading interp hold on; mesh(2*X,2*Y,2*Z) hidden off %显示被前面图形遮挡的后面部分显示被前面图形遮挡的后面部分 axis equal axis off figure; surf(X,Y,Z,FaceColor,r); hold on; surf(2*X,2*Y,2
11、*Z); alpha(0.4) axis equal axis off 例例4 三维图形的透视效果三维图形的透视效果2022-5-255 灯光设置灯光设置lightnMATLAB提供了灯光设置的函数,其调用格式为:提供了灯光设置的函数,其调用格式为:nlight(Color,选项选项1,Style,选项选项2,Position,选项选项3) option1可以采用可以采用RGB三元组或相应的色彩字符;三元组或相应的色彩字符;option2可以取可以取infinte和和local分别表示无穷远光和近光。分别表示无穷远光和近光。option3为直角坐标三元组形式,对远光,表示光线穿过该点为直角坐标
12、三元组形式,对远光,表示光线穿过该点射向原点;对近光,表示光源所在位置。射向原点;对近光,表示光源所在位置。例例5 光照处理后的球面。程序如下:光照处理后的球面。程序如下:x,y,z=sphere(20);subplot(1,2,1);surf(x,y,z);axis equal;light(Posi,0,1,1);shading interp;hold on;plot3(0,1,1,p);text(0,1,1, light);subplot(1,2,2);surf(x,y,z);axis equal;light(Posi,1,0,1);shading interp;hold on;plot3
13、(1,0,1,p);text(1,0,1, light);2022-5-25 6. 照明模式照明模式 lighting函数,函数,调用语法: lighting options lighting flat,产生均匀光照,选择此方法,以查看面对象,产生均匀光照,选择此方法,以查看面对象,是光照模式的默认设置。是光照模式的默认设置。 lighting gouraud,计算顶点法线并作线性插值修改表面颜,计算顶点法线并作线性插值修改表面颜色,选择此方法,以查看曲面对象。色,选择此方法,以查看曲面对象。 lighting phong,做线性插值并计算每个像素的反射率来修,做线性插值并计算每个像素的反射率
14、来修改表面颜色,选择此方法,以查看曲面对象。此方法比改表面颜色,选择此方法,以查看曲面对象。此方法比lighting gouraud的效果好,但是用于渲染的时间较长。的效果好,但是用于渲染的时间较长。 lighting none,关掉照明。,关掉照明。2022-5-25 7. 图形表面对光照反射属性设置图形表面对光照反射属性设置 material函数函数 调用语法: material options material shiny,使图形对象有相对较高的镜面反射,使图形对象有相对较高的镜面反射,镜面光的颜色仅取决于光源颜色。镜面光的颜色仅取决于光源颜色。 material dull,使图形对象有
15、更多的漫反射,反射光的,使图形对象有更多的漫反射,反射光的颜色仅取决于光源颜色。颜色仅取决于光源颜色。 material metal,使图形对象有非常高的镜面反射和非,使图形对象有非常高的镜面反射和非常低的环境光及漫反射,反射光的颜色取决于光源颜色和常低的环境光及漫反射,反射光的颜色取决于光源颜色和图形表面的颜色。图形表面的颜色。2022-5-25 material(ka kd ks) material(ka kd ks n) material(ka kd ks n sc),用,用ka、kd和和ks分别设置分别设置图形对象的环境光、漫反射和镜面反射的强度,用镜面指图形对象的环境光、漫反射和镜面
16、反射的强度,用镜面指数数n控制镜面亮点的大小,用控制镜面亮点的大小,用sc设置镜面颜色的反射系数。设置镜面颜色的反射系数。ka、kd、ks、n和和sc均为标量,均为标量,sc的取值介于的取值介于0和和1之间。之间。 material default,恢复,恢复ka、kd、ks、n和和sc的默认值。的默认值。例例6 灯光、照明、材质指令所表现的图形。灯光、照明、材质指令所表现的图形。 nclf;nX,Y,Z=sphere(80);ncolormap(jet)nsubplot(1,2,1),surf(X,Y,Z),axis equal off,shading interpnlight (posit
17、ion,0 -10 1.5,style,infinite) nlighting phongnmaterial shinynsubplot(1,2,2),surf(X,Y,Z,-Z),axis equal off,shading flatnlight;lighting flatnlight(position,-1,-1,-2,color,y) nlight(position,-1,0.5,1,style,local,color,w) nset(gcf,Color,w)8、透视、镂空和裁切、透视、镂空和裁切 (1)图形的透视)图形的透视 nhidden off透视被叠压的图形透视被叠压的图形nhi
18、dden on消隐被叠压的图形消隐被叠压的图形例例7 透视演透视演 nX0,Y0,Z0=sphere(30);nX=2*X0;Y=2*Y0;Z=2*Z0;nsurf(X0,Y0,Z0);nshading interpnhold on,mesh(X,Y,Z),colormap(hot)nhold offnhidden offnaxis equal,axis off (2)图形的镂空)图形的镂空n例例8 演示:如何利用演示:如何利用“非数非数”NaN,对图形,对图形进行镂空处理。进行镂空处理。n nP=peaks(30);nP(18:20,9:15)=NaN;nsurfc(P);ncolormap
19、(hot)nlight(position,50,-10,5)nmaterial(0.9,0.9,0.6,15,0.4)ngrid off,box on (3)图形的裁剪处理图形的裁剪处理例例9 绘制三维曲面图,并进行插值着色处理,裁掉图中绘制三维曲面图,并进行插值着色处理,裁掉图中x和和y都都小于小于0部分。程序如下部分。程序如下:x,y=meshgrid(-5:0.1:5);z=cos(x).*cos(y).*exp(-sqrt(x.2+y.2)/4);surf(x,y,z);shading interp;pause %程序暂停程序暂停i=find(x=0&y t = linspace(0,
20、10*pi,2000); x = t.*cos(t); y = t.*sin(t);comet(x,y);例例2 质点绕阿基米德螺线(极坐标方程为质点绕阿基米德螺线(极坐标方程为 )运动的二维)运动的二维彗星运行轨迹动画。彗星运行轨迹动画。2022-5-25 调用格式:调用格式: comet3(z) 显示质点绕着向量显示质点绕着向量z的三维动画轨迹的三维动画轨迹 comet3(x,y,z) 显示质点绕着向量显示质点绕着向量x 、y与与z的三维动画轨迹的三维动画轨迹 comet(x,y,z,p) 用输入参数用输入参数 p 定义轨迹尾巴线的长度定义轨迹尾巴线的长度 comet(axes_handl
21、e,.) 在句柄值为在句柄值为axes_handle的坐标系中显示动画的坐标系中显示动画 2. comet3函数函数2022-5-25 t = linspace(0, 10*pi, 1000); x = 20*sin(t); y = 20*cos(t); z = t; comet3(x,y,z) 例例3 质点绕螺旋线质点绕螺旋线 运动的三维彗星运行运动的三维彗星运行轨迹动画。轨迹动画。20sin20cosxtytzt2022-5-25三、霓虹闪烁动画三、霓虹闪烁动画如今繁华大都市的夜色中,霓虹闪烁,煞是好看,调用如今繁华大都市的夜色中,霓虹闪烁,煞是好看,调用MATLAB中的中的spinmap
22、函数可以做出这种效果的动画,函数可以做出这种效果的动画,它是通过旋转颜色映像的方式来呈现这种霓虹闪烁的动它是通过旋转颜色映像的方式来呈现这种霓虹闪烁的动画效果。画效果。2022-5-25 1. spinmap函数函数 调用格式:调用格式: spinmap,旋转颜色映像约,旋转颜色映像约5秒钟;秒钟; spinmap(t),旋转颜色映像约,旋转颜色映像约t秒钟,具体时间取决于秒钟,具体时间取决于硬硬 件;件; spinmap(t,inc),旋转颜色映像约,旋转颜色映像约t秒钟,并设置增量秒钟,并设置增量参数参数inc,该参数用来调整闪烁频率;,该参数用来调整闪烁频率; spinmap(inf),
23、不限时旋转颜色映像,若需终止,请,不限时旋转颜色映像,若需终止,请按按Ctrl+C键。键。2022-5-25 sphere; axis equal; axis off; spinmap(20,1); 例例4 霓虹闪烁的球体。霓虹闪烁的球体。2022-5-25 四、电影动画四、电影动画所谓的电影动画是指先把一帧帧图片保存起来,然后再所谓的电影动画是指先把一帧帧图片保存起来,然后再像放电影一样把它们按次序播放出来。像放电影一样把它们按次序播放出来。MATLAB中提供中提供了了getframe函数和函数和movie函数,用来制作电影动画。其函数,用来制作电影动画。其中中getframe函数用来抓取图
24、形对象作为电影的帧,函数用来抓取图形对象作为电影的帧,movie函数用来播放电影动画。函数用来播放电影动画。2022-5-25 1. getframe函数函数 调用格式:调用格式: getframe 返回一个电影帧,它是当前坐标系或图形窗口的快照返回一个电影帧,它是当前坐标系或图形窗口的快照 F = getframe 抓取当前坐标系作为一帧抓取当前坐标系作为一帧 F = getframe(h) 抓取句柄值为抓取句柄值为h的图形对象作为一个电影帧的图形对象作为一个电影帧 F = getframe(h,rect) 抓取句柄值为抓取句柄值为h的图形对象的指定区域作为一个电影帧,的图形对象的指定区域作
25、为一个电影帧,rect是形是形如如左边距,下边距,宽度,高度左边距,下边距,宽度,高度的向量,用来设定抓取区域的向量,用来设定抓取区域2022-5-25 2. movie函数函数 调用格式:调用格式: movie(M) 在当前坐标系中只播放一次由矩阵在当前坐标系中只播放一次由矩阵M所保存的电影所保存的电影 movie(M,n) 播放播放n次,若次,若n为负数,则倒着循环播放,若为负数,则倒着循环播放,若n为向量,为向量,第一个元素为播放次数,后续元素为帧序号第一个元素为播放次数,后续元素为帧序号 movie(M,n,fps) 每秒播放每秒播放fps帧,播放帧,播放n次,默认每秒次,默认每秒12
26、帧帧2022-5-25 movie(h,.) 在句柄值为在句柄值为h的图形窗口或坐标系中播放电影的图形窗口或坐标系中播放电影 movie(h,M,n,fps,loc) 在句柄值为在句柄值为h的图形窗口或坐标系的指定位置播放电影。的图形窗口或坐标系的指定位置播放电影。 M,n,fps的说明同上。的说明同上。loc是是4个元素的向量个元素的向量x y 0 0,x和和y用来设定帧的左下角在图形窗口或坐标系的位置,单位为用来设定帧的左下角在图形窗口或坐标系的位置,单位为像素像素2022-5-25 x = linspace(-2,2,100); X,Y,Z = meshgrid(x,x,x); V =
27、(X.2+9/4*Y.2+Z.2-1).3-X.2.*Z.3-9/80*Y.2.*Z.3; p = patch(isosurface(X,Y,Z,V,0); set(p, FaceColor, red, EdgeColor, none); view(3); axis equal ; axis off; light(Posi,0 -2 3); lighting phongset(gca,nextplot,replacechildren); XX = get(p,XData); YY = get(p,YData); ZZ = get(p,ZData); for j = 1:20 bili = si
28、n(pi*j/20); set(p,XData,bili*XX,YData,bili*YY,ZData,bili*ZZ) F(j) = getframe; end movie(F,10) 例例5 一颗跳动的红心。一颗跳动的红心。2022-5-25五、录制五、录制AVI格式视频动画格式视频动画 MATLAB中提供了中提供了avifile函数,用来把函数,用来把getframe函数抓函数抓取的电影帧录制为取的电影帧录制为AVI格式视频动画。利用格式视频动画。利用MATLAB录制录制AVI格式视频动画的步骤依次如下:格式视频动画的步骤依次如下: 调用调用avifile函数先创建一个空白的函数先创建一个空白的avifile文件。文件。 绘制视频的每一个帧所对应的图形。绘制视频的每一个帧所对应的图形。 调用调用getframe函数抓取当前图形窗口或坐标系中的图片。函数抓取当前图形窗口或坐标系中的图片。 调用调用addframe函数把抓取的图片添加到函数把抓取的图片添加到avifile文件中。文件中。 调用调用close函数关闭函数关闭avifile文件。文件。2022-5-25 六、六、 GIF 动画动画 在浏览网页的时候,我们会看到好多很
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资产转让合同格式
- 专业借款合同样本:工程
- 2024房屋装修合同协议书个人范本
- 标准版店铺租赁合同样式
- 2024年度网络安全服务合同标的定义与执行细则
- 水产养殖合同收购范例
- 2024卫星遥感数据服务采购合同
- 2024人工智能在医疗诊断中的应用合同
- 2024年广告发布与 media buy 合同
- 临时用工合同范文
- DB11-972-2013保险营业场所风险等级与安全防范要求
- 高中政治部编版教材高考双向细目表
- 轮扣式模板支撑架安全专项施工方案
- 酒店装饰装修工程验收表
- 中国行业分类代码表
- 社会组织协会换届选举会议主持词
- 呼吸科(呼吸与危重症医学科)出科理论试题及答案
- 清新个人工作述职报告PPT模板
- 公路工程通用(专用)合同条款汇编.
- 工程施工现场及常用对话场景英语集锦
- 肺癌的靶向治疗法PPT课件.ppt
评论
0/150
提交评论