[MATLAB]曲面与曲面对象(光照+反射)

本博文源于中南大学《科学计算与MATLAB语言》

  • 曲线对象
  • 曲面对象
  • 光照处理
  • 图形对象的反射特性

曲线对象

建立曲线对象

line函数的调用格式为:

句柄变量=line(x,y,z,属性1,属性值1,属性2,属性值2,...)

其中,x、y、z存储数据点的坐标,与plot、plot3函数含义相同。

曲线对象常用属性

  • Color属性:定义曲线的颜色,默认值为[0,0,0].
  • LineStyle属性:定义线型,默认值为’-’.
  • LineWidth属性:定义线宽,默认值为0.5磅。
  • Marker属性:定义数据点标记符号,默认值为’‘none’.
  • MarkerSize属性:定义数据点标记符号的大小,默认值为6磅.
  • XData、YData、ZData属性:设置3个坐标轴的数据源.

利用曲线对象绘制五环图案

>> t=-0.1:0.1:2*pi;
>> x=cos(t);y=sin(t);
>> line(x,y,'Color','b')
>> t=-0.1:0.1:2*pi;
>> x=cos(t);y=sin(t);
>> 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')
>> ha=gca;
>> ha.XLim = [-2,7];
>> ha.YLim = [-3,2];
>> axis equal
>> 

在这里插入图片描述

曲面对象

建立曲面对象

surface函数的调用格式为:

句柄变量=surface(x,y,z,c,属性1,属性值1,属性2,属性值2.....)

其中,x、y、z存储数据点的坐标,与surf函数含义相同;c用于指定在不同高度下的曲面颜色。
利用surface函数建立的曲面对象,默认视点的方位角为0°,仰角为90°

与曲面形态有关的属性

  • FaceColor属性:定义曲面网格片的颜色,可取值为:
'flat':每一个网格片用单一颜色填充.
'interp':用渐变方式填充网格片
'none':网格片无颜色.
'texturemap':用Cdata属性定义的颜色填充网格片。
RGB向量或代表颜色的字符。
  • EdgeColor属性:定义曲面网格线的颜色。

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

在这里插入图片描述

>> r=linspace(0,2*pi,60);
>> [u,v]=meshgrid(r);
>> 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);
>> axis equal
>> hs.EdgeColor='none';
>> hs.FaceColor='interp';
>> 

在这里插入图片描述

光照处理

创建光源对象

light函数的调用格式为:

对象句柄=light(属性1,属性值1,属性2,属性值2,...)

其中,属性指定光源的特性。

光源对象的属性

  • Color属性:设置光的颜色.
  • Style属性:设置光源类型,其取值为’infinite’(默认值)或’local’。
  • Position属性:指定光源位置。

设置光照模式

lighting命令格式为:

lighting 选项

其中,选项可取值为:

  • flat
  • gouraud
  • phong
  • none

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

>> r=linspace(0,2*pi,60);
>> [u,v]=meshgrid(r);
>> x=(8+3*cos(v)).*cos(u);
>> y=(8+3*cos(v)).*sin(u);
>> z=3*sin(v);
>> axes('Position',[0.005,0.675,1.0,0.3],'View',[-37.5,30]);
>> hs1=surface(x,y,z);
>> axis equal
>> axes('Position',[0.05,0.35,1.0,0.3],'View',[-37.5,30]);
>> hs2=surface(x,y,z);
>> axis equal
>> light('Position',[0,0,8])
>> lighting flat
>> axes('Position',[0.05,0.025,1.0,0.3],'View',[-37.5,30]);
>> hs3=surface(x,y,z);
>> axis equal
>> light('Position',[0,0,8])
>> lighting phong

在这里插入图片描述

图形对象的反射特性

  • SpecularStrenth属性:控制对象表面镜面反射的强度
  • DiffuseStrenth属性:控制对象表面漫反射的强度。
  • AmbientStrength属性:确定环境光的强度.
  • SpecularExponent属性:控制镜面反射指数。
  • BackFaceLighting属性:控制对象内表面和外表面的差别.
'until'
'lit'
'reverselit'(默认值)

例如:

hs.SpecularStrenth=0.5
发布了137 篇原创文章 · 获赞 30 · 访问量 8868

猜你喜欢

转载自blog.csdn.net/m0_37149062/article/details/105362013