Google+ 機動學論壇(TALKING MECHANISMS): 作業十二動畫製作分享

2007年6月10日 星期日

作業十二動畫製作分享

我是生機二 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相似動畫了!
結果如下: