2007年4月25日 星期三

第七次作業動畫

動畫

第七次作業


7.1 7.2
ground(0,0,6,0)
anchor(-3,0,0,0)
for t=1:1:5
dyad_rrrr([15 20 10],[0 0 0],[0.2,0.3,0.4],[0,0.1,0.2],t)
end


7.3
for t=1:0.5:5;
clf;
ground(0,0,6,0);
anchor(-3,0,0,0);
dyad_rrrr ([15 20 10],[0 0 0],[0.2,0.3,0.4],[0,0.1,0.2],t);
pause(0.1);
end;


我將老師的FUNCTION增加了角位移的移動
function dyad_rrrr(rho,theta,td,tdd,t)

% Call function dyad(rho,theta,td,tdd) to
% analyze a dyad linkage composing cranks and a dyad with drawing.
% Inputs: rho:length of links
% theta:incling angles, deg.
% td:angular velocity, rad/s
% tdd:angular acceleration, rad/s^2
% Example:
% dyad_draw([15 10 5],[0 60 90],[.5 .8 .5],0)
w=theta+td*t+tdd*t^2/2
td2=td+t*tdd
[vec,data] = dyad(rho,w,td2,tdd);
x=[0;cumsum(real(data(:,1)))];y=[0;cumsum(imag(data(:,1)))];
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
axis equal;
end
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
end
for i=1:length(x)-1
linkshape([x(i) y(i)],[x(i+1) y(i+1)],1);
axis equal;
end
for k=1:length(rho)
x0=x(k+1);y0=y(k+1);
vx=x0+real(data(k,2));vy=y0+imag(data(k,2));
ax=x0+real(data(k,3));ay=y0+imag(data(k,3));
line([x0 vx],[y0 vy],'marker','s','linewidth',2);
line([x0 ax],[y0 ay],'marker','s','color','r','linewidth',3)
end
sdata=sum(data);
ss=[real(sdata(1)) imag(sdata(1))];
vv=[real(sdata(2)) imag(sdata(2))];
aa=[real(sdata(3)) imag(sdata(3))];
line([0 ss(1)],[0 ss(2)],'linestyle',':','linewidth',2)
line([ss(1) ss(1)+vv(1)],[ss(2) ss(2)+vv(2)],...
'marker','d','color','g','linewidth',3)
line([ss(1) ss(1)+aa(1)],[ss(2) ss(2)+aa(2)],...
'marker','d','color','m','linewidth',3)
axis equal;grid on

第六次作業

6.1.1
 共有12桿及15個結,其中C.D.E.F.I這五個結要算兩個,因為是三桿相接
6.1.2
 M=3*(N-J-1)+F
 N=12 J=15 
 F=12*1+1*1+2*2=17
 M=-12+17=5 DOF=5
6.1.3
 函式輸入為
  gruebler(12,[12 1 2])
 得DOF=5;
6.1.4
 滑塊與地面之間是可移動的狀態,所以有兩個自由度,是一個滑動結,
滑槽因可滑動與轉動,所以有兩個自由度

6.2.1
 A.B.D為球結,DOF=3
 C為圓柱結,DOF=2
F.E為旋轉結,DOF=1
6.2.2
 m=6(N-J-1)+F=6(6-6-1)+13
 m=7 DOF=7
6.2.3
 函式輸入為
 gruebler(6,[2 0 0 3 1])
 得DOF=7
6.2.4
 A.B結點間與C.D結點之間的桿,因為可自由自轉,所以有兩個惰性自由度,所以其可動度要減二,m=7-2=5; 

6.3.1
 在一四連桿組中,最短桿與最長桿之和小於其他兩桿之和時,則至少有一桿為可旋轉桿。稱為葛拉索型;
 而,其他類型則總稱非葛拉索型。
6.3.2
 
〈一〉7+4=6+5→中立連桿組
 
MATLAB計算如下
>>grashof(1,[7 4 6 5])
ans =
Neutral Linkage
〈二〉8+3.6>5.1+4.1→非葛拉索連桿
MATLAB計算如下
>>grashof(1,[8 3.6 5.1 4.1])
ans =
Non-Grashof Linkage

〈三〉6.6+3.1<5.4+4.7→葛拉索第一類桿
 因為接地桿鄰近最短桿,所以曲柄搖桿型
MATLAB計算如下
>>grashof(1,[5.4 3.1 6.6 4.7])
ans =
Crank-Rocker Linkage

6.3.3
 觀察以上三組數據,只有第二組四連桿為非葛拉索型,若要將其改成葛拉索型機構,如果將最長桿或最短桿減短,或者把第二和第三長的連桿長度增長,就是為了要達成葛拉索機構最長與最短之和小於另外兩桿之和。

第六次作業第一題圖


第六次作業第二題


2007年4月11日 星期三

第五次作業

5.1L1=20;L2=15;L3=7;theta1=0;theta2=180;theta3=270;L=L3+5;cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;axis equal;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);arm1=line(rox1,roy1);
%arm2;xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
arm2=line(hx2,hy2);
%palm;L=L3+4;xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn3=2*cosd(cir5);yn3=2*sind(cir5);
xfinger=[-4 -2 -2 -0.5 0 0.5 2 2 3];yfinger=[-4*L/7 -3*L/7 -6*L/7 -4*L/7 -L -4*L/7 -6*L/7 -4*L/7 -5*L/7];
finalx3=[xn1 xfinger xn3];finaly3=[yn1 yfinger yn3];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;palm=line(hx3,hy3);

