yamikuku
2008-06-19, 22:52
现在知道空间两个点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=0:pi/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
显示的是一个平面,而不是圆柱面,自己也查了很多,可总找不到问题,不知道是哪里出错了,
请各位帮看看,先谢谢了。
我自己编的代码如下
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=0:pi/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
显示的是一个平面,而不是圆柱面,自己也查了很多,可总找不到问题,不知道是哪里出错了,
请各位帮看看,先谢谢了。