使用Cylinder功能函数绘制圆柱体侧面
在matlab中自带了绘制圆柱体的功能函数cylinder,其用法如下:
例1,绘制一个圆柱体的三维图像,要求圆柱体底面圆心在坐标原点,底面半径为3,高度为2,颜色为红色。
[x,y,z]=cylinder(3); %调用cylinder函数‘()’内半径为3. 运行此命令后系统自动为x,y,z填充了数据
z(2,:)=2; %设置矩阵Z的第二行数值全为2,即设置圆柱体高度
subplot(1,2,1); %绘制子图像(1,2,1)代表一行两列的第一个图像
surf(x,y,z,'FaceColor',[1,0,0]); %使用surf功能将x,y,z的数据导入。FaceColor即设置圆柱体颜色,红色色号为[1,0,0]
daspect([1 1 1]) %设置x,y,z坐标间距等长。
view(30,30) %设置图像显示角度
hold on %停止图像刷新
上述代码的结果如下
从图中可看出,我们还缺少顶盖和底盖。可用如下代码实现:
theta = linspace(0,2*pi,40) %将一个圆周分为40份
X=3*cos(theta); %将cos值赋予x
Y=3*sin(theta); %将sin赋予Y
Z=ones(size(X))+1; %设置Z与X长度想等
fill3(X,Y,Z,[1,0,0]); %使用Fill3功能函数,填充XYZ所围成的区域,这个是顶盖
fill3(X,Y,Z-2,[1,0,0]); %底盖
运行结果如下:
这样就可得到一个封闭完整的圆柱体。 下面再来绘制一个球体。
例2.绘制一个中心在(8,-2,2),半径为4的蓝色球体。
[x1 y1 z1]=sphere; %将球体数据写入三矩阵中
a=[8 -2 2 4]; %设置参数
subplot(1,2,2); %绘制子图像2
s1=surf(x1*a(1,4)+a(1,1),y1*a(1,4)+a(1,2),z1*a(1,4)+a(1,3),'FaceColor',[0,0,1]);
%将已配置好的数据用surf函数绘制成三位图像
daspect([1 1 1]) %设置坐标轴长度等长
view(30,10) %设置舒服的观看角度
结果:
将上述代码写到一个脚本中即可完整的绘制出一个封闭的红色圆柱体和一个封闭的蓝色球体。这篇文章只要参考mathwork英文网站上的surf教学,笔者使用的是matlab2018b,希望能够帮助刚刚入门matlab的伙伴快乐的学习matlab。
|
请发表评论