2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 8.2 matlab曲线对象和曲面对象(曲线对象 曲面对象 光照处理 图形对象的反射特性)

8.2 matlab曲线对象和曲面对象(曲线对象 曲面对象 光照处理 图形对象的反射特性)

时间:2018-07-04 00:23:44

相关推荐

8.2 matlab曲线对象和曲面对象(曲线对象 曲面对象 光照处理 图形对象的反射特性)

1、曲线对象

(1)建立曲线对象

line数的调用格式为:

句柄变量=line(x, y,z,属性1,属性值1,属性2,属性值2…)其中,参数x、y、z是同型的向量或知阵,x、y、z存储数据点的坐标,与plot、plot3函数含义相同。

与plot函数不同的是,plot函数每调用一次就会刷新坐标轴,清空原有图形再绘制新的曲线。而line函数生成的曲线则在已有图形上叠加显示。

(2)曲线对象常用属性

①Color属性:定义曲线的颜色,默认值为[0 0 0]。

②LineStyle属性:定义线型,默认值为’-’。

③LineWidth属性:定义线宽,默认值为0.5磅。

④Marker属性:定义数据点标记符号,默认值为’none’。

⑤MarkerSize属性:定义数据点标记符号的大小,默认值为6磅。

⑥XData、YData、ZData属性:设置3个坐标轴的数据源。

例1:利用曲线对象绘制五环图案。

t = -0.1:0.1:2*pi; %圆环为封闭图形,将t的初值设为-0.1,使得曲线首尾顶点坐标重合x = cos(t);y = sin(t);%计算圆环上数据点的坐标subplot(2,1,1)line(x,y,'color','b')line(x+1.2,y-1,'color','y')line(x+2.4,y,'color','k')line(x+3.6,y-1,'color','g') %line函数的前两个参数确定圆环的位置,参数Color指定曲线的颜色line(x+4.8,y,'color','r') %依次绘制从左到右5个圆环axis equal%使圆呈现正圆h1 = gca;%获取当前坐标轴句柄h1.XLim = [-2 7];h1.YLim = [-3 2];%设置坐标轴范围hold onsubplot(2,1,2)line(x,y,'color','b')line(x+1.2,y-1,'color','y')line(x+2.4,y,'color','k')line(x+3.6,y-1,'color','g')line(x+4.8,y,'color','r')axis equalh2 = gca;h2.XLim = [-2 7];h2.YLim = [-3 2];for n=1:size(h2.Children)h2.Children(n).LineWidth = 3;%将坐标轴的所有子对象的线宽改为5endaxis equal

2、曲面对象

(1)建立曲面对象

surface函数的调用格式为:

句柄变量=surface(x, y,z,c,属性1,属性值1,属性2,属性值2,…)—般情况下参数yz是同型矩阵,其中,其中xy是网格坐标矩阵,z是网格点上的高度矩阵。x、y、z存储数据点的坐标,与surf函数含义相同;c用于指定在不同高度下的曲面颜色。

利用surface函数建立的曲面对象,默认视点的方位角为0°,仰角为90°。

与surf函数不同的是,surf函数每调用一次就会刷新坐标轴,清空原有图形再绘制新的曲线。而surface函数生成的曲面则在已有图形上叠加显示。

(2)与曲面形态有关的属性

①FaceColor属性:定义曲面网格片的颜色,可取值为:

‘flat’:每一个网格片用单一颜色填充;‘interp’:用渐变方式填充网格片;‘none’:网格片无颜色;‘texturemap’:用Cdata属性定义的颜色填充网格片;RGB向量或代表颜色的字符。

②EdgeColor属性:定义曲面网格线的颜色。

例2:利用曲面对象绘制立体圆环,圆环方程为

t = linspace(0,2*pi,60);[u,v] = meshgrid(t);x = (8+3*cos(v)).*cos(u);y = (8+3*cos(v)).*sin(u);z = 3*sin(v); %根据方程计算圆环上数据点的坐标axes('View',[-37.5 30]); %建立坐标轴并指定视点的位置hs = surface(x,y,z); %结果为图一title('图1 改变前的图形')axis equal hs.EdgeColor = 'none'; %设置曲面无网格线hs.FaceColor = 'interp'; %设置曲面网格用插值模式填充,结果为图二title('图2 改变后的图形')

3、光照处理

曲面的呈现效果除了与自身属性有关,还与光照和材质有关。不同光原从不同位置,以不同角度投射光到物体的表面,使图形表面微妙的差异体现得更清楚。

