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);
    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次结果都是随机的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老兵安帕赫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值