2007年3月19日 星期一

機動學HW3

Ans1:
y軸上的點為拳頭的軌跡,下方連續曲線為關節的軌跡,每個拳頭會對上一個關節的點,頭底在(0,0)的位置。

(1)程式碼

%L1=30手臂長;
%L2=25手肘長;
%H表示脖子到頭頂的高度=30,(但此處並沒有考慮到頭的寬度);

L1=30;
L2=25;
H=30;


%L也就是手整體伸長的高度;
%也就是假想拳頭的最高點;

L=L1+L2;
y=H:5:L;
x=0;
plot(x,y,'o');

%至此我們先假想了拳頭的移動;
%y由H一直移動到L;

%圖片使用hold on可以把圖形都合在一張圖上;
hold on;

%利用餘弦定律,求出頭與手肘的夾角餘弦值;
c=(y.^2+L2.^2-L1.^2)./(2.*L2*y);

%因為頭與手肘的夾角取正弦*L2就是x 座標;
%所以先做餘弦反函數再取正弦乘上L2;
%y座標則是直接乘上餘弦值;

x=L2.*sin(acos(c));
y=L2.*c;

%畫出圖形
plot(x,y,'o');
hold on;
plot(x,y);

grid on;

(2)移動的範圍
L1+L2=L為最高點
H則是最低點
(3)
假設1:
頭到手肘的底部是忽略其距離的,也就是頭是一條直線,具有高度不具寬度,亦即手完全向上伸展時,整隻手包含手肘手臂及拳頭,可以和頭頂中心上方的延長線重合。

假設2:
忽略拳頭的大小不計,視為在手臂底端的質點。

假設3:
脖子底端到手臂的高度(也就是肩膀斜度所造成的高度)忽略。

基於這三個假設可以想成移動的軌跡是(拳頭高度+頭高)、手臂、手肘三者圍成一個三角形,而拳頭到最高點的時(手肘+手臂)與(拳頭高度+頭高)兩線重合。然而我們知道這三個假設與現實不合。

[假設1]的部分會造成實際值<我們所求的數據
[假設2]則造成實際值>我們所求的數據
[假設3]的部分會造成實際值<我們所求的數據。

所以可知道這個圖形僅供粗略的參考,如果想要知道實際值則要實際頭部的寬度要限制住手可以移動的軌跡,也要去考慮手的質心位置和高度,最後需要考慮的就是脖子底端和手底端真的高度差。

Ans2:日常生活應用的器材中,請舉例(圖示或照片)說明下列之分類:

(1)旋轉對
EX:門片鉸練

Def:
a.兩剛體軸同線:
說明:上下兩片門片鉸練,當兩片套在一起時,中心軸會重合。如圖所示。
b.僅有一個共同軸可供旋轉:
說明:兩門片鉸練重合後,繞中心軸旋轉。ROF=1,如圖所示


門片鉸練一片固定在門上,一片固定在門框上,其相對旋轉運動帶動了門繞著門片鉸練的中心軸旋轉而可自由開關。 以下是門從大角度關到小角度的圖片。

(2)高對與低對運動結 :

a.高對:
EX:
突輪滾動及滑動:衣櫃抽屜

左圖是衣櫃的抽屜,上有滾輪,右圖是衣櫃裡的軌道,滾輪順著軌道由左向右移動。和課本上2.16左上角圖輪滾動及滑動之形式相同。

下方圖片為兩個和起來工作的圖片。

b.低對
C型對:小掛勾

<1>外部掛勾和中心粉紅色杆子兩軸重合在中心粉紅色杆子中心線

<2>第一圖的掛勾經過向左移,以及向上旋轉後形成第二圖的狀況。(即為一軸向平移,一垂直軸之旋轉運動)

<3>DOF=2,拘束度=4

(3)外型式閉合結或外力閉合結

a.外型式閉合結:門栓
門栓原為C型對,但門栓的限制在其外框,如圖中黃線所表示之,所以其平移的距離分別是兩圖的左右極限,而旋轉的角度限制則為向上90度。












b.外力閉合結:懸掛重物的掛勾

如圖所示,掛勾設計就是為的懸掛東西,當東西掛上後,因物體的重量,造成一向下拉的外力,所以掛勾就無法再做旋轉的動作。


Ans 3:(1程式碼及圖片)

%宣告θ from:0~360;
theta=0:1:360;

%宣告圓的半徑
r=80;
%宣告頭的半徑
rh=(r-r*cosd(60))./2

%我假設腳為半徑,腳的開叉處為圓心
%手伸展成水平,緊接在頭下方,忽略脖子
%手與腳開叉處的連線和腳開叉處與頭底的連線角度為60
%腳開叉處與腳的連線和腳開叉處與頭底的連線角度為45
%在此標出腳和手以及腳開叉處,圓心,頭圓心的未旋轉時x,y座標
Xp=[r*sind(60),-r*sind(60),-r*sind(45),r*sind(45),0,0,0];
Yp=[r*cosd(60),r*cosd(60),-r*cosd(45),-r*cosd(45),r*cosd(60),0,(r+r*cosd(60))./2]
%將這些座標值設在for外,以利我先旋轉在平移時不會變成新的座標在旋轉
%由0到360度每隔30度做一次旋轉
for times=0:30:360
%畫出人形以及頭形和大圓
line([xp(1),xp(2)],[yp(1),yp(2)],'color','red');
line([xp(5),xp(6)],[yp(5),yp(6)],'color','yellow');
line([xp(6),xp(3)],[yp(6),yp(3)],'color','black');
line([xp(6),xp(4)],[yp(6),yp(4)]);hold on;


x=xp(6)+r*cosd(theta);
y=yp(6)+r*sind(theta);
plot(x,y);


hold on;

xh=xp(7)+rh*cosd(theta);
yh=yp(7)+rh*sind(theta);
plot(xh,yh)

hold on;
%x座標旋轉
xp=Xp*cosd(times)+Yp*sind(times)
%旋轉後在平移,路徑是rθ
xp=xp+(pi*r*times)./180
%y座標旋轉
yp=-Xp*sind(times)+Yp*cosd(times)
%跳出回圈
end;
axis equal;
(2)在我的程式碼中,宣告了r也就是大圓半徑,由我的圖形可見我的身高即為我的直徑,所以你可以輸入(身高/2)當作r。當然,其中我假設腳長即為半徑長,所以只要知道該人個腳長,即可輸入大圓的半徑r。
另外我先設定了腳以及手的角度,所以如果你要更改你的手臂或是腳張開的角度,也可以更改程式碼中的(
%在此標出腳和手以及腳開叉處,圓心,頭圓心的未旋轉時x,y座標
Xp=[r*sind(60),-r*sind(60),-r*sind(45),r*sind(45),0,0,0];
Yp=[r*cosd(60),r*cosd(60),-r*cosd(45),-r*cosd(45),r*cosd(60),0,(r+r*cosd(60))./2]
)部分,

若是改變手的角度,就改變其中60的部分的角度。(包含頭的圓心座標也可以更改了),改變腳的部分則把45的部分改成你預設的值。
當然,這個程式不是真正人體的狀況,所以我們只能粗略的做計算。

1 則留言:

不留白老人 提到...

本報告做得不錯,有幾點請注意:
1.第一題中目的是繪出手臂及手腕的位置,故必須將這兩桿之長度及位置繪出。
2.請將作業一及作業二同時整理在此部落格中。