2007年4月12日 星期四

作業五


B94611008 生機二 徐嘉鴻

5.1.1
axis equal
L1=30; %上手臂長度
R1=L1*2/9;
arm1X=[0.5*cosd(0:5:180),R1*cosd(180:-5:50), 1.75*R1+1.75*R1*cosd(100:-5:-100),R1*cosd(-50:-5:-180),0.5*cosd(-180:5:0),3*R1+0.5*cosd(180:-5:0),3.5*R1,3*R1+0.5*cosd(0:-5:-180)];
arm1Y=[0.5*sind(0:5:180),R1*sind(180:-5:50), 0+0.88*R1*sind(100:-5:-100),R1*sind(-50:-5:-180),0.5*sind(-180:5:0), 0+0.5*sind(180:-5:0), 0 , 0+0.5*sind(0:-5:-180)];
arm1=line(arm1X,arm1Y);
L2=30; %下手臂長度
R2=L2/5.7;
arm2X=[0.5*cosd(0:5:180),R2*cosd(180:-5:90),4*R2+0.7*R2*cosd(90:-5:-90),R2*cosd(-90:-5:-180),0.5*cosd(-180:5:0),4.5*R2+0.5*cosd(180:-5:0),4.7*R2,4.5*R2+0.5*cosd(0:-5:-180)];
arm2Y=[0.5*sind(0:5:180),R2*sind(180:-5:90), 0+0.7*R2*sind(90:-5:-90),R2*sind(-90:-5:-180),0.5*sind(-180:5:0), 0+0.5*sind(180:-5:0), 0 , 0+0.5*sind(0:-5:-180)];
arm2X=arm2X+3*R1; %平移下手臂位置
arm2=line(arm2X,arm2Y);
L3=20; %手掌長度
R3=L3/2;
palmX=[0.5*cosd(-180:5:180),0.8*R3+ R3*cosd(180:-5:90), R3+0.1*R3*cosd(90:-5:-90), R3+0.4*R3*cosd(90:-5:0),R3+0.4*R3*cosd(0:-5:-90),0.8*R3+ R3*cosd(-90:-5:-180)];
palmY=[0.5*sind(-180:5:180), 0+0.5*R3*sind(180:-5:90),0.4*R3+0.1*R3*sind(90:-5:-90), 0.3*R3*sind(90:-5:0), 0.5*R3*sind(0:-5:-90), 0.5*R3*sind(-90:-5:-180)];
palmX=palmX+3*R1+4.5*R2; %平移手掌位置
palm=line(palmX,palmY);

5.1.2
function body(L1,L2,L3,theta1,theta2,theta3)
axis equal
limit=L1+L2+L3;
axis ([-limit limit -limit limit])
theta1=-theta1;
%利用L1繪製上手臂
R1=L1*2/9;
arm1X=[0.5*cosd(0:5:180),R1*cosd(180:-5:50), 1.75*R1+1.75*R1*cosd(100:-5:-100),R1*cosd(-50:-5:-180),0.5*cosd(-180:5:0),3*R1+0.5*cosd(180:-5:0),3.5*R1,3*R1+0.5*cosd(0:-5:-180)];
arm1Y=[0.5*sind(0:5:180),R1*sind(180:-5:50), 0+0.88*R1*sind(100:-5:-100),R1*sind(-50:-5:-180),0.5*sind(-180:5:0), 0+0.5*sind(180:-5:0), 0 , 0+0.5*sind(0:-5:-180)];
arm1=line(arm1X,arm1Y);
%旋轉上手臂與X軸夾theta1角
rotate(arm1,[0 0 1],theta1,[0 0 0]);
%利用L2繪製下手臂
R2=L2/5.7;
arm2X=[0.5*cosd(0:5:180),R2*cosd(180:-5:90),4*R2+0.7*R2*cosd(90:-5:-90),R2*cosd(-90:-5:-180),0.5*cosd(-180:5:0),4.5*R2+0.5*cosd(180:-5:0),4.7*R2,4.5*R2+0.5*cosd(0:-5:-180)];
arm2Y=[0.5*sind(0:5:180),R2*sind(180:-5:90), 0+0.7*R2*sind(90:-5:-90),R2*sind(-90:-5:-180),0.5*sind(-180:5:0), 0+0.5*sind(180:-5:0), 0 , 0+0.5*sind(0:-5:-180)];
%平移下手臂位置
arm2X=arm2X+3*R1*cosd(theta1);
arm2Y=arm2Y+3*R1*sind(theta1);
%旋轉下手臂與上手臂夾theta2角 由於我的初始設定上手臂與下手臂是夾180度角 所以必須修正
arm2=line(arm2X,arm2Y);
rotate(arm2,[0 0 1],theta1+theta2-180,[3*R1*cosd(theta1),3*R1*sind(theta1),0])
%利用L3繪製手掌
R3=L3/2;
palmX=[0.5*cosd(-180:5:180),0.8*R3+ R3*cosd(180:-5:90), R3+0.1*R3*cosd(90:-5:-90), R3+0.4*R3*cosd(90:-5:0),R3+0.4*R3*cosd(0:-5:-90),0.8*R3+ R3*cosd(-90:-5:-180)];
palmY=[0.5*sind(-180:5:180), 0+0.5*R3*sind(180:-5:90),0.4*R3+0.1*R3*sind(90:-5:-90), 0.3*R3*sind(90:-5:0), 0.5*R3*sind(0:-5:-90), 0.5*R3*sind(-90:-5:-180)];
%平移手掌位置
palmX=palmX+3*R1*cosd(theta1)+4.5*R2*cosd(theta1+theta2-180);
palmY=palmY+3*R1*sind(theta1)+4.5*R2*sind(theta1+theta2-180);
%旋轉手掌與下手臂夾theta3角 由於我的初始設定手掌與下手臂是夾180度角 所以必須修正
palm=line(palmX,palmY);
rotate(palm,[0 0 1],theta1+theta2+theta3-360,[3*R1*cosd(theta1)+4.5*R2*cosd(theta1+theta2-180),3*R1*sind(theta1)+4.5*R2*sind(theta1+theta2-180),0])

