专题八图形窗口与坐标轴-1

简介: 专题八图形窗口与坐标轴

一、图形窗口与坐标轴


1、图形对象句柄

(1)句柄概念

MATLAB中,每一个具体的图形都是有若干个不同的图形对象组成的,用句柄来标识对象,通过句柄来访问相应对象的属性。

例子:绘制多个图形,并保持图形句柄

t=0:pi/10:2*pi;
h1=plot3(t+pi,t-2*pi,sin(t),'r');
hold on
[x,y]=meshgrid(t);
z=sin(x);
h2=mesh(t-2*pi,t+pi,z);
[x3,y3,z3]=cylinder(t);
h3=surf(x3,y3,z3);

(2)访问图形对象

访问图形对象是指获取或设置图形对象的属性。不同图形对象具有的属性不同,但访问方法一样。

对象句柄.属性名

例子:

(3)获取特定图形对象句柄的函数

  • gcf:获取当前窗口的句柄。
  • gca:获取当前坐标区的句柄。
  • gco:获取最近被选中的图形对象的句柄。
  • findobj:按照指定的属性来获取图形对象的句柄。



2、图形对象属性

(1)图形对象的常用公共属性

  • Children属性:该对象的所有子对象的句柄组成的一个向量。



  • Parent属性:该对象的父对象的句柄。
  • Type属性:对象的类型,这是一个只读属性。
  • Tag属性:用于给对象定义一个标识符。

例子:分别在两个子图中绘制曲线和曲面。然后设置子图1的背景颜色为黄色,曲线线条颜色为红色。设置子图2背景色为青色。


subplot(1,2,1)
h1=fplot(@(t)t.*sin(t),@(t)t.*cos(t),[0,6*pi]);
axis equal
subplot(1,2,2)
[x,y,z]=peaks(20);
h2=mesh(x,y,z);
h10=h1.Parent;
h10.Color='y';
h1.Color='r';
h2.Parent.Color='cyan';

(2)图形对象的常用动态属性


  • KeyPressFcn属性:定义按下键盘按键事件的响应。
  • CreateFcn属性:定义创建图形对象时做出的响应。
  • DeleteFcn属性:定义取消图形对象时做出的响应。
  • WindowButtonDownFcn或ButtonDownFcn属性:定义鼠标键按下事件的响应。


3、图形窗口的操作

(1)建立图形窗口对象

MATLAB通过figure函数来创建窗口对象,格式如下:

  • 句柄变量=figure(属性1,属性值1,属性2,属性值2,……)
    其中属性用于设置图形窗口的特征。
  • 句柄变量=figure
    按MATLAB默认的属性值建立图形窗口。
  • figure(窗口句柄)
    设定该句柄对应得窗口为当前窗口。
    (2)图形窗口属性
  • MenuBar属性:控制图形窗口是否具有菜单条,其取值为’none’或’figure’。
  • Name属性:指定图形窗口得标题。
  • NumberTitle属性:决定在图形窗口的标题是否以‘Figure n:’为标题前缀。
  • Color属性:设定图形窗口背景得颜色。
  • Position属性:定义图形窗口对象在屏幕上的位置和大小,值是一个4元行向量:[x,y,w,h]
  • Units属性:定义图形窗口使用的度量单位,将影响一切定义大小的属性项。

– ‘pixels’:指定度量单位为像素(默认值)。

– ‘inches’:指定度量单位为英寸。

– ‘centimeters’:指定度量单位为厘米。

–‘points’:指定度量单位为磅。

– ‘normalized’:指定用相对单位。

例子:建立一个图形窗口。该图形窗口没有菜单条,标题名为“图形窗口示例”,起始于屏幕左下角、宽度和高度分别为300像素点和150像素点,背景颜色为青色,且当用户从键盘按下任意一个键时,然后在窗口中单击鼠标左键,在鼠标指针所在位置将显示“Hello ,World!”


hf=figure;%按MATLAB默认的属性值建立图形窗口
hf.Color=[0,1,1];%窗口背景颜色为青色
hf.Position=[1,1,300,150];%指定图形窗口位置
hf.Name='图形窗口示例';%指定图形窗口的名称
hf.NumberTitle='off';%图形窗口的标题不以‘Figure n:’为标题前缀
hf.MenuBar='none';%图形窗口不具有菜单条
hf.ButtonDownFcn='gtext("Hello World!")';%定义鼠标键按下事件的响应


4、坐标轴对象的操作

(1)建立坐标轴对象

使用axes函数,格式如下:

  • 句柄变量=axes(属性1,属性值1,属性2,属性值2,……),其中属性用于设置坐标轴的外观和行为。
  • 句柄变量=axes,按MATLAB默认的属性值在当前图形窗口创建坐标轴。
  • axes(坐标轴句柄),设定该句柄代表的坐标轴为当前的坐标轴。

(2)坐标轴对象的属性

  • Position属性:定义坐标轴在图形窗口中的位置和大小。
  • Units属性:定义坐标轴使用的度量单位,默认是‘normalized’。
  • Box属性:决定坐标轴是否带有边框,可取值是‘on’或者‘off’。‘off’是默认值。
  • GridLineStyle属性:用于定义网格线的类型,可取值是‘:’(默认值)、‘-’、‘-.’、‘–’、‘none’。
  • Title属性:用于对坐标轴标题对象进行操作,取值是通过title函数建立的标题对象的句柄。
  • XLabel、YLabel、Zlabel数学:取值分别是通过xlabel、ylabel、zlabel函数建立的标签对象的句柄。
  • XLim、YLim、ZLim属性:分别定义各坐标轴的下限和上限,取值是2元向量[Lmin,Lmax],默认值是[0,1]。
  • XScale、YScale、ZScale属性:定义各坐标轴的刻度类型。可取值是‘linear’、‘log’。
  • View属性:定义视点,取值是2元向量[az,el],az定义方位角,el定义仰角。坐标轴默认方位角是0°,仰角是90°。

