创意平板折叠桌建模
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创意平板折叠桌建模
布慧楠1402214026
侯爽 1402214025
力琨 1402214041
摘要
折叠家具突破传统家具的设计模式,通过折叠可以将面积或体积较大的物品尽量压缩。
细细品味,会发现一种独特的美感,更别说他们还无一例外地兼具到了实用主义。
或拥有灵活自由的使用方式,或功能多样化,为居室腾出不少空间。
某公司设计了一款折叠桌,并以此为背景提出了三个问题,本文利用受力分析、几何知识、以及非线性优化模型等解决了问题。
针对问题一,给定了给定了一块木板的长度、宽度和高度、木条的宽度,以及折叠桌的高度,利用折叠桌的对称性,以任一桌脚为原点,建立空间直角坐标系通过几何模型观察桌面与桌脚木条角度的关系,计算出每条桌角木条顶点处的坐标。
利用Matlab程序,画出桌脚边缘线的变化。
最后根据桌角边缘线的变化,画出折叠桌的动态变化。
针对问题二,针对稳定性好、加工方便、用料最少三个限制条件求出非线性规划的目标函数和限制函数。
由于要求稳定性好,所以桌子应该能承受最大的力量。
在保证稳定性的条件下,如何用最少的木条和选择最佳设计加工参数。
针对问题三,公司开发出一种折叠桌设计软件,根据客户任意设定的折叠桌长度、高度、桌面边缘线的形状大小、桌脚边缘线的大致形状,给出所需材料的形状、尺寸,以及切实可行的加工参数。
最后,对建立的模型和求解方式做一个客观评价,并指出改进方式。
关键字:折叠桌非线性规划目标规划受力分析
1、问题重述
1.1引言
创意折叠木制品为了表现木制品的优雅和设计师所要表达的优雅和功能性。
为了增大有用面积,将木板的宽为直径做圆的直径,将剩余部分成了若干长短不同的木条。
分别用两根钢筋固定两侧的木条,使用者只需提起木板两侧,便可在重力作用下成为桌子。
1.2问题的提出
(1)给定长方形平板尺寸120 cm × 50 cm × 3 cm,每根木条宽 2.5 cm,连接桌腿木条的钢筋固定在桌腿最外侧木条的中心位置,折叠后桌子的高度为53 cm。
试建立模型描述此折叠桌的动态变化过程,在此基础上给出此折叠桌的设计加工参数。
(2)折叠桌的设计应做到产品稳固性好、加工方便、用材最少。
对于任意给定的折叠桌高度和圆形桌面直径的设计要求,讨论长方形平板材料和折叠桌的最优设计加工参数,例如,平板尺寸、钢筋位置、开槽长度等。
对于桌高70 cm,桌面直径80 cm的情形,确定最优设计加工参数。
(3)公司计划开发一种折叠桌设计软件,根据客户任意设定的折叠桌高度、桌面边缘线的形状大小和桌脚边缘线的大致形状,给出
所需平板材料的形状尺寸和切实可行的最优设计加工参数,使得生产的折叠桌尽可能接近客户所期望的形状。
你们团队的任务是帮助给出这一软件设计的数学模型,并根据所建立的模型给出几个你们自己设计的创意平板折叠桌。
要求给出相应的设计加工参数,画出至少8动态变化过程的示意图。
2.问题假设
1.忽略加工误差。
2.木条紧密连接,无缝隙。
3.木条与桌面连接处无缝隙。
4.忽略开槽宽度。
3.符号说明
L 木板长度(
4、模型建立及求解
4.1问题一的模型建立及求解:
(1)考虑问题一时,首先要分析题目中给了哪些相关的量,题目中最先提出了桌面为圆形,可以从直径入手。
由平板的长宽高和木条的宽度可以得到木条的数量,其中还有钢筋和卡槽的位置都可以作为求解时的数据。
(2)画出折叠桌的平面俯视图以及侧视图如图4.1.1和图4.1.2所示。
图4.1.1
图4.1.2
其中平板长为120cm ,宽度为50cm ,每根木条宽度为2.5cm ,由圆的对称性我们只需对四分之一(右下)圆进行分析,如图:我们由外向进行计算,每根木条桌椅最侧 i D 到 i E 距离:22i i a r b =- ,则每根木条长度为i 01C 2
i s a =-,再根据木桌完全展开后桌腿侧面图进
行分析如图,可算得各开槽长度2220111i i (c ()())(a )k 22222
i s c c h h c +------=,其中有平板长度和木条宽度可以得到四分之一圆(右下)共有十根木条。
(3)以任意一个桌脚为原点建立空间直角坐标系。
设定最外层桌腿与x 轴的夹角为0∂,标注出钢筋的所在位置。
如下图所示:
图4.1.3
(4)用MATLAB 编程,(见附录程序一)可得到每条桌腿木条的长度和开槽的大小,由于桌腿木条分为两组,每组有20根木条,且每组
桌腿也对称。
所以表格中只列出1/4的桌腿木条长度和卡槽大小。
得到的数据如下:
表4.4.4 折叠桌腿和开槽长度
(5)因为折叠桌的沿中心轴对称,所以我们只以1/4的桌子来考虑,其他的对称就行,由于平板为长方体,所以每根木条的桌脚在钢筋轴的下方加上各自的开槽长度相等,即最外侧桌脚长度的一半,在前面我们已经求出了每根木条的卡槽长度,在桌椅完全展开的情况下求得木条与桌面的最大夹角∂,对于任意角度 都满足一个函数等式 1160c c *cos *cos ()2i x c --∂=∂-,就由此可求出多组木条桌脚顶点的轨迹,即桌脚边缘线的数学描述。
如图4.1.4为用MATLAB 程序(见附录程序三)画出的平板折叠后静态的边缘线。
图4.1.5描述了边缘线一系列的运动过程。
图4.1.4
图4.1.5
(7)做动态图时,首先要建立直角坐标系,假设桌腿木条和桌面的夹角为1160c c *cos *cos ()2
i x c --∂=∂-,以桌面圆心为坐标系原点建立空间直角坐标系,根据题目已给的参数和几何关系分别表示出桌面,,x y z 坐标函数。
根据这些函数,应用MATLAB 程序(见附录程序二)画出折叠桌的动态图。
以下为动态图的四个动态过程。
图4.1.6
4.2问题二模型建立与求解
(1)根据问题二题目要求折叠桌的设计应做到产品稳固性好、加工方便、用材最少,对与顾客任意给定桌面的高度和木条宽度0h ,0m 进行折叠桌椅设计,通过建立多目标优化模型来求解。
(2)产品的稳定性:对桌椅四分之一桌腿进行力矩分析如图4.2.1所示,若要桌椅的稳定新较好择期受力要稳定,通过问题一已得结果对我们的可以轻易的知道在桌椅完全展开后,随着最外侧支撑木条桌椅逐个侧增加时,桌椅木条与桌面的夹角是逐渐增大的。
对完全展开后的桌椅进行受力分析如下图:
图4.2.1
(3)我们整体的对受力最复杂的钢筋进行受力分析,简化模型,此时只存在两种木条,一种是木条与桌面夹角小于90°,另一种则是木条与桌面夹角大于90°只有这样钢筋的受力分析才能达到如图效果,如果木条与桌面全部小于或大于90°则受力不可能达到稳定,有考虑到每根木条的受力大小均衡,在木条夹角渐变过程是与桌面夹角大于或小于9°的木条数应该尽可能相等,所以我们对四分之一桌
角的中间桌腿与桌面夹角经行分析的到方程及其约束条件2r
m ∂
<90°。
加工方便:我们建立模型时要求在满足顾客要求的同时尽可能的是木条宽度最大,因为在实际生产中,模板是整体进行切割,如果木条宽度越大则木条数九越少这样在实际模板切割的时候难度就会减低,从而达到加工方面的优化。
用材最少:由问题已可知在给定模板宽度以及高度时,要是所用木材最少即为模板的长度最小,在模型中我们以最中间的木条建立约束条件,在满足参数要求的同时使得侧木条最短则整个模板就是最短的,从而达到用材最少的优化目标,由问题一中的图可知在桌子完全展开后最侧的桌腿想上移动距离是最大,再钢筋刚好达到该木条最下端是此时是一个临界值,可得约束条件
0i d <。
通过以上分析建立多目标优化方程如下:
01min z=s 、
10122c s =
、
0132i c s =、0
004sin h s ∂=、
50i d < 016h c <、
(4)求得的结果如下:MATLAB 程序见附录程序四
表4.2.2 问题二的最优设计加工参数
4.3问题三模型建立与求解
(1)是在第二问的基础上继续完善数学模型,将模型转换为带坐标的方程格式,将其余的设计参数设置成桌高、木条数、边缘线坐标等的方程,形成一系列数量关系式,达到只要我们将客户需求的数据输入关系式,就会得出一组设计参数,此功能可以在MATLAB 或者EXCEL 中实现,设置好自己的未知数和方程(请记得将公式文件或者编程代码放在附件中),然后随便赋值,直接得出设计参数。
最后就是随便给一组数据(客户需求)设计一款成品。
通过赋值,得出设计参数,利用三维软件制作出来。
注:尺寸分析尽量用机械软件分析,数据精确度高,动态分析利用仿真能达到,机械软件初学者还是建议用3D 仿真,因为机械软件运动仿真过程繁杂,3D 仿真效果随意,而且灯光效果不错,但机械软件对许多尺寸设计合理与否能检测出来,截屏保存,仿真后感兴趣的同学可以输出GIF 格式的图片或者视频,如果所有软件都是初学
者,仿真不能达到就只能随机找到8个动态位置装配完成截屏保存就行,这种办法不能检测设计参数合理与否,不到万不得已不建议用这种办法。
软件选择有利有弊,一定要根据自己的实际情况选择。
(2)创意折叠桌一:其桌面为菱形,通过问题一程序的改变便可以做出动态图。
根据程序运行的结果,可比较出菱形桌较圆形桌虽然桌面面积有所下降,但折叠桌高度增加,此折叠桌设计更适用于较高人群使用。
同时,由于菱行曲线较圆形曲线设计更为简单,误差更小。
所以加工方便。
(MATLAB见附录程序五)
(3)动态图:
5、模型分析
通过观察此模型求出的参数与实际木桌的尺寸进行比较,基本满足实际木桌的数值,说明此模型求出的结果是符合要求的,具有较高的可行性、可信度。
可以认为在参数的求解过程中,空间模型建立过程到问题的求解,误差在一定围;可以认为此模型,算法程序设计使用符合题目的要求。
通过与实际承诺书对比比较,具有较大的参考价值。
6、模型的评价
模型的优点:
(1)将实物桌子的桌腿和桌面转化为点、线、面的问题,简化了问题的复杂性,降低了计算难度。
(2)模型利用了计算机的能力和人的空间分析能力,使得模型的可实际参考价值增大。
(3)模型采用了多种数学方法,减小了数字处理的误差,提高了结果的可行度。
模型的缺点:
(1)没有考虑桌腿和桌面的厚度。
(2)没有考虑人工的感干预时的误差影响。
(3)没有考虑到实际桌子的生产情况,使得数据可用度降低。
7、模型的改进与推广
基于所建立的模型,求出的一系列参数,在实际参考价值来看还是有较大的误差,此模型通过对问题剖析,结合生活实际,综合木桌子的实际数字,建立空间坐标系,将复杂的问题变成空间几何问题,再将桌面和桌椅的厚度忽略不计,使得我们所建立的模型难度降低,可以快速的求出参数。
整个求解过程中,模型的假设信息作为求解问题的前提被使用,在问题求解后,对结果得出的整个过程进行分析,结合实际木桌的尺寸,可以考虑在木桌的预处理时对所求模板进行有效的空间切割,从而使的更方便与参数的求解和减少模型求解过程的误差。
模型的改进,在上述过程中,对桌椅的厚度加以考虑使得模型求出参数更加真实。
通过本文提出的方法模型,可以有效的处理该类产品的实际生产过程中的尺寸计算问题,这样就可以减少实际新产品生产前期的产品设计费用,以及产品的废品率,对生产此类工艺的厂家,及艺术家都有一定的参考价值。
8、参考文献
[1]启源等,数学模型[M],高等教育,2009
[2]卓金武等,MATLAB在数学建模中的应用[M],航空航天大学,2011
[3]吴赣昌,概率论与数理统计[M],中国人民大学,2006
[4]烨. 用于连续函数优化的蚁群算法[J] . 大学学报(工程科学版),2004,36(6)
[5]中华,MATLAB统计分析与应用:40个案列分析,航空航天大学,2010
附录
程序一:问题一求桌腿长度、卡槽长度以及折叠桌整个折叠过程中的动态图程序:
clear
L=120;D=50;d=2.5;hL=L/2;R=D/2; %木板长;宽;腿木条宽;半长;圆桌面半径
ye=-R+d/2:d:R-d/2; %折叠点的y坐标,20个
xe=sqrt(R^2-ye.^2); %折叠点的x坐标,20个
legL=hL-xe%桌腿长度,20个
hH=legL(1)/2; %最长腿半长
ddeg=2; %角度增量
Tx=[xe -xe;xe -xe];Tx=Tx(:);Tz=zeros(size(Tx)); %桌面数据Ty=[ye-d/2 fliplr(ye)+d/2;ye+d/2 fliplr(ye)-d/2];%桌面在y轴上的数据,fliplr函数实现矩阵的左右翻转
Ty=Ty(:);
legx=[hL*ones(size(xe));hL*ones(size(xe));xe;xe]; %桌腿数据
legy=[ye-d/2;ye+d/2;ye+d/2;ye-d/2];
legz=zeros(size(legx));
zhoux=[hL-legL(1)/2;hL-legL(1)/2];
zhouy=[-R R];
zhouz=[0;0]; %钢筋轴数据
yb=linspace(ye(1),ye(end),50);
xb=sqrt(R^2-yb.^2);
Bx=hL*ones(size(xb));
By=yb;
Bz=zeros(size(xb)); %腿尖曲线数据
figure(1),clf;%画底图,清除以前的图片
hold on
h1=patch(Tx,Ty,Tz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌面
h2=patch(legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌腿
h3=patch(-legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌腿
h4=plot3(zhoux,zhouy,zhouz,'c');
h5=plot3(-zhoux,zhouy,zhouz,'c');%画钢筋轴
h6=plot3(Bx,By,Bz,'k');
h7=plot3(-Bx,By,Bz,'k');%腿尖曲线
hold off;view(3);axis equal;axis([-hL hL -R R 0 2*hH]);axis off;
for deg=0:ddeg:75 %最长桌腿相对桌面折叠角度
zz=-hH*sind(deg);xz=xe(1)+hH*cosd(deg); %钢筋轴,z坐标和x坐标
alldeg=atan2(-zz*ones(size(xe)),xz-xe); %每个条腿折叠角度,20个
allx=legL.*cos(alldeg)+xe; %每条腿末端x坐标,20个
allz=-legL.*sin(alldeg); %每条腿末端z坐标,20个
alldeg2=atan2(-zz*ones(size(xb)),xz-xb);
Bx=(hL-xb).*cos(alldeg2)+xb;Bz=-(hL-xb).*sin(alldeg2);%腿尖曲线x数据
minz=min(Bz); %最低腿z坐标,桌子当前高度
legx=[allx;allx;xe;xe]; %桌腿数据
legz=[allz;allz;zeros(size(allz));zeros(size(allz))]-minz; set(h1,'ZData',-minz*ones(size(Tz)));
set(h2,'XData',legx,'ZData',legz);set(h3,'XData',-legx,'ZDa ta',legz);
set(h4,'XData',[xz;xz],'ZData',[zz;zz]-minz);
set(h5,'XData',-[xz;xz],'ZData',[zz;zz]-minz);
set(h6,'XData',Bx,'ZData',Bz-minz);set(h7,'XData',-Bx,'ZDat a',Bz-minz);
pause(0.1);drawnow;
end
caochang=sqrt((xe-xe(1)).^2+hH.^2-2*hH.*(xe-xe(1)).*cos(all deg))-(legL-hH)
程序二:选取不同的角度,折叠图的过程状态
clear
L=120;D=50;d=2.5;hL=L/2;R=D/2; %木板长;宽;腿木条宽;半长;圆桌面半径
deg=75
ye=-R+d/2:d:R-d/2; %折叠点的y坐标,20个
xe=sqrt(R^2-ye.^2); %折叠点的x坐标,20个
legL=hL-xe%桌腿长度,20个
hH=legL(1)/2; %最长腿半长
ddeg=2; %角度增量
Tx=[xe -xe;xe -xe];Tx=Tx(:);Tz=zeros(size(Tx)); %桌面数据
Ty=[ye-d/2 fliplr(ye)+d/2;ye+d/2 fliplr(ye)-d/2];%桌面在y轴上的数据,fliplr函数实现矩阵的左右翻转
Ty=Ty(:);
legx=[hL*ones(size(xe));hL*ones(size(xe));xe;xe]; %桌腿数据
legy=[ye-d/2;ye+d/2;ye+d/2;ye-d/2];
legz=zeros(size(legx));
zhoux=[hL-legL(1)/2;hL-legL(1)/2];
zhouy=[-R R];
zhouz=[0;0]; %钢筋轴数据
yb=linspace(ye(1),ye(end),50);
xb=sqrt(R^2-yb.^2);
Bx=hL*ones(size(xb));
By=yb;
Bz=zeros(size(xb)); %腿尖曲线数据
figure(1),clf;%画底图,清除以前的图片
hold on
h1=patch(Tx,Ty,Tz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌面
h2=patch(legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌腿
h3=patch(-legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌腿
h4=plot3(zhoux,zhouy,zhouz,'c');
h5=plot3(-zhoux,zhouy,zhouz,'c');%画钢筋轴
h6=plot3(Bx,By,Bz,'k');
h7=plot3(-Bx,By,Bz,'k');%腿尖曲线
hold off;view(3);axis equal;axis([-hL hL -R R 0 2*hH]);axis off;
zz=-hH*sind(deg);xz=xe(1)+hH*cosd(deg); %钢筋轴,z坐标和x坐标
alldeg=atan2(-zz*ones(size(xe)),xz-xe); %每个条腿折叠角度,20个
allx=legL.*cos(alldeg)+xe; %每条腿末端x坐标,20个
allz=-legL.*sin(alldeg); %每条腿末端z坐标,20个
alldeg2=atan2(-zz*ones(size(xb)),xz-xb);
Bx=(hL-xb).*cos(alldeg2)+xb;Bz=-(hL-xb).*sin(alldeg2);%腿尖曲线x数据
minz=min(Bz); %最低腿z坐标,桌子当前高度
legx=[allx;allx;xe;xe]; %桌腿数据
legz=[allz;allz;zeros(size(allz));zeros(size(allz))]-minz; set(h1,'ZData',-minz*ones(size(Tz)));
set(h2,'XData',legx,'ZData',legz);set(h3,'XData',-legx,'ZDa ta',legz);
set(h4,'XData',[xz;xz],'ZData',[zz;zz]-minz);
set(h5,'XData',-[xz;xz],'ZData',[zz;zz]-minz);
set(h6,'XData',Bx,'ZData',Bz-minz);set(h7,'XData',-Bx,'ZDat a',Bz-minz);
pause(0.1);drawnow;
caochang=sqrt((xe-xe(1)).^2+hH.^2-2*hH.*(xe-xe(1)).*cos(all deg))-(legL-hH)
程序三:问题一求桌脚边缘线的程序
i=0:9;
y=1.25:2.5:23.75
h=50;
b=25-2.5*i;
r=25;
a=sqrt(r*r-b.*b);
c=60-a
k=sqrt((c(1,1)-sqrt((c(1,1)./2).*(c(1,1)./2)-(h./2).*(h./2) )-c).*(c(1,1)-sqrt((c(1,1)./2).*(c(1,1)./2)-(h./2).*(h./2)) -c)+(h./2).*(h./2))-(c-c(1,1)./2);
e1=66;
x=c(1,1).*cos(e1)-(60-c-c.*(60-c-c(1,1)./2.*cos(e1))./(c+k) )
z=c(1,1)*sin(e1)-c.*(c(1,1).*sin(e1)./(c(1,1)+2*k))
plot3(x,y,z)
程序四、问题二求桌高70 cm,桌面直径80 cm的情形,最优设计加工参数的matlab程序
function f=fun1(x);
f=x(1)
function [g,ceq]=mycon(x)
g=[x(1).^2/4+x(5).^2+x(2).^2-x(1).*x(5)-1600;x(4).*x(6)-80; x(5).^2+x(7).^2-x(3).^2-2*x(4)*x(5)-2*x(4).*x(7)+2*x(5).*x( 7)+x(4).^2.*x(6).^2+x(3).^2.*x(6).^2+2*x(3).*x(7)-2*x(3).*x (7)-2*x(3).*x(4).*x(6).^2-x(8).^2;x(1)/4.*x(1).^2+x(2).^2+x (4).^2-x(1).*x(4)-80*x(2).^2;x(4).^2-x(4).^2.*x(6).^2+x(3). ^2-x(3).^2.*x(6).^2-x(3).*x(4)+2*x(3).*x(4).*x(6).^2-x(8).^ 2;70*x(4)-70*x(3)-x(4).*x(9);-x(5).^2+x(7).^2+x(9).^2];
x0=[1,1,1,1,1,1,1,1,1,1];
A=[];b=[];
Aeq=[];beq=[];
vlb=[];vub=[];
[x,fval]=fmincon('fun1',x(0),A,b,Aeq,beq,vlb,vub,'mycon')
程序五、问题三动态图程序
clear
L=120;D=50;d=2.5;hL=L/2;R=D/2; %木板长,宽;腿木条宽;半长;圆桌面半径
deg=75
ye=-R+d/2:d:R-d/2;
x1=0+d/2:d:R-d/2
x2=23.75-(d/2:d:R)+d/2
x3=[x1;x2]
x4=x3'
xe1=x4(:)
xe=xe1'%折叠点的y坐标,x坐标,各20个;
legL=hL-xe%腿长度,20个;
hH=legL(1)/2;ddeg=2; %最长腿半长;角度增量
Tx=[xe -xe;xe
-xe];Tx=Tx(:);Tz=zeros(size(Tx)); %桌面数据Ty=[ye-d/2 fliplr(ye)+d/2;ye+d/2 fliplr(ye)-d/2];%桌面在y轴上的数据,fliplr函数实现矩阵的左右翻转
Ty=Ty(:);
legx=[hL*ones(size(xe));hL*ones(size(xe));xe;xe];
%桌腿数据
legy=[ye-d/2;ye+d/2;ye+d/2;ye-d/2];legz=zeros(size(legx)); zhoux=[hL-legL(1)/2;hL-legL(1)/2];zhouy=[-R
R];zhouz=[0;0]; %钢筋轴的数据
yb=linspace(ye(1),ye(end),50);xb=sqrt(R^2-yb.^2);
Bx=hL*ones(size(xb)); By=yb;
Bz=zeros(size(xb)); %腿尖曲线数据
figure(1),clf;%画底图,清除以前的图片
hold on
h1=patch(Tx,Ty,Tz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);%画桌面
h2=patch(legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);画桌腿
h3=patch(-legx,legy,legz,'facecolor',[1 1 1],'edgecolor',[0 0 0]);画桌腿
h4=plot3(zhoux,zhouy,zhouz,'c');h5=plot3(-zhoux,zhouy,zhouz ,'c');%画钢筋轴
h6=plot3(Bx,By,Bz,'k');h7=plot3(-Bx,By,Bz,'k');%腿尖曲线hold off;view(3);axis equal;axis([-hL hL -R R 0 2*hH]);axis off;
for deg=0:ddeg:75 %最长桌腿相对桌面折叠角度
zz=-hH*sind(deg);xz=xe(1)+hH*cosd(deg); %钢筋轴,z坐标和x坐标
alldeg=atan2(-zz*ones(size(xe)),xz-xe); %每个条腿折叠角度,20个
allx=legL.*cos(alldeg)+xe; %每条腿末端x坐标,20个
allz=-legL.*sin(alldeg); %每条腿末端z坐标,20个 alldeg2=atan2(-zz*ones(size(xb)),xz-xb);
Bx=(hL-xb).*cos(alldeg2)+xb;Bz=-(hL-xb).*sin(alldeg2);%腿尖曲线x的数据
minz=min(Bz); %最低腿z的坐标,桌子当前高度
legx=[allx;allx;xe;xe]; %桌腿数据
legz=[allz;allz;zeros(size(allz));zeros(size(allz))]-minz; set(h1,'ZData',-minz*ones(size(Tz)));
set(h2,'XData',legx,'ZData',legz);set(h3,'XData',-legx,'ZDa ta',legz);
set(h4,'XData',[xz;xz],'ZData',[zz;zz]-minz);
set(h5,'XData',-[xz;xz],'ZData',[zz;zz]-minz);
set(h6,'XData',Bx,'ZData',Bz-minz);set(h7,'XData',-Bx,'ZDat a',Bz-minz);
pause(0.1);drawnow;
end
caochang=sqrt((xe-xe(1)).^2+hH.^2-2*hH.*(xe-xe(1)).*cos(all deg))-(legL-hH)。