首页 分享 MATLAB三维图形绘制

MATLAB三维图形绘制

来源:花匠小妙招 时间:2026-03-15 00:05

在用MATLAB绘制三维图形时,不仅可以画出带 光 照模式的曲面,还能在绘图时指定光线的来源。

1.带光照模式的三维曲面

surfl命令用来画一个带光照模式的三维曲面图,该命令显示一个带阴影的曲面,结合了周围的、散射的和镜面反射的光照模式。想获得较平滑的颜色过渡,则需要 使用 有线性强度变化的色图(如gray、copper、bone、pink等)。

surfl命令的使用格式如下:

调用格式                                           说明

surfl(Z)                                       以向量Z的元素生成一个三维的带阴影的曲面。其中阴影模式中的默认光源方位为从当前视角开始,逆时针转45°

surfl(X,Y,Z) 以矩阵X、Y、Z生成的一个三维的带阴影的曲面。其中阴影模式中默认光源方位为从当前视角开始,逆时针转45°

surfl(...,'light') 用一个MATLAB光照对象(light object)生成一个带颜色、带光照的曲面,这与用默认光照模式产生的效果不同

surfl(...,'cdata') 改变曲面颜色数据(color data),使曲面成为可反光的曲面

surfl(...,s) 指定光源与曲面之间的方位s,其中s为一个二维向量[azimuth,elevation],或者三维向量[sx,sy,sz]。默认光源方位

为从当前视角开始,逆时针转45

surfl(X,Y,Z,s,k) 指定反射常系数k,其中k为一个定义环境光(ambient light)系数(0≤ka≤1)、漫反射(diffuse reflection)系数(0≤kd≤1)、

镜面反射(specular reflection)系数(0≤ks≤1)与镜面反射亮度(以像素为单位)的四维向量[ka,kd,ks,shine],默认值为

k = [0.55 0.6 0.4 10]

h = surfl(...) 返回一个曲面图形句柄向量h

对于这个命令的使用格式需要说明的一点是,参数X、Y、Z确定的点 定义 了参数曲面的“里面”和“外面”,若用户想让曲面的“里面”有光照模式,只要

使用surfl(X',Y',Z')命令即可。

例:绘出山峰函数在有光照情况下的三维图形。

>> close all >> [X,Y] = meshgrid(-5:0.25:5); >> Z = peaks(X,Y); >> subplot(1,2,1) >> surfl(X,Y,Z) >> title('外面有光照') >> subplot(1,2,2) >> surfl(X',Y',Z') >> title('里面有光照')

plain

2.光源位置及照明模式

在绘制带光照的三维图像时,可以利用light命令与lightangle命令来确定光源位置,其中light命令使用格式非常简单,即为:

light('color', s1, 'style', s2, 'position', s3)

其中color、style与position的位置可以互换,s1,s2,s3为相应的可选值。例如light('position',[1 0 0])表示光源从无穷远处沿x轴向原点照射过来。

lightangle命令的使用格式如下:

调用格式 说明

lightangle(az,el) 在由方位角和仰角确定的位置放置光源

light_handle= lightangle(az,el) 创建一个光源位置并在light_handle中返回light的句柄

lightangle(light_handle,az,el) 设置由light_handle确定的光源位置

[az,el] = lightangle(light_handle) 返回由light_handle确定的光源位置的方位角和仰角

在确定了光源位置后,用户可能还会用到一些照明模式,这一点可以利用lighting命令来实现,它主要有4种使用格式,也即有4种照明模式。

lighting flat                             produces uniform lighting across each of the faces of the object. Select this method to view faceted objects.

lighting gouraud                   calculates the vertex normals and interpolates linearly across the faces. Select this method to view curved surfaces.

lighting phong                       interpolates the vertex normals across each face and calculates the reflectance at each pixel. Select this choice to view 

                                                 curved surfaces. Phong lighting generally produces better results than Gouraud lighting, but it takes longer to render.

lighting none                         turns off lighting.

例:研读下面的程序并观察其输出图形,揣摩下面各个命令的作用。

>> close all >> [x,y,z] = sphere(40); >> colormap(jet) >> subplot(1,2,1); >> surf(x,y,z),shading interp >> light('position',[2,-2,2],'style','local') >> lighting phong >> title('phong') >> subplot(1,2,2) >> surf(x,y,z,-z),shading flat >> lighting flat >> light('position',[-1,0.5,1],'style','local','color','w') >> title('flat') >>

plain

相关知识

MATLAB三维图形绘制
matlab 图形玫瑰花
MATLAB三维绘图教程
Matlab表白技巧:创意音乐玫瑰与三维心展示
MATLAB数据可视化最佳实践:案例研究与设计思路,专家级分享
MATLAB绘制玫瑰花表白神器:酷炫十行代码
《MATLAB科研绘图与学术图表绘制从入门到精通》
如何用matlab代码表白——matlab画爱心和玫瑰、I LOVE YOU
matlab绘制三维柱状图(hist3,bar3)
用matlab画复杂玫瑰花的代码

网址: MATLAB三维图形绘制 https://www.huajiangbk.com/newsview2579841.html

所属分类:花卉
上一篇: Unity中塑料卡包材质反光过强
下一篇: 给花戴个罩,3天长高一大截,再也

推荐分享