%所以用thetax角做出一迴圈 %讓theta介於由slider_limit()所求出的兩個極限角中間 %然而不寫在同個for迴圈內,是因為希望B的軌跡可以一直就在圖上 for thetax=theta1:1:theta2%畫出驅動桿B點可走的軌跡
plot(R.*cosd(thetax),R.*sind(thetax),'r-','LineWidth',2) axis ([-2 70 -2 35]); grid on; hold on; end %開始化滑塊運動的動畫,利用做更改後的slider_solve()做動畫 [d,theta3]=slider_solve(theta,R,L,e) pause(0.01); clf end
(2)slider_solve()
function [d,theta3]=slider_solve(theta2,R,L,e,mode) if nargin<5 mode="0;" d2g="pi/180;" theta="theta2*d2g;" cc="(e-R.*sin(theta))./L;">=0 theta3=asin(cc); else theta3=asin(-cc)*pi; end %由課本p 4-37圖4-21可見A B C三點的三角關係 d=L.*cos(theta3)+R.*cos(theta);
% B就是以A點為圓心,轉動theta角 text(0,0,'A') hold on; Bx=R.*cos(theta) By=R.*sin(theta) text(Bx,By,'B'); hold on; plot([0 Bx],[0 By],'b-','LineWidth',2) hold on; plot(Bx,By,'ro'); hold on;
% C就是以B點為圓心,轉動theta3角 %但要記得我們一開始是以A點作為座標平面的原點 %所以別忘了把他加上Bx,By值做平移 %此處Cx其實就等於d,但因d為老師原有的程式,表示滑塊的水平距離,在此不做刪除 Cx=Bx+L.*cos(theta3) Cy=By+L.*sin(theta3) text(Cx,Cy,'C'); plot([Bx Cx],[By Cy],'k-','LineWidth',2) hold on; plot(Cx,Cy,'ro') hold on;