MATLAB动态展示--手指预应变施加过程

以一种非常直观的方式展示预应变施加过程

单腔手指预应变可以明显增强手指的弯曲变形能力,那么实际预应变的方式以及预应变的形状对其弯曲能力的影响时的研究就显得非常重要。本程序将介绍一种动态展示的方式,更直观的介绍预应变的施加过程。

clc
close all
clear all
%% 参数输入
%% 可变
N=5;          % %腔体个数
sss=0.01;     % %变形速度
%% 不可变
o=200;        % %细化个数
dd=500;       % %圆形描画精细程度
RR=[1,2;2,1]; % %几个圆的半径
%% 主程序  
%% 前期数据准备
X=[8,8,0,0];
Y=[8,0,0,8];%%手指指尖出数据
A11=[0	0	-4	-4	-4	-3.992106914	-3.968458805	-3.929149003	-3.874332645	-3.804226065	-3.719105944	-3.61930821	-3.50522672	-3.377311702	-3.236067977	-3.082052971	-2.91587451	-2.738188424	-2.549695959	-2.351141009	-2.14330718	-1.927014696	-1.703117166	-1.472498211	-1.236067977	-0.994759549	-0.749525258	-0.501332934	-0.251162078	2.44929E-16	6.12323E-17	-0.06279052	-0.125333234	-0.187381315	-0.248689887	-0.309016994	-0.368124553	-0.425779292	-0.481753674	-0.535826795	-0.587785252	-0.63742399	-0.684547106	-0.728968627	-0.770513243	-0.809016994	-0.844327926	-0.87630668	-0.904827052	-0.929776486	-0.951056516	-0.968583161	-0.982287251	-0.992114701	-0.998026728	-1	-1	-0.998026728	-0.992114701	-0.982287251	-0.968583161	-0.951056516	-0.929776486	-0.904827052	-0.87630668	-0.844327926	-0.809016994	-0.770513243	-0.728968627	-0.684547106	-0.63742399	-0.587785252	-0.535826795	-0.481753674	-0.425779292	-0.368124553	-0.309016994	-0.248689887	-0.187381315	-0.125333234	-0.06279052	-1.83697E-16
    1.5	0	0	4	4	4.251162078	4.501332934	4.749525258	4.994759549	5.236067977	5.472498211	5.703117166	5.927014696	6.14330718	6.351141009	6.549695959	6.738188424	6.91587451	7.082052971	7.236067977	7.377311702	7.50522672	7.61930821	7.719105944	7.804226065	7.874332645	7.929149003	7.968458805	7.992106914	8	7	6.998026728	6.992114701	6.982287251	6.968583161	6.951056516	6.929776486	6.904827052	6.87630668	6.844327926	6.809016994	6.770513243	6.728968627	6.684547106	6.63742399	6.587785252	6.535826795	6.481753674	6.425779292	6.368124553	6.309016994	6.248689887	6.187381315	6.125333234	6.06279052	6	2.5	2.43720948	2.374666766	2.312618685	2.251310113	2.190983006	2.131875447	2.074220708	2.018246326	1.964173205	1.912214748	1.86257601	1.815452894	1.771031373	1.729486757	1.690983006	1.655672074	1.62369332	1.595172948	1.570223514	1.548943484	1.531416839	1.517712749	1.507885299	1.501973272	1.5];
A12=[0	0	4	4	1	1	0
    1.5	0	0	3	3	1.5	1.5];
A13=[0	4	4	1	1	0.998026728	0.992114701	0.982287251	0.968583161	0.951056516	0.929776486	0.904827052	0.87630668	0.844327926	0.809016994	0.770513243	0.728968627	0.684547106	0.63742399	0.587785252	0.535826795	0.481753674	0.425779292	0.368124553	0.309016994	0.248689887	0.187381315	0.125333234	0.06279052	6.12323E-17
     8	8	5	5	6	6.06279052	6.125333234	6.187381315	6.248689887	6.309016994	6.368124553	6.425779292	6.481753674	6.535826795	6.587785252	6.63742399	6.684547106	6.728968627	6.770513243	6.809016994	6.844327926	6.87630668	6.904827052	6.929776486	6.951056516	6.968583161	6.982287251	6.992114701	6.998026728	7];
