MATLAB Learning Days---------三维图像
程序员文章站
2024-03-02 12:00:16
...
三维图像
我们可以调用mesh(x,y,z)
命令来生成三维图像
我们来看函数:
代码:
>> [x,y] = meshgrid(-2*pi:0.1:2*pi);
>> z = cos(x).*sin(y);
>> mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z')
图像:mesh
是plot
在三维上的扩展,另一个函数:
、
我们取相同的区间:
>> [x,y] = meshgrid(-2:0.1:2);
>> z = y.*exp(-x.^2-y.^2);
>> mesh(x,y,z)
现在我们绘制表明带有渐变颜色的图像,有以下命令:
surf
surfc
surfl
只需修改最后一句:
>> surf(x,y,z)
图像:
图像表面的颜色与高度是相称的,如果使用surfc
命令就会在图像下留下投影:
调用surfl
命令(l
代表这是一个光照表面),它给我们显示三维光照物体的表面,可以使用这个命令产生没有线条的三维图像,图像还可以是灰度或者是彩色的:
>> surfl(x,y,z);
>> shading interp
>> colormap(gray)
图像中的阴影可以设置为以下几种模式:
-
flat
:用同一种颜色为每个网格进行着色并隐藏网格线 -
facted
:显示网格线 -
interp
:使用颜色插值的方法进行着色,因此非常平滑
接下来我们
绘制一个类圆柱形的图像:
>> t = [0:pi/10:2*pi];
>> [x,y,z] = cylinder(1+sin(t));
>> surf(x,y,z);
>> axis square
修改shading
选项改为flat
:
使用faceted
遮光:
>> [x,y,z] = cylinder(1+cos(t));
>> surf(x,y,z);
>> axis square
>> shading faceted
使用interp
:
>> [x,y,z] = cylinder(1+cos(t));
>> surf(x,y,z);
>> axis square
>> shading interp