5.1.3
body(29,28,20,90,-45,-30)

5.1.4
clf
pause(3);
L1=29; L2=28; L3=20;
theta2=-45;
theta3=-30;
for theta1=-90:1.5:-75
theta2=theta2+1;
theta3=theta3+2;
clf
body(29,28,20,theta1,theta2,theta3);
pause(0.5);
end




5.2.1
手指 共有三節
以手掌為基座
所以共有三個連結點 4個連桿
總自由度為3

5.2.2

axis equal;
palmL=19; %手掌長度
L1=palmL*2.5/19; %指節長度
L2=palmL*2.8/19;
L3=palmL*5.5/19;
R1=L1*0.86/2.5; %指節寬度的一半
R2=L2*0.88/2.8;
R3=L3*0.9/5.5;

f1X=[0.05*cosd(270:-5:-90),R3*cosd(270:-5:180), R2*cosd(180:-5:0),R3*cosd(0:-5:-90)];
f1Y=[0.05*sind(270:-5:-90),R3*sind(270:-5:180),L3-R2+R2*sind(180:-5:0),R3*sind(0:-5:-90)];
line(f1X,f1Y);%第一節的向上極限
f1=line(f1X,f1Y,'color','r');
rotate(f1,[0 0 1],-90,[0 0 0])%第一節的旋轉極限


f2X=[0.05*cosd(270:-5:-90),R2*cosd(270:-5:180), R1*cosd(180:-5:0),R2*cosd(0:-5:-90)];
f2Y=[0.05*sind(270:-5:-90),R2*sind(270:-5:180),L2-R1+R1*sind(180:-5:0),R2*sind(0:-5:-90)];

f2YY=f2Y+L3-R2;%第二節的向上極限
line(f2X,f2YY);

f2X=f2X+(L3-R2)*cosd(90-90);%第二節的旋轉極限 先處理平移再處理轉動
f2Y=f2Y+(L3-R2)*sind(90-90);
f2=line(f2X,f2Y,'color','r');
rotate(f2,[0 0 1],-210,[L3-R2 0 0])

f3X=[0.05*cosd(270:-5:-90),R1*cosd(270:-5:180), R1*cosd(180:-5:150), 0 , R1*cosd(90:-5:0),R1*cosd(0:-5:-90)];
f3Y=[0.05*sind(270:-5:-90),R1*sind(270:-5:180),L1+R1*sind(180:-5:150),L1+R1,L1+R1*sind(90:-5:0),R1*sind(0:-5:-90)];

f3YY=f3Y+L3+L2-R1-R2;%第三節的向上極限
line(f3X,f3YY);

f3X=f3X+(L3-R2)*cosd(90-90)+(L2-R1)*cosd(-120);%第三節的旋轉極限 先處理平移再處理轉動
f3Y=f3Y+(L3-R2)*sind(90-90)+(L2-R1)*sind(-120);
f3=line(f3X,f3Y,'color','r');
rotate(f3,[0 0 1],80,[(L3-R2)*cosd(90-90)+(L2-R1)*cosd(-120) (L3-R2)*sind(90-90)+(L2-R1)*sind(-120) 0])

5.2.3
投手投球的時候,其實是運用全身的協調性才能使得球又快又有尾勁.
但是在手部的動作,假設就投直球來說,手指就是從扣住球到放開,在這
段時間之內,又假設為等加速度展開手掌,所以手指只有造成旋轉的法
線加速度.
end

1 則留言:

不留白老人 提到...

手臂若能由伸直慢慢移動到敬禮的姿勢會更好,希望你能再做一個這樣的動畫,你的手臂一線畫尚稱不錯,頗傳神的。手掌部位的動作著墨較少