问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MATLAB三维图像属性修改教程

创作时间:
作者:
@小白创作中心

MATLAB三维图像属性修改教程

引用
CSDN
1.
https://blog.csdn.net/weixin_44209907/article/details/139119702

更改三维图像属性

以下示例演示如何在 MATLAB 中获取曲面图的属性,以及如何更改属性值以自定义绘图。

曲面对象

在 MATLAB 中有多种方式可以创建曲面对象。一种方式是使用 surf

[X,Y,Z] = peaks(50);
figure
surf(X,Y,Z)

与所有图形对象一样,曲面有您可以查看和修改的属性。这些属性具有默认值。下面所示的曲面对象显示了最常用的曲面属性,如 EdgeColorLineStyleFaceColorFaceLighting

s = surf(X,Y,Z)

s = 
  Surface with properties:
       EdgeColor: [0 0 0]
       LineStyle: '-'
       FaceColor: 'flat'
    FaceLighting: 'flat'
       FaceAlpha: 1
           XData: [50x50 double]
           YData: [50x50 double]
           ZData: [50x50 double]
           CData: [50x50 double]
  Use GET to show all properties

获取个别曲面属性

若要访问个别属性,请使用圆点表示法语法 object.PropertyName。例如,返回曲面的 FaceColor 属性。

s.FaceColor
ans = 
'flat'

更改常用的曲面属性

有些函数可用于更改曲面属性。例如,使用 shading 函数控制曲面着色。

shading interp    % interpolate the colormap across the surface face

使用 lighting 函数调整曲面的光照特性。要使 lighting 产生效果,您必须创建一个光源对象来照亮曲面。

light               % create a light
lighting gouraud    % preferred method for lighting curved surfaces

若要更改曲面的反射属性,请使用 material 函数。

material dull    % set material to be dull, no specular highlights

若要为当前坐标区中的所有对象设置透明度,请使用 alpha 函数。此函数将透明度设置为介于 1 和 0 之间的任意值,其中 1 表示完全不透明,0 表示完全透明。

alpha(0.8)    % set transparency to 0.8

更改其他曲面属性

若要自定义曲面的外观,请使用圆点表示法更改属性值。CData 定义曲面顶点的颜色。FaceColor 属性指示如何从顶点颜色确定曲面颜色。

s.CData = hypot(X,Y);      % set color data
s.FaceColor = 'interp';    % interpolate to get face colors

AlphaData 定义曲面每个顶点的透明度。FaceAlpha 属性指示如何从顶点透明度确定曲面透明度。

s.AlphaData = gradient(Z);    % set vertex transparencies
s.FaceAlpha = 'interp';       % interpolate to get face transparencies

获取所有曲面属性

MATLAB 中的图形对象有许多属性。若要查看曲面的所有属性,请使用 get 命令。

get(s)
 AlignVertexCenters: off
 AlphaData: [50x50 double]
 AlphaDataMapping: 'scaled'
 AmbientStrength: 0.3000
 Annotation: [1x1 matlab.graphics.eventdata.Annotation]
 BackFaceLighting: 'reverselit'
 BeingDeleted: off
 BusyAction: 'queue'
 ButtonDownFcn: ''
 CData: [50x50 double]
 CDataMapping: 'scaled'
 CDataMode: 'manual'
 CDataSource: ''
 Children: [0x0 GraphicsPlaceholder]
 Clipping: on
 ContextMenu: [0x0 GraphicsPlaceholder]
 CreateFcn: ''
 DataTipTemplate: [1x1 matlab.graphics.datatip.DataTipTemplate]
 DeleteFcn: ''
 DiffuseStrength: 0.8000
 DisplayName: ''
 EdgeAlpha: 1
 EdgeColor: 'none'
 EdgeLighting: 'none'
 FaceAlpha: 'interp'
 FaceColor: 'interp'
 FaceLighting: 'gouraud'
 FaceNormals: [49x49x3 double]
 FaceNormalsMode: 'auto'
 HandleVisibility: 'on'
 HitTest: on
 Interruptible: on
 LineStyle: '-'
 LineWidth: 0.5000
 Marker: 'none'
 MarkerEdgeColor: 'auto'
 MarkerFaceColor: 'none'
 MarkerSize: 6
 MeshStyle: 'both'
 Parent: [1x1 Axes]
 PickableParts: 'visible'
 Selected: off
 SelectionHighlight: on
 SpecularColorReflectance: 1
 SpecularExponent: 10
 SpecularStrength: 0
 Tag: ''
 Type: 'surface'
 UserData: []
 VertexNormals: [50x50x3 double]
 VertexNormalsMode: 'auto'
 Visible: on
 XData: [50x50 double]
 XDataMode: 'manual'
 XDataSource: ''
 YData: [50x50 double]
 YDataMode: 'manual'
 YDataSource: ''
 ZData: [50x50 double]
 ZDataSource: ''

创建MATLAB图标

以下示例演示如何创建和显示 MATLAB 徽标。

使用 membrane 命令生成徽标的曲面数据。

L = 160*membrane(1,100);

创建一个图窗和一套坐标区以显示徽标。然后,使用通过 membrane 命令得到的点创建徽标的曲面。关闭曲面中的线条。

f = figure;
ax = axes;
s = surface(L);
s.EdgeColor = 'none';
view(3)

调整坐标区范围,使坐标区紧密围绕在徽标周围。

ax.XLim = [1 201];
![](https://wy-static.wenxiaobai.com/chat-rag-image/16406744948905051329)
ax.YLim = [1 201];
ax.ZLim = [-53.4 160];

使用坐标区的相机属性调整徽标视图。相机属性控制三维场景的视图,就像带有缩放镜头的相机一样。

ax.CameraPosition = [-145.5 -229.7 283.6];
ax.CameraTarget = [77.4 60.2 63.9];
ax.CameraUpVector = [0 0 1];
ax.CameraViewAngle = 36.7;

更改坐标区的位置和 x、y 和 z 纵横比以填充图窗窗口中的额外空间。

ax.Position = [0 0 1 1];
ax.DataAspectRatio = [1 1 .9];

创建光源以照亮徽标。光源本身不可见,但可设置其属性以更改坐标区中任何填充或曲面对象的外观。

l1 = light;
l1.Position = [160 400 80];
l1.Style = 'local';
l1.Color = [0 0.8 0.8];

l2 = light;
l2.Position = [.5 -1 .4];
l2.Color = [0.8 0.8 0];

更改徽标的颜色。

s.FaceColor = [0.9 0.2 0.2];

使用曲面的光照和镜面(反射)属性来控制光照效果。

s.FaceLighting = 'gouraud';
s.AmbientStrength = 0.3;
s.DiffuseStrength = 0.6; 
s.BackFaceLighting = 'lit';
s.SpecularStrength = 1;
s.SpecularColorReflectance = 1;
s.SpecularExponent = 7;

关闭轴以查看最终结果。

axis off
f.Color = 'black';
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号