查看单个帖子
旧 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 当前离线   回复时引用此帖