5
我是生機二 b94611040 廖婉婷
關於這次作業十二最後一題
要我們將兩齒輪運轉繪製成動畫
雖然講義上已有move2_gear.m
可直接輸入函數就有動畫產生 : move2_gear(Dpitch,nn1,nn2,phi,omega1)
但我想分享另一個作法
也就是延續前一題繪製兩輪接合情形
改寫老師講義上的draw_gear函式做成動畫
以下為函式內容(附說明):
function [coords]=move_gears(Dp,N,phi,range,x0,y0,k) %Input:
%Dp= 節徑 %N= 齒輪數 %phi= 壓力角 %range= 繪製範圍 %x0,y0= 齒輪中心座標%新增變數k= 齒輪的起始繪製角度 [coord,theta,rp,rb]=tooth(Dp,N,phi); coords=[]; range2 = range+k; %因起始角度增加,range也要跟著往後移 %不然會出現在360度內齒數越來越少之情況 while k<range2 coord1=rotate2D(coord,k,x0,y0);%如果將k改為-k;旋轉方向會相反 coords=[coords;coord1]; k=k+theta; end plot(coords(:,1),coords(:,2));hold on; [coord]=bushing(rp/8,x0,y0); plot(coord(:,1),coord(:,2),'b-'); [coord]=bushing(-rp,x0,y0); plot(coord(:,1),coord(:,2),'r:'); [coord]=bushing(-rb,x0,y0); plot(coord(:,1),coord(:,2),'b:'); axis equal;
接著以move_two_gears函式呼叫 以繪製兩個齒輪 function A=move_two_gears(Dp,n2,n3,phi,k) %Inputs: %Pd= 徑節; %N1,N2= 兩輪齒數; %phi= 壓力角(deg); %新增函數k= 起始繪製角度; [coords]=move_gears(Dp,n2,phi,360,0,0,1.6*k);%第一個齒輪設定中心在(0,0) [c_ratio,c_length,ad,pc,pb,r2,r3,d2,d3,ag]=contact_ratio(Dp,n2,n3,phi);%這一行是為了取出d2和d3兩個節圓直徑 x=d2/2+d3/2;%兩齒輪節圓半徑合 為了作為第二個齒輪的中心座標 [coords2]=move_gears(Dp,n3,phi,360,x,-0,360/n3/2-k); %第二個齒輪設定中心在(x,0) %並且旋轉一起始角度(半個齒的角度)使得兩齒輪能契合 %需留意此處起始角度加上一負號 %因此兩輪才會是反向旋轉
執行程式: for k = 0 : 360;%以迴圈改變繪製起始角度以達動畫效果 title('b94611040-模擬兩齒輪運轉動畫') %標註 pause(0.08) %畫面停留時間 clf; %清除畫面 move_two_gears(8,30,48,20,k) end;
重點在新增一輸入函數k做為齒輪繪製起點角度
如此,就可以得到跟講義move2_gear.m相似動畫了!
結果如下:
Read more!