加载中…
个人资料
MATLAB技术论坛
MATLAB技术论坛
  • 博客等级:
  • 博客积分:0
  • 博客访问:590,608
  • 关注人气:489
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【原创】Matlab中如何实现任意位置圆柱的绘制

(2009-08-27 10:54:27)
标签:

杂谈

分类: MATLAB

本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-362-1-19.html

 

在Matlab中绘制圆柱有专用的cylinder()函数,通过参数控制可以创建以(0,0)为圆心,高度为[0,1],半径为R的圆柱或变形圆柱

但是使用cylinder创建的圆柱都是以z轴为旋转对称轴,高度永远为1的简单圆柱

那我们如何创建一个有倾角,直径、对称轴、圆心等都可以直接定义的圆柱呢?或者直白点说,我如何通过两点加半径如何绘制一个圆柱或圆台

好下面我们分析下!!
 

圆柱的平移和放缩

平移和放缩相对来简单很多,平移我们只要将x和y坐标加一个常数即可,放缩只要将z坐标乘以一个放大因子即可
 
R=1;%半径
a=2;%原点x坐标
b=3;%原点y坐标
h=4;%圆柱高度
m=100;%分割线的条数
[x,y,z]=cylinder(R,m);%创建以(0,0)为圆心,高度为[0,1],半径为R的圆柱
x=x+a;%平移x轴
y=y+b;%平移y轴,改为(a,b)为底圆的圆心
z=h*z;%高度放大h倍
mesh(x,y,z)%重新绘图
 
如果对Matlab绘图学的较好的,对圆柱绘图本质认识比较深的网友,可以看看下面的函数,它没有用到cylinder函数
 
function cylinder2(x0,R,H,m,n)
%绘制任意位置、大小的圆柱,但是对称轴平行与z轴
%x0=[a,b]圆心位置
%R圆柱半径
%H=[h1,h2]圆柱高度,h1为底圆的z坐标,h2为上圆的z坐标
%m圆方向的等分数
%n高度方向的等分数
%
%by dynamic
%all rights reserved by www,matlabsky.cn

a=x0(x);b=x0(2);h1=H(1);h2=H(2);t=linspace(0,2*p,m);
x=a+R*cos(t);
y=b+R*sin(t);%以(a,b)为圆心,R为半径
z=linspace(h1,h2,n);%高度为[h1,h2]
xx=meshgrid(x,z);
yy=meshgrid(y,z);
zz=meshgrid(z,t)';
mesh(xx,yy,zz)
 

通过两点绘制圆柱和圆台

如果想通过两点绘制自定义的圆柱或圆台的话,那么就需要自己编写成,并且需要较好的空间立体几何想象能力

但是万幸的是我们找了相关直接程序

1.过两点绘制圆柱http://www.matlabsky.net/thread-269-1-3.html
2.过两点绘制圆台http://www.matlabsky.net/thread-273-1-2.html

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有