%%手指指端出数据
d=5/o; %%每步下压长度
r1=RR(1,1);r2=RR(1,2);
r3=RR(2,1);r4=RR(2,2);
figure(1)
%% 预设各腔体绘图空间
for ij=1:N
    h1(ij)=fill([0 1 1 0 0],[0,0,1,1,0],'b');hold on
    h2(ij)=rectangle('Position',[4-r1,9-r1,2*r1,2*r1],'Curvature',[1,1],'facecolor','r');%%绘制拟合后的圆形
    h3(ij)=fill([0 1 1 0 0],[0,0,1,1,0],'w');hold on
end
for ii=0:N
    rectangle('Position',[ii*8-r4,6-r4,2*r4,2*r4],'Curvature',[1,1],'facecolor','c');hold on%%绘制拟合后的圆形
end
HH=[1,1,0.5,0.45,0.35,0.32,0.28,0.23,0.21,0.2,0.2,0.2,0.2];
axis([-5,N*8+5,-1,10])
set(gcf,'Unit','normalized','Position',[0,0,1,HH(N)])
%% 画出指尖和指端
fill(A11(1,:),A11(2,:),'b');hold on
fill(A12(1,:)+N*8,A12(2,:),'b');hold on
fill(A13(1,:)+N*8,A13(2,:),'b');hold on
title('施加预应变的演示')
%% 循环画图   
for i=0:o
    H=d*i;%%当前步下移长度
    %% 绘制外侧边缘形状
    fai=asin(r2/(((16+(-2+H)^2)^0.5)*(r2/(r1+r2))))+atan((H-3)/4);
    fai1=fliplr(pi()/2-fai:pi()/dd:pi()/2);%%第一段圆弧角度
    fai2=-pi()/2-fai:pi()/dd:-pi()/2+fai;%%第二段圆弧角度
    fai3=fliplr(0:pi()/dd:fai)+pi()/2;%%第一段圆弧角度
    A1=[2*cos(fai1);6+2*sin(fai1)];
    A2=[4+cos(fai2);9-H+sin(fai2)];
    A3=[8+2*cos(fai3);6+2*sin(fai3)];
    X1=[X,A1(1,:),A2(1,:),A3(1,:),X(1)];
    Y1=[Y,A1(2,:),A2(2,:),A3(2,:),Y(1)];
    for ji=1:N
        set(h1(ji),'Xdata',X1+(ji-1)*8,'Ydata',Y1);
        set(h2(ji),'Position',[4+(ji-1)*8-r1,9-H-r1,2*r1,2*r1])
    end
    %% 绘制内侧边缘形状
    fai11=asin(r2/(((16+(-2+H)^2)^0.5)*(r2/(r1+r2))))+atan((H-3)/4);
    fai12=fliplr(pi()/2-fai11:pi()/dd:pi()/2);%%第一段圆弧角度
    fai22=-pi()/2-fai11:pi()/dd:-pi()/2+fai11;%%第二段圆弧角度
    fai32=fliplr(0:pi()/dd:fai11)+pi()/2;%%第一段圆弧角度
    A12=[cos(fai12);6+sin(fai12)];
    A22=[4+2*cos(fai22);9-H+2*sin(fai22)];
    A32=[8+cos(fai32);6+sin(fai32)];
    X12=[X,A12(1,:),A22(1,:),A32(1,:),X(1)];
    Y12=[Y+1.5,A12(2,:),A22(2,:),A32(2,:),Y(1)+1.5];
    for ji=1:N
        set(h3(ji),'Xdata',X12+(ji-1)*8,'Ydata',Y12);
    end
    %% 时间延迟
    if i==0
        pause(2)
    else
        pause(sss)
    end
end

预应变施加效果如图:(绿色为固定圆,红色为下压圆,蓝色为手指腔壁)
单指预应变施加过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值