博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【7.21】动态桌子代码
阅读量:6469 次
发布时间:2019-06-23

本文共 3850 字,大约阅读时间需要 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); %长条中心在圆上的位置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]); %edgecolor为形状边缘线颜色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 onh4=plot3(zhoux,zhouy,zhouz,'k-.');	%k表示黑色,-.表示点划线h5=plot3(-zhoux,zhouy,zhouz,'k-.');hold offview(3);axis equal;	%沿每个坐标轴使用相同的数据单位长度。axis([-hL hL -R R 0 H]); %把坐标范围移动到x=[-hl,hl],y=[-R,R],z=[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))); %设置h1-h5 X、Y、Z方向的参量    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

 

正六边形:

 

L=120; %长D=50; %宽,圆桌面直径d=2.5; %木板宽hL=L/2; %半长R=D/2; %圆桌面半径y=-R+d/2:d:R-d/2; %长条宽度方向中心位置x = R-(abs(y)/sqrt(3)) %正六边形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 onh4=plot3(zhoux,zhouy,zhouz,'k-.');h5=plot3(-zhoux,zhouy,zhouz,'k-.');hold offview(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

 

  

 

桌角边缘线形状动态变化:

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);H=hL-x(1);%最长腿的长度chax=x-x(1);%每根木条顶点离最外面木条顶点的距离for h=2:5:50alpha=acos(h/H);beta=pi/2-alpha;caodi=sqrt(chax.^2+(H^2)/4-chax.*H*cos(beta));%%开槽长度kaicaochang=caodi-(H/2-chax);%开槽长度sin_gama=(H/2).*sin(beta)./(caodi);cos_gama=(chax.^2+caodi.^2-(H/2)^2)/(2*chax.*caodi);mutiaochang=H-chax;dix=-(L/2-mutiaochang.*(1+cos_gama));diy=y;diz=-mutiaochang.*sin_gama;figure(1);scatter3(dix,diy,50+diz,'r','LineWidth',1.5)xlabel('X');ylabel('Y');zlabel('Z');view(150,10) %控制观察角度pause(0.5);drawnow;grid onend

  

Lingo求解:

MODEL:MIN=l1;r=40;h=70;Gmax=@sqrt(r^2-(r/n)^2);Gmin=@sqrt(r^2-(r-r/n)^2);g1=Gmax-Gmin;l1>=h;@cos(alpha)=70/l1;g1
=(l1/2)^2;l1+Gmin>=dis;dis>=Gmax;d=r/n;N>3;N<=50;d>=2.5;END

  

 

转载于:https://www.cnblogs.com/zxhyxiao/p/9347733.html

你可能感兴趣的文章
Hessian 原理分析--转
查看>>
转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
查看>>
easyui传入map的数据前台展示出tree格式数据
查看>>
悲观的思考,乐观的生活.我们既需要思考的深度,也需要生活的温度!
查看>>
java.math.BigDecimal
查看>>
解决linux下/etc/rc.local开机器不执行的原因。
查看>>
Vitamio中文API文档(4)—— VitamioInstaller
查看>>
河内之塔
查看>>
图像处理之基础---内窥镜医学图像增强
查看>>
yii框架常用url地址
查看>>
python3.4学习笔记(十六) windows下面安装easy_install和pip教程
查看>>
MyGUI 解析
查看>>
Linux中的ls命令详细使用
查看>>
graph-tool文档(一)- 快速开始使用Graph-tool - 2.属性映射、图的IO和Price网络
查看>>
graph-tool 练习
查看>>
easyui treegrid逐步加载
查看>>
GraphicsLab Project之辉光(Glare,Glow)效果 【转】
查看>>
<转>Python: __init__.py 用法
查看>>
Linux Curl命令
查看>>
046 SparlSQL中的函数
查看>>