一談到分析的題目,有些同學常會慌了手腳,不知如何下手。但是解決工程上的問題,並不是意氣用事,而是有步驟的。這次作業的結果,可以看出大部份的同學都是在最後一刻找答案,抄答案。也沒花時間事前思考,更遑論分析。到底是基礎不足或者學習上有障礙,實在很難完全瞭解。
在第一題目中,主要針對人體工學的問題作討論,並設法應用於機動學上之觀念。當人手在一平面上移動時,實際上已經將問題簡化許多,因此不必考慮到三維之動作問題。當然為使問題簡化,仍然必須有些假設,使解題的步驟清晰。這些假設包括:
- 拳頭僅當做一點,因此成為手腕或下手臂A的一部份。
- 上手臂之轉動實際上與中心線仍有一段距離。此處假設上手臂之長度L係自心臟部位算起。
- 頭的高度H因此也需由心臟部位算起。
- 當伸直時,實際上手臂可能無法完全伸直。為簡化起見,其伸直之位置不考慮頭部的阻礙。
整個手臂的動作如上圖,實際上類似一個滑塊的動作。其動作來源仍然為上手臂L。由於拳頭的動作由頭部開始。故上下手臂與頭部高度H所構成之三角形或角度θo為限制點,因此若以上手臂之角度θ表示任意位置之角度時,其值應在θo<θ<π/2之間,而θo應為
cos(θo)=[H^2+L^2-A^2]/(2HL)
設兩手臂交點為P,則其座標應為:
x1=Lcosθ
y1=Lsinθ
其在頭頂上之點Q之座標為:
x2= 0
y1=y1+ sqrt(A^2-(Lcosθ)^2)
因此繪線時,只需將原點O與PQ等三點連線即可構成手臂的位置。其程式內容如下:
function [theta]=fistheight(L,A,H)
% Variables:
% L:length of upper arm, cm
% A:length of lower arm, cm
% H:head height, cm
% theta:initial angle, degrees
% Example [theta]=fistheight(30,25,30)
clf;
th=pi/2-acos((H*H+L*L-A*A)/(2*H*L));% Initial angle
theta=th*180/pi;
t=linspace(th,pi/2,10);
for i=1:length(t),
x1=L*cos(t(i));y1=L*sin(t(i));
line([0 x1 0],[0 y1 y1+sqrt(A*A-x1*x1)]);
end
line([L 0 0],[0 0 L+A],'color','r','linewidth',3);%繪座標
line(L*cos(t),L*sin(t),'linestyle',':');%繪P點軌跡圓
axis equal;
xlabel('X-Axis')
ylabel('Y-Axis')
角度θ在θo與π/2之間,係利用linspace指令將其分成十個區段。執行下列指令後,其結果如下圖:
>> t=fistheight(30,30,25) %設L=30cm,A=30cm,H=25cm
t =
24.6243
Read more!