怎样用matlab求出桌子的边缘曲线和开槽长度

问题描述:

怎样用matlab求出桌子的边缘曲线和开槽长度
1个回答 分类:综合 2014-12-12

问题解答:

我来补答
L=120;  %长
D=50;   %宽,圆桌面直径
d=2.5;  %木板宽
hL=L/2; %半长
R=D/2;  %圆桌面半径
y=-R+d/2:d:R-d/2; %长条宽度方向中心位置
x=sqrt(R^2-y.^2); %长条中心在圆上的位置,也就是桌子边缘
hh=hL-x;          %开槽长度
H=hL-x(1);        %最长腿长度,也就是最大桌子高度
 
Tx=[x -x;x -x];Ty=[y-d/2 fliplr(y)+d/2;y+d/2 fliplr(y)-d/2]; %桌面数据
Tx=Tx(:);Ty=Ty(:);Tz=zeros(size(Tx));
legx=[hL*ones(size(x));hL*ones(size(x));x;x];             %桌腿数据     
legy=[y-d/2;y+d/2;y+d/2;y-d/2];
legz=zeros(size(legx)); 
zhoux=[hL-H/2;hL-H/2];zhouy=[-R R];zhouz=[0;0];             %轴数据
                           
figure(1),clf;
h1=patch(Tx,Ty,Tz,'facecolor',[1 0.5 0],'edgecolor',[1 1 1]);
h2=patch(legx,legy,legz,'facecolor',[1 0.5 0],'edgecolor',[1 1 1]);
h3=patch(-legx,legy,legz,'facecolor',[1 0.5 0],'edgecolor',[1 1 1]);
hold on
h4=plot3(zhoux,zhouy,zhouz,'k-.');
h5=plot3(-zhoux,zhouy,zhouz,'k-.');
hold off
view(3);
axis equal;
axis([-hL hL -R R 0 H]);
axis off;
ddeg=2;                    %角度增量
for deg=0:ddeg:75          %最长条桌腿相对桌面折叠角度
    zz=-H/2*sind(deg);     %轴相对桌面高度
    xx=x(1)+H/2*cosd(deg); %轴横坐标
    alldeg=atan2(-zz*ones(size(x)),xx-x); %每个条腿折叠角度
    allx=(hL-x).*cos(alldeg)+x;           %每条腿末端x坐标
    allz=-(hL-x).*sin(alldeg);            %每条腿末端z坐标
    minz=min(allz);                       %最小z坐标
    legx=[allx;allx;x;x];                 %腿x数据  
    legz=[allz;allz;zeros(size(allz));zeros(size(allz))]-minz;%t腿z数据
    set(h1,'ZData',-minz*ones(size(Tz)));
    set(h2,'XData',legx,'ZData',legz);
    set(h3,'XData',-legx,'ZData',legz);
    set(h4,'XData',[xx;xx],'ZData',[zz;zz]-minz);
    set(h5,'XData',-[xx;xx],'ZData',[zz;zz]-minz);
    pause(0.1);
    drawnow;
end
再问: 额 我不是想要这个图 我想要边缘曲线的
再问: 额 我不是要这个图,我想要边缘曲线
再答:  Bx Bz Bz也就是桌腿边缘曲线的三维坐标用红线画出L=120;  %长
D=50;   %宽,圆桌面直径
d=2.5;  %木板宽
hL=L/2; %半长
R=D/2;  %圆桌面半径
y=-R+d/2:d:R-d/2; %长条宽度方向中心位置
x=sqrt(R^2-y.^2); %长条中心在圆上的位置hh=hL-x;
H=hL-x(1);        %最长腿长度,也就是最大桌子高度

yb=linspace(y(1),y(end),50); %这里50表示将边缘分成50段,可以根据需要自己修改
xb=sqrt(R^2-yb.^2);
Bx=hL*ones(size(xb)); By=yb; Bz=zeros(size(xb));             %边缘曲线数据
                            
figure(1),clf;
hold on
h6=plot3(Bx,By,Bz,'r-','linewidth',2);
h7=plot3(-Bx,By,Bz,'r-','linewidth',2);
hold off
view(3);
axis equal;
axis([-hL hL -R R 0 H]);
grid on;
ddeg=2;                    %角度增量
pause(0.2);
for deg=0:ddeg:75          %最长条桌腿相对桌面折叠角度
    zz=-H/2*sind(deg);     %轴相对桌面高度
    xx=x(1)+H/2*cosd(deg); %轴横坐标
    alldeg2=atan2(-zz*ones(size(xb)),xx-xb); 
    Bx=(hL-xb).*cos(alldeg2)+xb;
    Bz=-(hL-xb).*sin(alldeg2);
    minz=min(Bz);
    set(h6,'XData',Bx,'ZData',Bz-minz);
    set(h7,'XData',-Bx,'ZData',Bz-minz);
    pause(0.1);
    drawnow;
end
 
 
展开全文阅读
剩余:2000
上一页:
下一页:判断题。