Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2008-06-19, 22:52   #1
yamikuku
初级会员
 
注册日期: 2008-06-19
年龄: 47
帖子: 2
声望力: 0
yamikuku 正向着好的方向发展
默认 [讨论]3d圆柱的旋转

现在知道空间两个点1(x1,y1,z1)和2(x2,y2,z2)分别是圆柱上下面的圆心,直径D也知道
我自己编的代码如下

function test2_cylinder(x1,y1,z1,x2,y2,z2,D)

if (nargin < 7)
x1 = 1;
y1 = 1;
z1 = 1;
x2 = 2;
y2 = 2;
z2 = 2;
D = 1;
end
t=0i/25:2*pi;
h=sqrt((x2-x1)^2+(y2-y1)^2+(z2-z1)^2);%点1和点2间距离
s=0:h/50:h;
r=D/2;
n=x1^2+y1^2+(z1+h)^2;

ux=x1*x2/n;uy=y1*x2/n;uz=(z1+h)*x2/n;%转制矩阵
vx=x1*y2/n;vy=y1*y2/n;vz=(z1+h)*y2/n;%转制矩阵
wx=x1*z2/n;wy=y1*z2/n;wz=(z1+h)*z2/n;%转制矩阵

x=x1+r*cos(t)*ux+r*sin(t)*uy+s*uz;
y=y1+r*cos(t)*vx+r*sin(t)*vy+s*vz;
z=z1+r*cos(t)*wx+r*sin(t)*wy+s*wz;


X=meshgrid(x);
Y=meshgrid(y);
Z=[meshgrid(z)]';
surf(X,Y,Z)
xlabel('x'),ylabel('y'),zlabel('z')
axis equal


显示的是一个平面,而不是圆柱面,自己也查了很多,可总找不到问题,不知道是哪里出错了,
请各位帮看看,先谢谢了。
yamikuku 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 07:51


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.