2007年4月11日 星期三

第五次作業

5.1L1=20;L2=15;L3=7;theta1=0;theta2=180;theta3=270;L=L3+5;cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;axis equal;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);arm1=line(rox1,roy1);
%arm2;xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
arm2=line(hx2,hy2);
%palm;L=L3+4;xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn3=2*cosd(cir5);yn3=2*sind(cir5);
xfinger=[-4 -2 -2 -0.5 0 0.5 2 2 3];yfinger=[-4*L/7 -3*L/7 -6*L/7 -4*L/7 -L -4*L/7 -6*L/7 -4*L/7 -5*L/7];
finalx3=[xn1 xfinger xn3];finaly3=[yn1 yfinger yn3];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;palm=line(hx3,hy3);

5.2function bady(L1,L2,L3,theta1,theta2,theta3)
axis equal;L=L3+5;cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);line(rox1,roy1);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);
%palm(L3);
xn1=2*cosd(cir1);yn1=2*sind(cir1);

xn3=2*cosd(cir5);yn3=2*sind(cir5);
xfinger=[-4 -2 -2 -0.5 0 0.5 2 2 3];yfinger=[-4*L/7 -3*L/7 -6*L/7 -4*L/7 -L -4*L/7 -6*L/7 -4*L/7 -5*L/7];
finalx3=[xn1 xfinger xn3];finaly3=[yn1 yfinger yn3];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);
5.3
bady(30,30,7,90,-45,-30 )
5.4for n=0:10; clf; bady(30,30,7,-90+1.5*n,-45+1*n,-30+2*n); pause(0.2);end
5.2.1function finger(L1,L2,L3,theta1,theta2,theta3)
axis equal;
cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];
rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);line(rox1,roy1);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);
%palm(L3);
xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn2=3*cosd(cir2);yn2=3*sind(cir2);
xn3=2*cosd(cir3)+L2;yn3=2*sind(cir3);
xn4=2*cosd(cir4)+L2;yn4=2*sind(cir4);
xn5=2*cosd(cir5)+L2;yn5=2*sind(cir5);
xn6=3*cosd(cir6);yn6=3*sind(cir6);
mmm=L2/2*tand(10);xna=L2/2;yna=-mmm-5;
xnb=L2/2;ynb=mmm+5;
finalx3=[xn1 xn2 xna xn3 xn4 xn5 xnb xn6];finaly3=[yn1 yn2 yna yn3 yn4 yn5 ynb yn6];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);
主程式:finger(10,10,7,0,210,200);
5.2.2finger(10,10,7,0,180,180);finger(10,10,7,90,90,90);
5.2.3function finger2(L1,L2,L3,theta1,theta2,theta3,w1,w2,w3)
axis equal;
cir1=0:540;cir2=180:270;cir3=270:360;cir4=0:360;cir5=0:90;cir6=90:180;
%arm(L1);x1=2*cosd(cir1);y1=2*sind(cir1);
x2=5*cosd(cir2);y2=5*sind(cir2);
x3=5*cosd(cir3)+L1;y3=5*sind(cir3);
x4=2*cosd(cir4)+L1;y4=2*sind(cir4);
x5=5*cosd(cir5)+L1;y5=5*sind(cir5);
x6=5*cosd(cir6);y6=5*sind(cir6);
m=(L1)/2*tand(10);xa=L1/2;ya=-m-5;
xb=L1/2;yb=m+5;
v1=L1*w1;aa1=L1*w1*w1;finalx1=[x1 x2 xa x3 x4 x5 xb x6];
finaly1=[y1 y2 ya y3 y4 y5 yb y6];vx1=L1;vy1=0+v1;rovx1=vx1*cosd(-theta1)-vy1*sind(-theta1);rovy1=vx1*sind(-theta1)+vy1*cosd(-theta1);ax1=L1-aa1;ay1=0;roax1=ax1*cosd(-theta1)-ay1*sind(-theta1);roay1=ax1*sind(-theta1)+ay1*cosd(-theta1);rox1=finalx1*cosd(-theta1)-finaly1*sind(-theta1);roy1=finalx1*sind(-theta1)+finaly1*cosd(-theta1);a1=L1*cosd(-theta1)-0*sind(-theta1);b1=L1*sind(-theta1)+0*cosd(-theta1);
line(rox1,roy1);line([a1 rovx1],[b1 rovy1]);line([a1 roax1],[b1 roay1]);
%arm2(L2);
xm1=2*cosd(cir1);ym1=2*sind(cir1);
xm2=5*cosd(cir2);ym2=5*sind(cir2);
xm3=3*cosd(cir3)+L2;ym3=3*sind(cir3);
xm4=2*cosd(cir4)+L2;ym4=2*sind(cir4);
xm5=3*cosd(cir5)+L2;ym5=3*sind(cir5);
xm6=5*cosd(cir6);ym6=5*sind(cir6);
mm=L2/2*tand(10);xma=L2/2;yma=-mm-5;
xmb=L2/2;ymb=mm+5;
v2=L2*w2;aa2=L2*w2*w2;
vx2=L2;vy2=0+v2;rovx2=vx2*cosd(180-theta1+theta2)-vy2*sind(180-theta1+theta2);rovy2=vx2*sind(180-theta1+theta2)+vy2*cosd(180-theta1+theta2);ax2=L2-aa2;ay2=0;roax2=ax2*cosd(180-theta1+theta2)-ay2*sind(180-theta1+theta2);roay2=ax2*sind(180-theta1+theta2)+ay2*cosd(180-theta1+theta2);
finalx2=[xm1 xm2 xma xm3 xm4 xm5 xmb xm6];finaly2=[ym1 ym2 yma ym3 ym4 ym5 ymb ym6];rox2=finalx2*cosd(180-theta1+theta2)-finaly2*sind(180-theta1+theta2);roy2=finalx2*sind(180-theta1+theta2)+finaly2*cosd(180-theta1+theta2);a2=L2*cosd(180-theta1+theta2)-0*sind(180-theta1+theta2);b2=L2*sind(180-theta1+theta2)+0*cosd(180-theta1+theta2);hx2=rox2+a1;hy2=roy2+b1;
line(hx2,hy2);line([a2 rovx2],[b2 rovy2]);line([a2 roax2],[b2 roay2]);
%arm3;
xn1=2*cosd(cir1);yn1=2*sind(cir1);
xn2=3*cosd(cir2);yn2=3*sind(cir2);
xn3=2*cosd(cir3)+L2;yn3=2*sind(cir3);
xn4=2*cosd(cir4)+L2;yn4=2*sind(cir4);
xn5=2*cosd(cir5)+L2;yn5=2*sind(cir5);
xn6=3*cosd(cir6);yn6=3*sind(cir6);
mmm=L3/2*tand(10);xna=L3/2;yna=-mmm-5;
xnb=L3/2;ynb=mmm+5;
v3=L3*w3;aa3=L3*w3*w3;vx3=L3;vy3=0+v3;rovx3=vx3*cosd(360-theta1+theta2+theta3)-vy3*sind(360-theta1+theta2+theta3);rovy3=vx3*sind(360-theta1+theta2+theta3)+vy3*cosd(360-theta1+theta2+theta3);ax3=L3-aa3;ay3=0;roax3=ax3*cosd(180-theta1+theta2)-ay3*sind(180-theta1+theta2);roay3=ax3*sind(180-theta1+theta2)+ay3*cosd(180-theta1+theta2);
finalx3=[xn1 xn2 xna xn3 xn4 xn5 xnb xn6];finaly3=[yn1 yn2 yna yn3 yn4 yn5 ynb yn6];rox3=finalx3*cosd(360-theta1+theta2+theta3)-finaly3*sind(360-theta1+theta2+theta3);roy3=finalx3*sind(360-theta1+theta2+theta3)+finaly3*cosd(360-theta1+theta2+theta3);a3=L3*cosd(360-theta1+theta2+theta3)-0*sind(360-theta1+theta2+theta3);b3=L3*sind(360-theta1+theta2+theta3)+0*cosd(360-theta1+theta2+theta3);
hx3=rox3+a1+a2;hy3=roy3+b1+b2;line(hx3,hy3);line([a3 rovx3],[b3 rovy3]);line([a3 roax3],[b3 roay3]);
主程式:finger2(10,10,10,90,90,90,4,4,4);

2 則留言:

不留白老人 提到...

程式這麼長,你執行過嗎?

昶志 提到...

有的
執行出來就是下面的那些圖
不過這一篇其實是有多個程式
只是沒排版好
所以看起來像一個程式
是我的疏忽