5.2function bady(L1,L2,L3,theta1,theta2,theta3)
axis equal;L=L3+5;cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);line(rox1,roy1);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);
%palm(L3);
xn1=2*cosd(cir1);yn1=2*sind(cir1);

xn3=2*cosd(cir5);yn3=2*sind(cir5);
xfinger=[-4 -2 -2 -0.5 0 0.5 2 2 3];yfinger=[-4*L/7 -3*L/7 -6*L/7 -4*L/7 -L -4*L/7 -6*L/7 -4*L/7 -5*L/7];
finalx3=[xn1 xfinger xn3];finaly3=[yn1 yfinger yn3];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);
5.3
bady(30,30,7,90,-45,-30 )
5.4for n=0:10; clf; bady(30,30,7,-90+1.5*n,-45+1*n,-30+2*n); pause(0.2);end
5.2.1function finger(L1,L2,L3,theta1,theta2,theta3)
axis equal;
cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);line(rox1,roy1);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);
%palm(L3);
xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn2=3*cosd(cir2);yn2=3*sind(cir2);
xn3=2*cosd(cir3)+L2;yn3=2*sind(cir3);
xn4=2*cosd(cir4)+L2;yn4=2*sind(cir4);
xn5=2*cosd(cir5)+L2;yn5=2*sind(cir5);
xn6=3*cosd(cir6);yn6=3*sind(cir6);
mmm=L2/2*tand(10);xna=L2/2;yna=-mmm-5;
xnb=L2/2;ynb=mmm+5;
finalx3=[xn1 xn2 xna xn3 xn4 xn5 xnb xn6];finaly3=[yn1 yn2 yna yn3 yn4 yn5 ynb yn6];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);
主程式:finger(10,10,7,0,210,200);
5.2.2finger(10,10,7,0,180,180);finger(10,10,7,90,90,90);
5.2.3function finger2(L1,L2,L3,theta1,theta2,theta3,w1,w2,w3)
axis equal;
cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;
%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
v1=L1*w1;aa1=L1*w1*w1;finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];vx1=L1;vy1=0+v1;rovx1=vx1*cosd(-theta1)-vy1*sind(-theta1);rovy1=vx1*sind(-theta1)+vy1*cosd(-theta1);ax1=L1-aa1;ay1=0;roax1=ax1*cosd(-theta1)-ay1*sind(-theta1);roay1=ax1*sind(-theta1)+ay1*cosd(-theta1);rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
line(rox1,roy1);line([a1 rovx1],[b1 rovy1]);line([a1 roax1],[b1 roay1]);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
v2=L2*w2;aa2=L2*w2*w2;
vx2=L2;vy2=0+v2;rovx2=vx2*cosd(180-theta1+theta2)-vy2*sind(180-theta1+theta2);rovy2=vx2*sind(180-theta1+theta2)+vy2*cosd(180-theta1+theta2);ax2=L2-aa2;ay2=0;roax2=ax2*cosd(180-theta1+theta2)-ay2*sind(180-theta1+theta2);roay2=ax2*sind(180-theta1+theta2)+ay2*cosd(180-theta1+theta2);
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);line([a2 rovx2],[b2 rovy2]);line([a2 roax2],[b2 roay2]);
%arm3;
xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn2=3*cosd(cir2);yn2=3*sind(cir2);
xn3=2*cosd(cir3)+L2;yn3=2*sind(cir3);
xn4=2*cosd(cir4)+L2;yn4=2*sind(cir4);
xn5=2*cosd(cir5)+L2;yn5=2*sind(cir5);
xn6=3*cosd(cir6);yn6=3*sind(cir6);
mmm=L3/2*tand(10);xna=L3/2;yna=-mmm-5;
xnb=L3/2;ynb=mmm+5;
v3=L3*w3;aa3=L3*w3*w3;vx3=L3;vy3=0+v3;rovx3=vx3*cosd(360-theta1+theta2+theta3)-vy3*sind(360-theta1+theta2+theta3);rovy3=vx3*sind(360-theta1+theta2+theta3)+vy3*cosd(360-theta1+theta2+theta3);ax3=L3-aa3;ay3=0;roax3=ax3*cosd(180-theta1+theta2)-ay3*sind(180-theta1+theta2);roay3=ax3*sind(180-theta1+theta2)+ay3*cosd(180-theta1+theta2);
finalx3=[xn1 xn2 xna xn3 xn4 xn5 xnb xn6];finaly3=[yn1 yn2 yna yn3 yn4 yn5 ynb yn6];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a3=L3*cosd(360-theta1+theta2+theta3)-0*sind(360-theta1+theta2+theta3);b3=L3*sind(360-theta1+theta2+theta3)+0*cosd(360-theta1+theta2+theta3);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);line([a3 rovx3],[b3 rovy3]);line([a3 roax3],[b3 roay3]);
主程式:finger2(10,10,10,90,90,90,4,4,4);

5.2.3


5.2.2


5.2.1


5.4


5.3


5.2


5.1