2007年4月25日 星期三

作業六

6-1-1

請見部落格詳圖

6-1-2

M=3*(N-J-1)+F
N=12 J=15 
F為12個旋轉結+1個滑動結+2個滑槽結
F=12*1+1*1+2*2=17
M=-12+17=5 自由度為5


6-1-3

由function gruebler
輸入旋轉結12、滑動結1、滑槽結2
得gruebler(12,[12 1 2])
運算後得自由度為5


6-1-4

討論此機構的時候,要注意滑塊的部分,它使整個系統多出了一個滑動結,而滑槽的自由度為2,因為它可提供滑動自由度以及轉動的自由度。


6-2-1

請見部落格詳圖


6-2-2

M=6(N-J-1)+f=6(6-6-1)+13
M=7 
可算出其自由度為7
在減掉惰性自由度可得M=5
所以可以動


6-2-3

gruebler(6,[2 0 0 3 1])
可得自由度為7
在減掉惰性自由度可得M=5


6-2-4
有些連桿會有自轉運動而這些連桿會抵銷掉一個自由度。
故我們可以發現4跟6可以自轉,自由度要-2
而這些惰性自由度只會減少整個機構的自由度。


6-3-1

葛拉索定理(Grashof's theorem ) :
詳見此網址http://140.112.94.11/~dsfon/Mechanism/chap5.htm


6-3-2

一:7+4=6+5,故屬於葛拉索第三類桿,即中立連桿組

二:8+3.6>5.1+4.1,故屬於葛拉索第二類桿,即非葛拉索連桿

三:6.6+3.1<5.4+4.7,其屬於葛拉索第一類桿

6-3-3
一:由grashof(1,[7 4 6 5])
可知其為Neutral Linkage

二:grashof(1,[8 3.6 5.1 4.1])
可知其為Non-Grashof Linkage

三:grashof(1,[5.4 3.1 6.6 4.7])
我們可以知道它是Crank-Rocker Linkage


6-3-4

一跟三已經是葛拉索機構,第二組則為非葛拉索型,此為一四連桿,若要將其改成葛拉索型機構,只要將葛拉索機構中最長與最短之和小於另外兩桿之和即可變成一個葛拉索機構。

作業七

7-1

這次要用到教學網站上的anchor,ground,dyad和dyad_draw等function
原本的dyad_draw輸入的角度不會隨時間而變
所以如果能在原本的function多增加一個時間的參數
就能符合題目的要求
因此做以下的改變:
function dyad_draw_newt(rho,theta,td,tdd,t)
theta2=theta+td*t+tdd*t^2/2
td2=td+t*tdd
[vec,data] = dyad(rho,theta2,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
接下來就可以執行了
程式碼如下:
ground(0,0,10,0)
anchor(-10,0,0,0)
for t=1:5
dyad_draw_newt([16 21 11],[0 0 0],[0.2,0.3,0.4],[0,0.1,0.2],t)
end


7-2


7-3

要讓本題以動畫呈現的話
可以用第一題的圖
我讓他呈現很多次
並且用clf清除每次產生的圖
就會有動畫的感覺了
程式碼如下:
for t=1:0.25:5
axis off
axis ([-25 50 -25 50])
ground(0,0,5,0)
anchor(-5,0,0,0)
dyad_draw_newt([16 21 11],[0 0 0],[0.2,0.3,0.4],[0,0.1,0.2],t)
pause(0.2)
if t<5
clf
end
end

2007年4月24日 星期二

作業五

5-1-1
L1=8
armx1=[2 2*cosd(30) 2*cosd(45) 2*cosd(60) 2*cosd(90) 2*cosd(120) 2*cosd(135) 2*cosd(150) -2 -2 2*cosd(210) 2*cosd(225) 2*cosd(240) 2*cosd(270) 2*cosd(300) 2*cosd(315) 2*cosd(330) 2 2]
army1=[0 2*sind(30) 2*sind(45) 2*sind(60) 2*sind(90) 2*sind(120) 2*sind(135) 2*sind(150) 0 -L1 -L1+2*sind(210) -L1+2*sind(225) -L1+2*sind(240) -L1+2*sind(270) -L1+2*sind(300) -L1+2*sind(315) -L1+2*sind(330) -L1 0]
line(armx1,army1)
axis equal

L2=6
armx2=[0 2*cosd(120) 2*cosd(135) 2*cosd(150) 2*cosd(180) 2*cosd(210) 2*cosd(225) 2*cosd(240) 0 L2 L2+2*cosd(300) L2+2*cosd(315) L2+2*cosd(330) L2+2*cosd(360) L2+2*cosd(30) L2+2*cosd(45) L2+2*cosd(60) L2 0]
army2=-L1+[2 2*sind(120) 2*sind(135) 2*sind(150) 2*sind(180) 2*sind(210) 2*sind(225) 2*sind(240) -2 -2 2*sind(300) 2*sind(315) 2*sind(330) 2*sind(360) 2*sind(30) 2*sind(45) 2*sind(60) 2 2]
line(armx2,army2)
axis equal

L3=4
palmx=L1+[0 0 L3 L3 0 0]
palmy=-L1+[0 2 2 -2 -2 0]
line(palmx,palmy)
axis equal


5-1-2
function body(L1,L2,L3,theta1,theta2,theta3)

armx1=[2 2*cosd(30) 2*cosd(45) 2*cosd(60) 2*cosd(90) 2*cosd(120) 2*cosd(135) 2*cosd(150) -2 -2 2*cosd(210) 2*cosd(225) 2*cosd(240) 2*cosd(270) 2*cosd(300) 2*cosd(315) 2*cosd(330) 2 2]
army1=[0 2*sind(30) 2*sind(45) 2*sind(60) 2*sind(90) 2*sind(120) 2*sind(135) 2*sind(150) 0 -L1 -L1+2*sind(210) -L1+2*sind(225) -L1+2*sind(240) -L1+2*sind(270) -L1+2*sind(300) -L1+2*sind(315) -L1+2*sind(330) -L1 0]
line(armx1,army1)
axis equal

armx2=[0 2*cosd(120) 2*cosd(135) 2*cosd(150) 2*cosd(180) 2*cosd(210) 2*cosd(225) 2*cosd(240) 0 L2 L2+2*cosd(300) L2+2*cosd(315) L2+2*cosd(330) L2+2*cosd(360) L2+2*cosd(30) L2+2*cosd(45) L2+2*cosd(60) L2 0]
army2=-L1+[2 2*sind(120) 2*sind(135) 2*sind(150) 2*sind(180) 2*sind(210) 2*sind(225) 2*sind(240) -2 -2 2*sind(300) 2*sind(315) 2*sind(330) 2*sind(360) 2*sind(30) 2*sind(45) 2*sind(60) 2 2]
line(armx2,army2)
axis equal

palmx=L1+[0 0 L3 L3 0 0]
palmy=-L1+[0 2 2 -2 -2 0]
line(palmx,palmy)
axis equal

clf

x1=armx1*cosd(90-theta1)-army1*sind(90-theta1);
y1=armx1*sind(90-theta1)+army1*cosd(90-theta1);
line(x1,y1)
theta2=180-(theta2-theta1);
x2=armx2*cosd(-theta2)-army2*sind(-theta2)-L1*sind(theta1-90);
y2=armx2*sind(-theta2)+army2*cosd(-theta2)-L1*cosd(theta1-90);
line(x2,y2)
theta3=theta3-theta2-180
x3=palmx*cosd(theta3)-palmy*sind(theta3) -L1*sind(theta1-90)+L2*cosd(theta2);
y3=palmx*sind(theta3)+palmy*cosd(theta3) -L1*cosd(theta1-90)-L2*sind(theta2);
line(x3,y3)


5-1-4
L1=8
L2=6
L3=4
armx1=[2 2*cosd(30) 2*cosd(45) 2*cosd(60) 2*cosd(90) 2*cosd(120) 2*cosd(135) 2*cosd(150) -2 -2 2*cosd(210) 2*cosd(225) 2*cosd(240) 2*cosd(270) 2*cosd(300) 2*cosd(315) 2*cosd(330) 2 2]
army1=-L1+[0 2*sind(30) 2*sind(45) 2*sind(60) 2*sind(90) 2*sind(120) 2*sind(135) 2*sind(150) 0 L1 L1+2*sind(210) L1+2*sind(225) L1+2*sind(240) L1+2*sind(270) L1+2*sind(300) L1+2*sind(315) L1+2*sind(330) L1 0]
line(armx1,army1)
axis equal
armx2=[0 2*cosd(120) 2*cosd(135) 2*cosd(150) 2*cosd(180) 2*cosd(210) 2*cosd(225) 2*cosd(240) 0 6 6+2*cosd(300) 6+2*cosd(315) 6+2*cosd(330) 6+2*cosd(360) 6+2*cosd(30) 6+2*cosd(45) 6+2*cosd(60) 6 0]
army2=[2 2*sind(120) 2*sind(135) 2*sind(150) 2*sind(180) 2*sind(210) 2*sind(225) 2*sind(240) -2 -2 2*sind(300) 2*sind(315) 2*sind(330) 2*sind(360) 2*sind(30) 2*sind(45) 2*sind(60) 2 2]
line(armx2,army2)
axis equal
palmx=[0 0 4 4 0 0]
palmy=[0 2 2 -2 -2 0]
line(palmx,palmy)
axis equal

L1=30
L2=25
L3=8
arm1x=[0 (-4)*sind(30) (-4)*sind(45) (-4)*sind(60) -4 -5 -5*cosd(30) -5*cosd(45) -5*cosd(60) 0 5*cosd(60) 5*cosd(45) 5*cosd(30) 5 4 4*cosd(30) 4*cosd(45) 4*cosd(60) 0]
arm1y=-L1+[ -4 -4*cosd(30) -4*cosd(45) -4*cosd(60) 0 L1 5*sind(30)+L1 5*sind(45)+L1 5*sind(60)+L1 L1+5 5*sind(60)+L1 5*sind(45)+L1 5*sind(30)+L1 L1 0 -4*sind(30) -4*sind(45) -4*sind(60) -4]
line(arm1x,arm1y);
axis equal

arm2x=[ -4 4*cosd(150) 4*cosd(135) 4*cosd(120) 0 L2 L2+3*cosd(60) L2+3*cosd(45) L2+3*cosd(30) L2+3 L2+3*cosd(30) L2+3*cosd(45) L2+3*cosd(60) L2 0 (-4)*sind(30) (-4)*sind(45) (-4)*sind(60) -4]
arm2y=[ 0 4*sind(150) 4*sind(135) 4*sind(120) 4 3 3*sind(60) 3*sind(45) 3*sind(30) 0 -3*sind(30) -3*sind(45) -3*sind(60) -3 -4 -4*cosd(30) -4*cosd(45) -4*cosd(60) 0]
line(arm2x,arm2y);
axis equal

palmx=[ -3 3*cosd(150) 3*cosd(135) 3*cosd(120) 0 L3 L3+5*cosd(60) L3+5*cosd(45) L3+5*cosd(30) L3+5 L3+5*cosd(30) L3+5*cosd(45) L3+5*cosd(60) L3 0 (-3)*sind(30) (-3)*sind(45) (-3)*sind(60) -3]
palmy=[ 0 3*sind(150) 3*sind(135) 3*sind(120) 3 5 5*sind(60) 5*sind(45) 5*sind(30) 0 -5*sind(30) -5*sind(45) -5*sind(60) -5 -3 -3*cosd(30) -3*cosd(45) -3*cosd(60) 0]
line(palmx,palmy);
axis equal


clf

theta1=linspace(-90,-75,10)
theta2=linspace(-45,-35,10)
theta3=linspace(-30,-10,10)
axis equal
for n=1:10;

AXIS([-10 40 -20 40]);
axis equal
x1=arm1x*cosd(90-theta1(n))-arm1y*sind(90-theta1(n));
y1=arm1x*sind(90-theta1(n))+arm1y*cosd(90-theta1(n));
line(x1,y1)
theta2(n)=180-(theta2(n)-theta1(n));
x2=arm2x*cosd(-theta2(n))-arm2y*sind(-theta2(n))-L1*sind(theta1(n)-90);
y2=arm2x*sind(-theta2(n))+arm2y*cosd(-theta2(n))-L1*cosd(theta1(n)-90);
line(x2,y2)
theta3(n)=theta3(n)-theta2(n)-180
x3=palmx*cosd(theta3(n))-palmy*sind(theta3(n)) -L1*sind(theta1(n)-90)+L2*cosd(theta2(n));
y3=palmx*sind(theta3(n))+palmy*cosd(theta3(n)) -L1*cosd(theta1(n)-90)-L2*sind(theta2(n));
line(x3,y3)
axis equal

pause(0.5)
clf
end


5-2-1
L1=10
L2=8
L3=7

linkshape([0,0],[-L1,0])
linkshape([-L1,0],[-L1-L2,0])
linkshape([-L1-L2,0],[-L1-L2-L3,0])
theta1=linspace(0,90,8)
theta2=linspace(0,90,8)
theta3=linspace(0,90,8)
for n=1:8
axis equal
AXIS([-5 30 -10 20]);

x1=-L1*cosd(theta1(n))
y1=L1*sind(theta1(n))
linkshape([0,0],[x1,y1])
theta2(n)=theta1(n)+theta2(n)
x2=x1-L2*cosd(theta2(n))
y2=y1+L2*sind(theta2(n))

linkshape([x1,y1],[x2,y2])

theta3(n)=theta2(n)+theta3(n)
x3=x2-L3*cosd(theta3(n))
y3=y2+L3*sind(theta3(n))
linkshape([x2,y2],[x3,y3])
axis equal
pause(0.3)
clf
end