Matlab在任意两点之间绘制三维圆柱

此函数可能存在一些不足,请多多指教!

function plotcylinder(u1,u2,color_a,r)
L=norm(u1-u2);
ROD=u2-u1;
[X,Y,Z]=cylinder(r,100);
x1=X*0;y1=Y*0;z1=Z*0;
Z=L*Z-L/2;
ROD_midpoint=(u1+u2)/2;
x=ROD_midpoint(1);
y=ROD_midpoint(2);
z=ROD_midpoint(3);
a=[1 0 0];b=[0 1 0];c=[0 0 1];
if(ROD(2)==0||ROD(1)==0)
    if(ROD(2)==0)    % 在XZ平面
       angel=acos(dot(ROD,c)/norm(ROD)/norm(c));
       if(ROD(1)<0)
           angel=-angel;  %%
       end
       A2=[cos(angel) 0 sin(angel);0 1 0; -sin(angel) 0 cos(angel)];  % 绕Y轴旋转
       for i=1:length(X(1,:))
          u=[X(1,i) Y(1,i) Z(1,i)]';
          u1=A2*u;
          x1(1,i)=u1(1);y1(1,i)=u1(2);z1(1,i)=u1(3);
          u=[X(1,i) Y(1,i) Z(2,i)]';
          u1=A2*u;
          x1(2,i)=u1(1);y1(2,i)=u1(2);z1(2,i)=u1(3);   
       end    
    end
    if(ROD(1)=
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值