2007年4月10日 星期二

hw5

http://www.youtube.com/watch?v=os_zxVlAFyE

5.1.1
L=30;%先設定手臂長度
L1=26;
L2=6;

arm1x=[0 L/3 L/2 2*L/3 L 2*L/3 L/2 L/3 0];%開始定座標描繪出手的形狀
arm1y=[0 L/16 4*L/65 L/16 0 -L/16 -4*L/65 -L/16 0];
arm2x=[0 L1/3 L1/2 2*L1/3 L1 2*L1/3 L1/2 L1/3 0];
arm2y=[0 L1/20 L1/18 L1/20 0 -L1/20 -L1/18 -L1/20 0];
palmx=[0 L2/3 2*L2/3 L2 2*L2/3 L2/3 0];
palmy=[0 L2/17 L2/15 0 -L2/15 -L2/17 0];
axis equalline(arm1x,arm1y);line(arm2x+L,arm2y);%先前把三部份都訂在原點,現在要平移置連結位置(即加上上一部分的長度)
line(palmx+L+L1,palmy);%加上兩隻手臂長度
5.1.2
function body(L,L1,L2,theta1,theta2,theta3)
axis([-40 40 -40 40]);
arm1x=[0 L/3 L/2 2*L/3 L 2*L/3 L/2 L/3 0];%開始定座標描繪出手的形狀(上臂)
arm1y=[0 L/16 4*L/65 L/16 0 -L/16 -4*L/65 -L/16 0];
arm2x=[0 L1/3 L1/2 2*L1/3 L1 2*L1/3 L1/2 L1/3 0];%(下臂)
arm2y=[0 L1/20 L1/18 L1/20 0 -L1/20 -L1/18 -L1/20 0];
palmx=[0 L2/3 2*L2/3 L2 2*L2/3 L2/3 0];%(手掌)
palmy=[0 L2/17 L2/15 0 -L2/15 -L2/17 0];
axis equalline(arm1x,arm1y);
line(arm2x+L,arm2y);
line(palmx+L+L1,palmy);
axis equalAXIS([-60 60 -60 60]);
X1=arm1x*cosd(-theta1)-arm1y*sind(-theta1);%上臂旋轉
Y1=arm1x*sind(-theta1)+arm1y*cosd(-theta1);
line(X1,Y1)
theta2=180+theta1-theta2;
X2=arm2x*cosd(-theta2)-arm2y*sind(-theta2)+X1(5);%下臂旋轉加上平移至接到上臂(括號內
的5是指第五個座標為連接點)
Y2=arm2x*sind(-theta2)+arm2y*cosd(-theta2)+Y1(5);
line(X2,Y2)theta3=180+theta2-theta3;
X3=palmx*cosd(-theta3)-palmy*sind(-theta3)+X2(5);%手掌旋轉後再平移至接到下臂
Y3=palmx*sind(-theta3)+palmy*cosd(-theta3)+Y2(5);
line(X3,Y3)
axis equal
5.1.3
body(35,30,10,90,-45,-30)
5.1.4
L=30;%先設定手臂長度
L1=26;
L2=6;
arm1x=[0 L/3 L/2 2*L/3 L 2*L/3 L/2 L/3 0];%開始定座標描繪出手的形狀
arm1y=[0 L/16 4*L/65 L/16 0 -L/16 -4*L/65 -L/16 0];
arm2x=[0 L1/3 L1/2 2*L1/3 L1 2*L1/3 L1/2 L1/3 0];
arm2y=[0 L1/20 L1/18 L1/20 0 -L1/20 -L1/18 -L1/20 0];
palmx=[0 L2/3 2*L2/3 L2 2*L2/3 L2/3 0];
palmy=[0 L2/17 L2/15 0 -L2/15 -L2/17 0];
axis equalline(arm1x,arm1y);
line(arm2x+L,arm2y);%先前把三部份都訂在原點,現在要平移置連結位置(即加上上一部分的長
度)
line(palmx+L+L1,palmy);%加上兩隻手臂長度
clf
theta1=linspace(-90,-75,10)%從-75度到-90度,共分十等分
theta2=linspace(-45,-35,10)theta3=linspace(-30,-10,10)
for n=1:10;%FOR迴圈跑十次
axis equalAXIS([-60 60 -60 60]);
X1=arm1x*cosd(-theta1(n))-arm1y*sind(-theta1(n));%上臂旋轉
Y1=arm1y*cosd(-theta1(n))+arm1x*sind(-theta1(n));
line(X1,Y1)theta2(n)=180+theta1(n)-theta2(n);
X2=arm2x*cosd(-theta2(n))-arm2y*sind(-theta2(n))+X1(5)%下臂旋轉再平移置上臂接點;
Y2=arm2y*cosd(-theta2(n))+Y1(5)+arm2x*sind(-theta2(n));
line(X2,Y2)theta3(n)=180+theta2(n)-theta3(n);
X3=palmx*cosd(-theta3(n))-palmy*sind(-theta3(n))+X2(5);%手掌旋轉後平移接至下臂
Y3=palmy*cosd(-theta3(n))+Y2(5)+palmx*sind(-theta3(n));
line(X3,Y3)pause(0.35)%停0.35秒再下一個圖
clf %清除螢幕end;

1 則留言:

Martin Foon 提到...

圖應放在各程式之後面,每個程式之內容及相關條件應有說明。你說這個作業有張貼在作業中,但並沒有顯示。希望下次都能夠按時顯示在作業的回應當中,否則照規定不計分。