(1)创建光源对象

light函数的调用格式为:

对象句柄=light(属性1,属性值1,属性2,属性值2,…)其中,属性指定光源的特性。

(2)光源对象的属性

①Color属性:设置光的颜色。默认为白色。

②Style属性:设置光源类型,其取值为’infinite’(无穷远光)(默认值)或’local’(近光) 。

③Position属性:指定光源位置。是一个三元向量

( 3)设置光照模式

lighting命令格式为:

lighting 选项 ,其中,选项可取值为:

①flat:使得入射光均匀洒落在图形对象的每个面上。默认选项

②gouraud:先对顶点颜色插补,再对顶点勾画的面上颜色进行插补,用于表现曲面。

③phong:对顶点处的法线插值,再计算各个像素的反光。它生成的光照效果好但更费时。

④none:关闭所有光源。

例3:绘制光照处理后的圆环面并观察不同光照模式下的效果。

t = linspace(0,2*pi,60);[u,v] = meshgrid(t);x = (8+3*cos(v)).*cos(u);y = (8+3*cos(v)).*sin(u);z = 3*sin(v); %根据方程计算圆环上数据点的坐标axes('Position',[0.05,0.675,1.0,0.3],'View',[-37.5 30]); %建立子图1的坐标轴 hs1 = surface(x,y,z); %绘制曲面,没有加入近光源进行照射axis equalhs1.EdgeColor = 'none'; %设置曲面无网格线hs1.FaceColor = 'interp'; %网格用插值模式填充axes('Position',[0.05,0.35,1.0,0.3],'View',[-37.5 30]); %建立子图2的坐标轴 hs2 = surface(x,y,z);axis equalhs2.EdgeColor = 'none';hs2.FaceColor = 'interp';light('Position',[0 0 8]); % %加入近光源进行照射,光源设置在图形正上方,使得图形表面有金属质感lighting flat%图光源采用flat模式,表面呈现网格块axes('Position',[0.05,0.025,1.0,0.3],'View',[-37.5 30]); %建立子图3的坐标轴 hs3 = surface(x,y,z);axis equalhs3.EdgeColor = 'none';hs3.FaceColor = 'interp';light('Position',[0 0 8]);lighting phong%图光源采用phong模式,表面非常光滑

4、图形对象的反射特性

①SpecularStrength属性:控制对象表面镜面反射的强度。取值范围为[0,1]之间。

②DiffuseStrength 属性:控制对象表面漫反射的强度。

③AmbientStrength属性:确定环境光的强度。

④SpecularExponent属性:控制镜面反射指数。

⑤BackFaceLighting属性:控制对象内表面和外表面的差别。

‘unlit’、‘lit’、 ‘reverselit’(默认值)

例4:绘制具有不同反射特性的圆环面并观察反射特性对图形效果的影响。

t = linspace(0,2*pi,60);[u,v] = meshgrid(t);x = (8+3*cos(v)).*cos(u);y = (8+3*cos(v)).*sin(u);z = 3*sin(v); %根据方程计算圆环上数据点的坐标axes('Position',[0.05,0.675,1.0,0.3],'View',[-37.5 30]); %建立子图1的坐标轴 hs1 = surface(x,y,z); %绘制曲面,没有加入近光源进行照射axis equalhs1.EdgeColor = 'none'; %设置曲面无网格线hs1.FaceColor = 'interp'; %网格用插值模式填充light('Position',[0 0 8]);lighting phong%图光源采用phong模式,表面非常光滑hs1.SpecularStrength = 0.1; %表面暗,无光泽axes('Position',[0.05,0.35,1.0,0.3],'View',[-37.5 30]); %建立子图2的坐标轴 hs2 = surface(x,y,z);axis equalhs2.EdgeColor = 'none';hs2.FaceColor = 'interp';light('Position',[0 0 8]); % %加入近光源进行照射,光源设置在图形正上方,使得图形表面有金属质感lighting phong%图光源采用phong模式,表面呈现网格块hs2.SpecularStrength = 0.5; %表面有一些光泽axes('Position',[0.05,0.025,1.0,0.3],'View',[-37.5 30]); %建立子图3的坐标轴 hs3 = surface(x,y,z);axis equalhs3.EdgeColor = 'none';hs3.FaceColor = 'interp';light('Position',[0 0 8]);lighting phong%图光源采用phong模式,表面非常光滑hs1.SpecularStrength = 1.0; %表面最亮

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。