本文主要是介绍Matlab 画出不同位置高度的圆柱--样例二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.所有圆柱的坐标、高和半径都是随机的,在此列出代码和样例:
2.初始化函数:
define_yuanzhu.m
function [xx,yy,zz,rr]=define_yuanzhu(k,xx,yy,zz,rr)%k为圆柱个数
for j=1:kxx(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次结果都是随机的)
这篇关于Matlab 画出不同位置高度的圆柱--样例二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!