Matlab 画出不同位置高度的圆柱--样例二

举报
悲恋花丶无心之人 发表于 2021/02/03 01:12:00 2021/02/03
【摘要】 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


  
  1. function [xx,yy,zz,rr]=define_yuanzhu(k,xx,yy,zz,rr)%k为圆柱个数
  2. for j=1:k
  3. xx(j,1)=10.*randsample(20,1);
  4. yy(j,1)=10.*randsample(20,1);
  5. zz(j,1)=2.*randsample(20,1);
  6. rr(j,1)=randsample(20,1);
  7. end

3. 主函数:

testh.txt


  
  1. clc
  2. close
  3. clear
  4. %定义圆柱个数
  5. m=10;
  6. %定义圆心
  7. xx=zeros(m,1);
  8. yy=zeros(m,1);
  9. %圆柱高矩阵
  10. zz=zeros(m,1);
  11. %圆柱半径矩阵
  12. rr=zeros(m,1);
  13. %初始化
  14. [xx,yy,zz,rr]=define_yuanzhu(m,xx,yy,zz,rr);
  15. %中间变量
  16. newxx=zeros(21,1);
  17. newyy=zeros(21,1);
  18. tempnewxx=newxx;
  19. tempnewyy=newyy;
  20. for j=1:m
  21. newxx=tempnewxx;
  22. newyy=tempnewyy;
  23. for i=1:21
  24. newxx(i,:)=xx(j,1);
  25. newyy(i,:)=yy(j,1);
  26. end
  27. %确定范围
  28. [a,z]=ndgrid((0:.05:1)*2*pi,0:.05:zz(j,1));
  29. x=cos(a).*rr(j,1);%21xsize(z,2)维 项数=((末项-首项)/公差)+1,这里是((1-0)/0.05)+1=21
  30. y=sin(a).*rr(j,1);%21xsize(z,2)维
  31. %画圆柱测面
  32. fuzhinewxx=newxx;
  33. fuzhinewyy=newyy;
  34. for i=1:(size(z,2)-1)
  35. newxx=cat(2,newxx,fuzhinewxx);
  36. newyy=cat(2,newyy,fuzhinewyy);
  37. end
  38. surf(x+newxx,y+newyy,z,x*0)
  39. axis equal
  40. hold on
  41. %画圆柱上表面
  42. %圆柱上表面自变量
  43. [a,r]=ndgrid((0:.05:1)*2*pi,[0 rr(j,1)]);
  44. xt=cos(a).*r;%21x2维
  45. yt=sin(a).*r;%21x2维
  46. newxx=fuzhinewxx;
  47. newyy=fuzhinewyy;
  48. for i=1:(2-1)
  49. newxx=cat(2,newxx,fuzhinewxx);
  50. newyy=cat(2,newyy,fuzhinewyy);
  51. end
  52. surf(xt+newxx,yt+newyy,xt*0,xt*0)
  53. surf(xt+newxx,yt+newyy,xt*0+zz(j,1),xt*0)
  54. end

4.截图:(3次结果都是随机的)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/79318616

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。