例子:利用坐标轴对象实现图形窗口的分割。

ha=axes('Position',[0.1,0.1,0.7,0.7]);%创建坐标轴,原点位于窗口0.1宽和0.7高交点处,坐标轴宽度和高度均为窗口的0.7
contour(peaks(20))%等高线
ha.Title=title('等高线');
ha.YLabel=ylabel('南北向');
ha.XLabel=xlabel('东西向');
hb=axes('Position',[0.65,0.7,0.28,0.28]);
surf(peaks);
hb.View=[-30,45];

  • ColorOrder属性:用于设置多条曲线的颜色顺序,是一个n*3矩阵,每行用RGB三元组表示一种颜色,默认n为7.
    例子:定义包含4种颜色的ColorOrder属性,绘制6条曲线。
x=[0,0];y=[0,1];
ha=axes;
ha.ColorOrder=[0,0,0;1,0,0;0,1,0;0,0,1];%定义四种颜色
hold on
plot(x,y,x+0.5,y,x+1,y,x+1.5,y,x+2,y,x+2.5,y);
ha.XLim=[-0.2,3];
ha.YLim=[-0.2,1.2];



二、曲线与曲面对象


1、曲线对像

(1)建立曲线对象

line函数的调用格式:

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

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

(2)曲线对象常用属性

  • 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')
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;%获取当前坐标区的属性
for n=1:size(ha.Children)%将子对象(即所有线条)的线宽设置为5磅
    ha.Children(n).LineWidth=5;
end
ha.XLim=[-2,7];
ha.YLim=[-3,2];


2、曲面对象

(1)建立曲面对象

使用surface函数,调用格式为:

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

其中,x,y,z存储数据点的坐标,与mesh、surf函数含义相同;c用于指定在不同高度下的曲面颜色。

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

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

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

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

– ‘flat’:每一个网格片用单一颜色填充。

– ‘interp’:用渐变方式填充网格片。

– ‘none’:网格片无颜色。

– ‘texturemap’:用Cdata属性定义的颜色填充网格片。

– RGB向量或代表颜色的字符

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


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

image.png

r=linspace(0,2*pi,100);
[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';


3、光照处理

(1)创建光源对象

light函数的调用格式:

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

(2)光源对象的属性

  • Color属性:设置光的颜色。
  • Style属性:设置光源类型,其取值为‘infinite’(默认值)或‘local’。
  • Position属性:指定光源位置,值是一个3元向量。

(3)设置光照模式

利用lighting命令可以设置光照模式,格式如下:

lighting 选项

其中,选项可取值:

  • flat:使得入射光均匀洒落在图形对象的每个面上(默认值)。
  • gouraud:先对顶点颜色插补,再对顶点勾画的面上颜色进行插补。
  • phong:对顶点处的法线插值,再计算各个像素的反光。
  • none:关闭所有光源。

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

r=linspace(0,2*pi,100);[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.05,0.675,1.0,0.3],'view',[-37.5,30]);
hs1=surface(x,y,z);axis equal;
hs1.EdgeColor='none';hs1.FaceColor='interp';
axes('Position',[0.05,0.35,1.0,0.3],'view',[-37.5,30]);
hs2=surface(x,y,z);axis equal;
hs2.EdgeColor='none';hs2.FaceColor='interp';
light('Position',[0,0,8])%入射光源[0,0,8]
lighting flat%均匀洒落
axes('Position',[0.05,0.025,1.0,0.3],'view',[-37.5,30]);
hs2=surface(x,y,z);axis equal;
hs2.EdgeColor='none';hs2.FaceColor='interp';
light('Position',[0,0,8])%入射光源[0,0,8]
lighting phong%顶点插值处理


4、图形对象的反射特性

  • SpecularStrength属性:控制对象表面镜面反射的强度,属性值取0~1之间的数,默认为0.9。
  • DiffuseStrength属性:控制对象表面漫反射的强度,属性值取0~1之间的数,默认为0.6。
  • AmbientStrength属性:确定环境光的强度,属性值取0~1之间的数,默认为0.3。
  • SpecularExponent属性:控制光的强度,属性值取0~1之间的数,默认为0.3。
  • BackFaceLighting属性:控制对象内表面和外表面的差别,取值为:
    – ‘unlit’
    – ‘lit’
    –‘reverselit’(默认值)
目录
相关文章
|
12月前
|
存储 设计模式 容器
专题八图形窗口与坐标轴-3
专题八图形窗口与坐标轴
137 0
|
12月前
|
存储 数据可视化
专题八图形窗口与坐标轴-2
专题八图形窗口与坐标轴
92 0
|
5月前
Qt绘图(线条、椭圆、矩形、图片滚动)
Qt绘图(线条、椭圆、矩形、图片滚动)
282 3
|
6月前
LabVIEW当鼠标悬停在图形曲线上时显示坐标
LabVIEW当鼠标悬停在图形曲线上时显示坐标
75 1
|
移动开发 HTML5
使用三次贝塞尔曲线绘制弧形菜单
使用三次贝塞尔曲线绘制弧形菜单
openlayers之绘制矩形星星拉框放大自定义图形
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gisdoer/article/details/83036414 简介:openlayers绘制矩形、星星、拉框绘制,以及自定义图形。
1616 0