深圳网站建设需要多少钱,网站制作的大公司,网站制作 火星科技,网站建设项目申报书这里写目录标题 一、低层绘图操作1. 曲线对象2. 曲面对象3. 文本对象4. 其他核心对象4.1 区域块对象4.2 方框对象 二、光照和材质处理1. 光照处理2. 材质处理2.1 图形对象的反射特性2.2 material 函数 一、低层绘图操作
MATLAB 将曲线、曲面、文本等图形均视为对象#xff0c… 这里写目录标题 一、低层绘图操作1. 曲线对象2. 曲面对象3. 文本对象4. 其他核心对象4.1 区域块对象4.2 方框对象 二、光照和材质处理1. 光照处理2. 材质处理2.1 图形对象的反射特性2.2 material 函数 一、低层绘图操作
MATLAB 将曲线、曲面、文本等图形均视为对象通过句柄设置这些对象的属性从而绘制出更具个性化的图形。
1. 曲线对象
曲线对象是坐标轴的子对象它既可以定义在二维坐标系中也可以定义在三维坐标系中。建立曲线对象使用 line 函数其调用格式如下 句柄变量line(x,y,z,属性名1,属性值1,属性名2,属性值2,...)其中对 x、y、z 的解释与高层曲线函数 plot 和 plot3 等一样其余参数的解释与前面介绍过的 figure 和 axes 函数类似。每个曲线对象也具有很多属性。除公共属性外其他常用属性如下。1 Color 属性该属性的取值是代表某颜色的字符或 RGB 值用于定义曲线的颜色默认值为当前坐标轴对象的 ColorOrder 属性定义的颜色。2 LineStyle 属性定义线型默认值为 ‘-’即实线。3 LineWidth 属性定义线宽默认值为 0.5 磅。4 Marker 属性定义数据点标记符号默认值为 ‘none’。5 MarkerSize 属性定义数据点标记符号的大小默认值为 6 磅。6 XData、YData、ZData 属性3 种属性的取值都是数值向量或矩阵分别代表曲线对象的 3 个坐标轴数据。例如我们利用曲线对象绘制曲线 y sin ( 2 π t ) y\sin (2\pi t) ysin(2πt) 和 y 3 2 e − 4 t sin ( 4 3 t π 3 ) y\frac{\sqrt{3}}{2}e^{-4t}\sin (4\sqrt{3}t\frac{\pi}{3}) y23 e−4tsin(43 t3π)。程序如下
t0:pi/100:pi/2;
y1sin(2*pi*t);
y2sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*tpi/3);
fighfigure;
axes(GridLineStyle,:,XLim,[0,pi/2],YLim,[-1,1]);
line(XData,t,YData,y1,LineWidth,1);
line(t,y2);
grid on程序运行结果如下图所示。 2. 曲面对象
曲面对象也是坐标轴的子对象它定义在三维坐标系中而坐标系可以在任何视点下。建立曲面对象使用 surface 函数其调用格式如下 句柄变量surface(x,y,z,属性名1,属性值1,属性名2,属性值2,...)其中对 x、y、z 的解释与高层曲面函数 mesh 和 surf 等一样其余参数的解释与前面介绍过的 figure 和 axes 等函数类似。每个曲面对象也具有很多属性。除公共属性外其他常用属性如下。1 EdgeColor 属性该属性的取值是代表某颜色的字符或 RGB 值还可以是 ‘flat’、‘interp’ 或 ‘none’默认为黑色。定义曲面网格线的颜色或着色方式。2 FaceColor 属性该属性的取值是代表某颜色的字符或 RGB 值还可以是 ‘flat’默认值、‘interp’ 或 ‘none’。 定义曲面网格片的颜色或着色方式。3 LineStyle 属性定义曲面网格线的线型默认为实线。4 LineWidth 属性定义曲面网格线的线宽默认值为 0.5 磅。5 Marker 属性定义曲面数据点标记符号默认值为 ‘none’。6 MarkerSize 属性定义曲面数据点标记符号的大小默认值为 6 磅。7 XData、YData、ZData 属性3 种属性的取值都是数值向量或矩阵分别代表曲面对象的 3 个坐标轴数据。例如我们利用曲面对象绘制三维曲面 y sin y cos x y\sin y\cos x ysinycosx。程序如下
x0:0.1:2*pi;
[x,y]meshgrid(x);
zsin(y).*cos(x);
axes(view,[-37.5,30]);
hssurface(x,y,z,FaceColor,w,EdgeColor,flat);
grid on;
xlabel(x-axis);
ylabel(y-axis);
zlabel(z-axis);
title(mesh-surf);
pause;
set(hs,FaceColor,flat);开始网格片的颜色设置为白色实际上得到的是网格图如下图所示这与高层函数 mesh 所画曲面相同。 暂停后诚信设置网格片的颜色得到着色表面图如下图所示。 3. 文本对象
文本对象主要用于给图形添加文字标注。在文本对象中除使用一般的文本以外还允许使用 LaTeX 字符。使用 text 函数可以根据指定位置和属性值添加文本说明并保存句柄。该函数的调用格式如下 句柄变量text(x,y,z,说明文字,属性名1,属性值1,属性名2,属性值2,...)其中说明文字中除使用标准的 ASCII 字符外还可使用 LaTeX 格式的控制字符。例如 htext(0.5,0.5,{\gamma}{\rho}^2);将得到标注效果 γ ρ 2 \gamma \rho ^{2} γρ2。除公共属性外文本对象的其他常用属性如下。1 Color 属性定义文本对象的显示颜色默认为黑色。2 String 属性该属性的取值是字符串或字符串矩阵它记录着文字标注的内容。3 Interpreter 属性该属性的取值是 ‘tex’默认值或 ‘none’该属性控制对文字标注内容的解释方式即 LaTeX 方式或 ASCII 方式。4 FontSize 属性定义文本对象的大小其默认值为 10 磅。5 Rotation 属性该属性的取值是数值量默认值为 0。它定义文本对象的旋转角度取正值时表示逆时针方向旋转取负值时表示顺时针方向旋转。例如我们利用曲线对象绘制 y sin θ y\sin \theta ysinθ 和 y cos θ y\cos \theta ycosθ 并利用文字对象完成标注。程序如下
theta-pi:.1:pi;
y1sin(theta);
y2cos(theta);
hline(theta,y1,LineStyle,:,Color,g);
line(theta,y2,LineStyle,--,Color,b);
xlabel(-\pi \leq \theta \leq \pi)
ylabel(sin\theta)
title(Plot of sin\theta)
text(-pi/4,sin(-pi/4),\leftarrow sin(-\pi\div4) , FontSize,12)
set(h,Color,r,LineWidth,2) %改变曲线1的颜色和线宽程序运行结果如下图所示。 4. 其他核心对象
4.1 区域块对象
区域块对象是指一个任意多边形区域。在 MATLAB 中可以使用 patch 函数创建一个或多个多边形。有两种形式的 patch 函数一种是高级语法形式另一种是低级语法形式。前者通过指定每个小面的顶点坐标和颜色来创建区域块对象后者通过指定所有顶点的坐标和各小面的顶点和颜色来创建。使用高级语法形式时patch 函数的调用格式如下 patch(x,y,z,c)该函数在当前坐标轴中创建二维或三维空间中带填充模式的区域块对象。x、y、z 确定顶点坐标。如果 x、y、z 为矩阵则 MATLAB 按列创建多个多边形。c 指定每一区 域块对象的颜色它既可以用字符表示也可以用 RGB 三元组表示。例如我们将绘制一个用红色填充的正方形区域。程序如下
x[10, 10,25,25];
y[10,25,25,10];
patch(x,y,[1,0,0])程序运行结果如下所示。 例如我们生成一个正十边形其中用黄色填充。程序如下
t0:pi/5:2*pi;
patch(sin(t),cos(t),y);
axis equal程序运行结果如下图所示。 patch 函数的低级语法格式只接受属性名和属性值配对参数其调用格式如下 句柄变量patch(属性名1,属性值1,属性名2,属性值2,...)除公共属性外区域块对象的其他常用属性如下。1 Faces 属性定义各小面的顶点。2 Vertices 属性定义各顶点的坐标。3 FaceColor 属性该属性的取值是代表某颜色的字符或 RGB 值还可以是 ‘flat’、‘interp’ 或 ‘none’默认为黑色。定义小面的颜色。4 EdgeColor 属性该属性的取值是代表某颜色的字符或 RGB 值还可以是 flat、‘interp’ 或 ‘none’默认为黑色。定义小面边缘的颜色。5 FaceVertexCData 属性定义用 Faces/Vertices 方法所需要的颜色数据其值是元素为 RGB 值的 n × 3 n×3 n×3 矩阵。例如我们绘制一个用红色填充的正方形区域可用 patch 函数的低级形式。程序如下 vert[10,10;10,25;25,25;25,10];fac[1,2,3,4];patch(Faces,fac,Vertices,vert,FaceColor,r);程序运行结果如下图所示。 例如我们为说明 patch 函数的用法下 面用它两种不同的格式来绘制一个由4个小面组成的扇面。首先通过小面顶点坐标和颜色进行创建用 x、y、z 定义小面的顶点坐标用 c 定义小面的颜色程序如下
x[0,0,0,0;1,0.8,0.5,0;1,1,0.8,0.5];
y[0,0,0,0;0.5,0.8,1,1;0,0.5,0.8,1];
z[0.5,0.5,0.5,0.5;1.5,1.5,1.5,1.5;1.5,1.5,1.5,1.5];
mcjet(4); %定义色图矩阵
c(1,1,1:3)mc(1,:);
c(1,2,1:3)mc(2,:);
c(1,3,1:3)mc(3,:);
c(1,4,1:3)mc(4,:);
patch(x,y,z,c);
axis([0,1,0,1,0,2]);
grid程序运行后生成如下图所示的 4 个小三角形组成的扇面。 下面使用 patch 函数的第二种格式用 vert 定义各顶点的坐标用 fac 定义组成各小面的顶点的编号。程序如下
vert[0,0,0.5;1,0,1.5;1,0.5,1.5;0.8,0.8,1.5;0.5,1,1.5;0,1,1.5];
fac[1,3,2;1,4,3;1,5,4;1,6,5];
mcjet(4);
patch(Faces,fac,Vertices,vert,FaceVertexCData,mc, ...FaceColor, Flat) ;
axis([0,1,0,1,0,2]);
grid程序运行后生成如下图所示的图形。采用第 2 种格式建立区域块的时候需要的数据更少多个小面的公共顶点只需定义一次就够了所以对于有多个小面的区域快更合适。 4.2 方框对象
在 MATLAB 中矩形、椭圆以及两者之间的过渡图形如圆角矩形都称为方框对象。创建方框对象的低层函数是 rectangle其调用格式如下 句柄变量rectangle(属性名1,属性值1,属性名2,属性值2,...)除公共属性外方框对象的其他常用属性如下。1 Position 属性与坐标轴的 Position 属性基本相同相对坐标轴原点定义方框的位置。该属性的取值格式为 [x, y, w, h](x, y) 确定方框对象的左下角坐标w、 h 分别指定方框的宽和高。2 Curvature 属性定义方框边的曲率。该属性指定曲率其取值格式为 [x, y]其中 x 为水平曲率y 为垂直曲率。当值为 [0, 0] 时创建矩形当值为 [1, 1] 时创建椭圆。如果只指定一个值则水平边和垂直边都会发生相同长度的弯曲。曲率的大小由短的边确定。不带任何参数的 rectangle 函数绘制一个单位正方形左下角坐标为 [0, 0]右上角坐标为 [1,1]曲率为 [0,0]即没有曲率。3 LineStyle 属性定义线型默认为实线。4 LineWidth 属性定义线宽默认值为 0.5 磅。5 EdgeColor 属性定义边框线的颜色默认为黑色。6 FaceColor 属性定义填充颜色默认值为 ‘none’。例如我们在同一个图形窗口种创建矩形、圆角矩形、椭圆和圆各一个并使用不同的线型和线宽。程序如下
subplot(2,2,1);
rectangle(Position,[2,3,25,15],LineWidth,3);
subplot(2,2,2);
rectangle(Position,[3,5,15,8],Curvature,0.4,LineWidth,2);
subplot(2,2,3);
rectangle(Position,[5,3,10,15],Curvature,[1,1]);
subplot(2,2,4);
rectangle(Position,[5,3,10,10],Curvature,[1,1],...LineStyle, --,FaceColor,r);
axis equal
程序运行结果如下图所示。 二、光照和材质处理
使用光源对象实现光照处理可以将图形表现得更加真实使图形表面微妙的差异更清楚。光源对象是不可见的但是可以像设置其他图形对象的属性那样设置光源对象的类型、颜色、位置和其他属性。材质体现了图形对象的反射特性修改区域块和曲面对象的反射特性可以改变在场景中应用光照时对象的显示外观。
1. 光照处理
MATLAB 提供 light 函数创建光源对象其调用格式如下 句柄变量light(属性名1,属性值1,属性名2,属性值2,...)发光对象有如下 3 个重要属性。1 Color 属性设置光的颜色默认为白色。2 Style 属性设置光源对象是否在无穷远可取值为 ‘infinite’默认值和 ‘local’分别表示无穷远光和近光。3 Position 属性该属性的取值是数值向量取三维坐标点组成的向量形式 [x, y, z]用于设置光源对象与坐标轴原点的距离发光对象的位置与 Style 属性有关。若 Style 属性为 ‘local’则设置的是光源的实际位置。若Style 属性为 ‘infinite’则设置的是光线射过来的方向表示穿过该点射向原点。假如函数不包含任何参数则采用默认设置白光、无穷远、穿过 (1,0,1) 点射向坐标原点。利用 lighting 命令可以设置光照模式其格式如下 lighting选项其中选项有 4 种取值flat、gouraud、phong、none。 flat 选项使得入射光均匀洒落在图形对象的每个面上是默认选项gouraud 选项先对顶点颜色插补再对顶点勾画的面上颜色进行插补用于表现曲面phong 选项对顶点处的法线插值再计算各个像素的反光它生成的光照效果好但更费时none 选项关闭所有光源。例如我们绘制光照处理后的球面并观察不同光照模式下的效果。程序如下
[x,y,z]sphere(20);
subplot(1,4,1);
surf(x,y,z);
axis equal;
shading interp;
hold on;
subplot(1,4,2);
surf(x,y,z);
axis equal;
light(Position,[0,1,1]);
shading interp;
lighting flat;
hold on;
plot3(0,1,1,p);
text(0,1,1,light);
subplot(1,4,3);
surf(x,y,z);
axis equal;
light(Position,[0,1,1]);
shading interp;
lighting gouraud;
hold on;
subplot(1,4,4);
surf(x,y,z);
axis equal;
light(Position,[0,1,1]);
shading interp;
lighting phong;程序运行结果如下。4 个球分别是没有使用光照使用 flat 光照使用 gouraud 光照和使用 phong 光照时的显示效果第二个球还标出了光源的位置 2. 材质处理
材质体现了图形对象的反射特性修改区域块和曲面对象的反射特性可以改变在场景中应用光照时对象的显示外观。
2.1 图形对象的反射特性
图形对象的反射特性包括镜面反射和漫反射、环境光、镜面反射指数、镜面反射光的颜色和背面光照可以组合使用这几种特性来生成特殊的显示结果。1 镜面反射和漫反射。区域块和曲面对象的 SpecularStrength 属性用来控制对象表面镜面反射的强度属性值取 0~1 之间的数默认取 0.9。DiffuseStrength 属性用来控制对象表面漫反射的强度属性值取 0~1 之间的数默认值取 0.6。2 环境光。环境光不是镜面光它均匀地洒在场景中的所有对象上。只有在坐标系中有 Light 对象时环境光才可见。AmbientStrength 属性是一个用于区域块和曲面对象的属性确定特定对象上环境光的强度属性值取 0~1 之间的数默认值取 0.3。3 镜面反射指数。镜面反射光的大小与区域块和曲面对象的 SpecularExponent 属性有关该属性的值介于 1~500 之间默认值为 10。4 镜面反射光的颜色。镜面反射光的颜色可以有一个变化范围即从对象颜色与光源颜色的组合色变到只有光源颜色。区域块和曲面对象的 SpecularColorReflectance 属性控制这个颜色属性值取 0~1 之间的数默认值为 1。5 背面光照。背面光照可用于显示对象内表面和外表面的差别。区域块和曲面对象的 BackFaceLighting 属性控制该效果属性取值为 ‘unlit’、‘lit’ 和 ‘reverselit’默认值。
2.2 material 函数
使用 material 函数也可以设置区域块和曲面对象的表面反射特性其调用格式如下1 material shiny镜面反射光的强度比漫反射光和环境光的强度要高得多镜面光的颜色只决定于光源的颜色。2 material dull要进行漫反射没有镜面反射但是反射光的颜色只与光源有关。3 material metal镜面反射很强环境光和漫反射光较弱反射光的颜色与光源和对象的颜色都有关系。4 material([ka,kd,ks])设置对象的环境光、漫反射光和镜面光的强度。5 material([ka,kd,ks,n])设置环境光、漫反射光、镜面光的强度以及对象的镜面反射指数。6 material([ka,kd,ks,n,sc])设置环境光、漫反射光、镜面光的强度、对象的镜面反射指数以及镜面反射光的颜色。7 material default将环境光、漫反射光、镜面光的强度、对象的镜面反射指数和镜面反射光的颜色设置为默认值。这里需要注意的是material 函数设置坐标系中所有区域块和曲面对象的 AmbientStrength、 DiffuseStrength、SpecularStrength、 SpecularExponent 和 SpecularColorReflectance 属性。坐标系中必须有一个可见的 Light 对象。例如我们生成一个球体和一个立方体观察表面反射特性设置效果。程序如下
sphere(36);
hfindobj(Type,surface);
set (h,FaceLighting,phong,FaceColor,interp, ...EdgeColor,[0.4,0.4,0.4],BackFaceLighting,lit)
hold on
vert[2,0,-1;2,1,-1;3,0,0;3,0,-1;2,0,0;2,1,0;3,1,0;3,0,0];
fac[1,2,3,4;2,6,7,3;4,3,7,8;1,5,8,4;1,2,6,5;5,6,7,8];
patch(Faces,fac,Vertices,vert,FaceColor,y);
light(Position,[1,3,2]);
light(Position,[-3,-1,3]);
material shiny
axis equal
hold off程序中用 findobj 函数查找 Type 属性为 surface 的对象从而可以获取该球面的句柄进而设置其属性。球面使用了 phong FaceLighting 属性值因为生成了最平滑的光照插值效果。vert 和 fac 定义立方体。默认时立方体使用 flat Facelighting 属性值增强每个边的可见性。material shiny 命令会影响立方体和球体的反射属性。因为球体是闭合的所以 BackFaceLighting 属性从默认设置变成了正常光照删除了不必要的边缘效应。程序运行后生成的图形效果如下图所示。