Matlab 画出不同位置高度的圆柱--样例二
【摘要】 1.所有圆柱的坐标、高和半径都是随机的,在此列出代码和样例:
2.初始化函数:
define_yuanzhu.m
function [xx,yy,zz,rr]=define_yuanzhu(k,xx,yy,zz,rr)%k为圆柱个数for j=1:k xx(j,1)=10.*randsample(20,1); yy(j,1)=10.*randsample(20,1); ...
1.所有圆柱的坐标、高和半径都是随机的,在此列出代码和样例:
2.初始化函数:
define_yuanzhu.m
-
function [xx,yy,zz,rr]=define_yuanzhu(k,xx,yy,zz,rr)%k为圆柱个数
-
for j=1:k
-
xx(j,1)=10.*randsample(20,1);
-
yy(j,1)=10.*randsample(20,1);
-
zz(j,1)=2.*randsample(20,1);
-
rr(j,1)=randsample(20,1);
-
end
3. 主函数:
testh.txt
-
clc
-
close
-
clear
-
-
%定义圆柱个数
-
m=10;
-
%定义圆心
-
xx=zeros(m,1);
-
yy=zeros(m,1);
-
%圆柱高矩阵
-
zz=zeros(m,1);
-
%圆柱半径矩阵
-
rr=zeros(m,1);
-
%初始化
-
[xx,yy,zz,rr]=define_yuanzhu(m,xx,yy,zz,rr);
-
-
%中间变量
-
newxx=zeros(21,1);
-
newyy=zeros(21,1);
-
tempnewxx=newxx;
-
tempnewyy=newyy;
-
for j=1:m
-
newxx=tempnewxx;
-
newyy=tempnewyy;
-
for i=1:21
-
newxx(i,:)=xx(j,1);
-
newyy(i,:)=yy(j,1);
-
end
-
%确定范围
-
[a,z]=ndgrid((0:.05:1)*2*pi,0:.05:zz(j,1));
-
x=cos(a).*rr(j,1);%21xsize(z,2)维 项数=((末项-首项)/公差)+1,这里是((1-0)/0.05)+1=21
-
y=sin(a).*rr(j,1);%21xsize(z,2)维
-
%画圆柱测面
-
fuzhinewxx=newxx;
-
fuzhinewyy=newyy;
-
for i=1:(size(z,2)-1)
-
newxx=cat(2,newxx,fuzhinewxx);
-
newyy=cat(2,newyy,fuzhinewyy);
-
end
-
-
surf(x+newxx,y+newyy,z,x*0)
-
axis equal
-
hold on
-
-
%画圆柱上表面
-
%圆柱上表面自变量
-
[a,r]=ndgrid((0:.05:1)*2*pi,[0 rr(j,1)]);
-
xt=cos(a).*r;%21x2维
-
yt=sin(a).*r;%21x2维
-
-
newxx=fuzhinewxx;
-
newyy=fuzhinewyy;
-
for i=1:(2-1)
-
newxx=cat(2,newxx,fuzhinewxx);
-
newyy=cat(2,newyy,fuzhinewyy);
-
end
-
surf(xt+newxx,yt+newyy,xt*0,xt*0)
-
surf(xt+newxx,yt+newyy,xt*0+zz(j,1),xt*0)
-
end
4.截图:(3次结果都是随机的)
文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。
原文链接:nickhuang1996.blog.csdn.net/article/details/79318616
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)