




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Matlab實現(xiàn)振動彈簧的實時動畫摘要:Matlab是當前應用最廣泛的科學與工程計算軟件之一,本次課設將Matlab引入到圖形學動畫設計.本次課設主要可分為兩大步驟:一、應用Matlab對彈簧振子進行建模;二、應用Matlab實現(xiàn)彈簧振動的實時動畫。其中建模部分包括對天花板的建模、對連接直線的建模、對彈簧的建模、對振動小球的建模。模擬彈簧振動的過程主要包括:更新小球和彈簧的位置。 更新水平線的位置和長度。實時地畫出彈簧高度與時間的關系曲線。 關鍵字:Matlab, 振動彈簧,建模,實時動畫 1 / 26目錄1 緒論 . 1 1.1 matlab基本功能介紹 . 1 1.2 matlab的動畫制
2、作 . 22 振動彈簧的實時動畫 . 42.1 程序功能分析. 4 2.2 彈簧振子的matlab建模 . 6 2.2.1 天花板的建模 . 72.2.2直線的建模 . 82.2.3彈簧的建模 . 92.2.4球的建模 . 102.2.5 利用set函數返回句柄值改變來當前坐標軸 . 112.3 彈簧振動的實時動畫. 13 2.3.1彈簧振子簡諧振動的物理模型 . 132.3.2 利用matlab實現(xiàn)彈簧的實時振動. 142.4 調試結果. 193 設計總結 . 23參考文獻 . 24 致謝 . 25 附錄-彈簧阻尼振動程序 . 26 2.1 程序功能分析以下是利用matlab實現(xiàn)振動彈簧的事
3、實動畫的程序。rectangle('position',12,8.5,2,0.3,'FaceColor',0.5,0.3,0.4); axis(0,15,-1,10); %畫頂板 hold on plot(13,13,7,8.5,'r','linewidth',2); %畫直線 y=2:.2:7; M=length(y); x=12+mod(1:M,2)*2; x(1)=13; x(end-3:end)=13; D=plot(x,y); %彈簧 C=0:.1:2*pi;r=0.35; t1=r*sin(C); F1=fill(13
4、+r*cos(C),2+t1,'r'); % 球 set(gca,'ytick',0:2:9); set(gca,'yticklabels',num2str(-1:3'); plot(0,15,3.3,3.3,'black'); H1=plot(0,13,3.3,3.3,'y'); % 句柄黃線 Q=plot(0,3.8,'color','r'); % 運動曲線; td=;yd=; T=0; 5text(2,9,'理想中的彈簧振子簡諧振動','font
5、size',16); set(gcf,'doublebuffer','on'); while T<12; pause(0.2); Dy=(3/2-1/2*sin(pi*T)*1/2; Y=-(y-2)*Dy+7; Yf=Y(end)+t1; td=td,T;yd=yd,Y(end); set(D,'ydata',Y); set(F1,'ydata',Yf,'facecolor',rand(1,3); set(H1,'xdata',T,13,'ydata',Y(end),
6、Y(end); set(Q,'xdata',td,'ydata',yd) ; T=T+0.1; end 程序功能介紹:模擬彈簧振子簡諧運動的過程,同時畫出相應圓球質心隨時間變化的曲線。 上面的程序為模擬彈簧振子的簡諧振動,若要模擬彈簧阻尼振動過程的程序,可見附錄。 2.2 彈簧振子的matlab建模圖2-1 彈簧振子建模圖上圖所示的圖形即為在matlab環(huán)境下的彈簧振子的建模圖形。 實現(xiàn)程序為: rectangle('position',12,8.5,2,0.3,'FaceColor',0.5,0.3,0.4); axis(0,1
7、5,-1,10); %畫頂板 hold on plot(13,13,7,8.5,'r','linewidth',2); %畫直線 y=2:.2:7; M=length(y); x=12+mod(1:M,2)*2; x(1)=13; x(end-3:end)=13; D=plot(x,y); %彈簧 C=0:.1:2*pi;r=0.35; t1=r*sin(C); F1=fill(13+r*cos(C),2+t1,'r'); % 球 set(gca,'ytick',0:2:9); set(gca,'yticklabels
8、39;,num2str(-1:3'); plot(0,15,3.3,3.3,'black'); 下面分步介紹它的建模過程。 2.2.1 天花板的建模2-2 天花板建模圖如上圖所示,為在matlab環(huán)境下天花板的建模圖形。 實現(xiàn)程序為:rectangle('position',12,8.5,2,0.3,'FaceColor',0.5,0.3,0.4); 程序功能介紹:rectangle的功能就是畫一個矩形,12,8.5為矩形的一個點,他的長和寬分別為2、0.3。'FaceColor',0.5,0.3,0.4是用來設置它的顏色
9、的。 2.2.2直線的建模2-3 直線的建模圖如上圖所示,為在matlab下的直線建模圖形。 實現(xiàn)程序為: plot(13,13,7,8.5,'r','linewidth',2) 程序功能介紹:plot是一個常用的畫圖函數,13,13,7,8.5確定的直線的位置,'r'設置直線顏色為紅色。linewidth',2,直線的粗細設置。 2.2.3彈簧的建模2-4 彈簧的建模圖 如上圖所示,為在matlab環(huán)境下彈簧的建模圖形。 實現(xiàn)程序為:y=2:.2:7; M=length(y); x=12+mod(1:M,2)*2; x(1)=13; x
10、(end-3:end)=13; D=plot(x,y); 程序功能介紹:y=2:.2:7,2到7之間0.2為步長生成向量。M=length(y),M=y向量的長度。length為求向量長度的函數。M=26。x=12+mod(1:M,2)*2,生成14 12這樣的重復數據26個。 mod(x,y)為x模除y。mod(1:26,2) ans=1 0 1 0等26個。x(1)=13,令初始值為13。 x(end-3:end)=13,令最后4個數為13。D=plot(x,y),畫出該圖。 Plot函數介紹:plot(X,Y) 繪制所有由Xn和Yn數據對定義的曲線。如果僅Xn或者僅Yn是一個矩陣,plo
11、t函數繪制向量對矩陣的行或者列的曲線圖,取決于是向量的行還是列的尺寸與矩陣相匹配。 2.2.4球的建模2-5 球的建模圖 如上圖所示,為在matlab環(huán)境下球的建模圖形。 實現(xiàn)程序為: C=0:.1:2*pi;r=0.35; t1=r*sin(C); F1=fill(13+r*cos(C),2+t1,'r'); 程序功能介紹:C=0:.1:2*pi;r=0.35,0到2之間0.1步長生成向量,r=0.35. t1=r*sin(C),返回r乘以C中每個元素的正弦值的值。F1=fill(13+r*cos(C),2+t1,'r'),畫出多邊形小球。Fill函數介紹;函
12、數fill用于創(chuàng)建彩色的多邊形。格式; fill(X,Y,C) 從X和Y中的數據出發(fā)創(chuàng)建填充的多邊形,頂點顏色為C。C十一哥向量或者矩陣,它是指向色圖的指標。如果C是一個行向量,則length(C)必須等于size(X,2)和size(Y,2);如果C是一個列向量,則length(C)必須等于size(X, 1)和size(Y,1)。如果有必要,fill將通過最后一個頂點與第一個頂點連接來封閉多邊形。 2.2.5 利用set函數返回當前坐標軸 通過上幾步的建模我們可以得到如下所示的圖形2-6 未重新設置軸建模圖 為下一步實時動畫做好準備我們需要重新設定一下坐標。在matlab中可以利用set函
13、數返回句柄值改變來當前坐標軸。得到如下所示的圖形。 2-7 設置后建模圖 2-8 初步設置軸的建模圖 實現(xiàn)程序為: set(gca,'ytick',0:2:9); set(gca,'yticklabels',num2str(-1:3'); plot(0,15,3.3,3.3,'black'); 程序功能介紹:gca未返回當前axes對象的句柄值,ytick為控制Y軸坐標刻度記號的位置,即控制坐標軸上刻度記號的位置以及每隔多少值會到下一個刻度記號的位置,同時還需配合yticklabel屬性來調整。set(gca,'ytick'
14、;,0:2:9);將坐標軸從0開始以2為間隔到9設置Y坐標。而下一句程序set(gca,'yticklabels',num2str(-1:3')就是通過yticklabel來改變Y軸屬性,即由0、2、4、6、8變?yōu)?1、0、1、2、3。上面是對Y軸的設置。對平衡位置軸的設置為:plot(0,15,3.3,3.3,'black'),plot為畫直線的常用函數0,15,3.3,3.3定義了平衡位置軸的位置。'black',定義平衡位置軸的顏色為黑。 2.3 彈簧振動的實時動畫2.3.1彈簧振子簡諧振動的物理模型彈簧振子簡諧振動的物理模型彈簧振
15、子簡諧振動的物理模型彈簧振子簡諧振動的物理模型 圖2-9 彈簧振子的簡諧振動 現(xiàn)在我們來定量地分析上圖所示的彈簧振子的小振幅自由振動。 設彈簧的勁度系數為k,小球的質量為m,忽略各種阻力,取平衡位置O為坐標原點,x坐標軸指向右為正。小球位置坐標為x時,所受彈性回復力Fx可表示為 : Fx=-kx (1.1) 根據牛頓定律,小球的M的運動微分方程為:mxkx?=? 通常將上式改寫成 20xx?+= (1.2) 其中2/km= (1.3) 微分方程(1.2)的通解為 cos()xAt=+ (1.4) 14式(1.4)就是小球M的運動學方程。式中A和是兩個積分常數,他們的物理意義和確定方法將在后面討
16、論。將式(1.4)對時間求一階和二階導數,得到小球運動速度和加速度 sin()vxAt=?+ (1.5) 2cos()axAt?=?+ (1.6) 因cos()sin(/2)tt+=+,故令'/2=+,則解(1.4)還可以寫成 'sin()xAt=+ (1.7) 即微分方程(1.4)的解即可寫成遇險函數的形式,也可以寫成正弦函數形式。 從解(1.4)看出,彈簧振子運動時,坐標x(即相對平衡未知的位移)按余弦(或正弦)函數規(guī)律隨時間變化。因此,只在線性彈性回復力作用下的彈簧振子運動是諧振動。式(1.5)、(1.6)表明,作諧振動物體的速度和加速度也是按余弦或正弦函數規(guī)律隨時間變化
17、的。見下圖,從式(1.2)看出,作諧振動物體的加速度大小總是與其位移大小成正比,二者符號相反,這一結論被視為諧振動的運動學特征。 圖2-10 簡諧運動曲線 2.3.2 利用利用利用利用matlab實現(xiàn)彈簧的實時振動實現(xiàn)彈簧的實時振動實現(xiàn)彈簧的實時振動實現(xiàn)彈簧的實時振動 由2.3.1節(jié)可知彈簧振動是的變化主要表現(xiàn)在彈簧和小球的位置隨時間的變化,而且小球的位移是按正弦規(guī)律變化的。據此我們先設計一個算法?,F(xiàn)用流程圖表示如下: 15 圖2-11 流程圖 Matlab是通過以下程序實現(xiàn)彈簧振動的實時動畫的: rectangle('position',12,8.5,2,0.3,'F
18、aceColor',0.5,0.3,0.4); axis(0,15,-1,10); %畫頂板 hold on plot(13,13,7,8.5,'r','linewidth',2); %畫直線 y=2:.2:7; M=length(y); x=12+mod(1:M,2)*2; x(1)=13; 16x(end-3:end)=13; D=plot(x,y); %彈簧 C=0:.1:2*pi;r=0.35; t1=r*sin(C); F1=fill(13+r*cos(C),2+t1,'r'); % 球 set(gca,'ytick
19、39;,0:2:9); set(gca,'yticklabels',num2str(-1:3'); plot(0,15,3.3,3.3,'black'); H1=plot(0,13,3.3,3.3,'y'); % 句柄黃線 Q=plot(0,3.8,'color','r'); % 運動曲線; td=;yd =; T=0; text(2,9,'理想中的彈簧振子簡諧振動','fontsize',16); set(gcf,'doublebuffer','on
20、'); while T<12; pause(0.2); Dy=(3/2-1/2*sin(pi*T)*1/2; Y=-(y-2)*Dy+7; Yf=Y(end)+t1; td=td,T;yd=yd,Y(end); set(D,'ydata',Y); set(F1,'ydata',Yf,'facecolor',rand(1,3); set(H1,'xdata',T,13,'ydata',Y(end),Y(end); set(Q,'xdata',td,'ydata',yd)
21、; T=T+0.1; End 該程序的建模部分已經在前面介紹過了,現(xiàn)介紹實現(xiàn)振動的部分。 17在此之前先做一些準備工作。即為以下程序段: H1=plot(0,13,3.3,3.3,'y'); % 句柄黃線 Q=plot(0,3.8,'color','r'); % 運動曲線; td=;yd =; T=0; text(2,9,'理想中的彈簧振子簡諧振動','fontsize',16); set(gcf,'doublebuffer','on'); 程序功能介紹:H1=plot(0,13,3
22、.3,3.3,'y'),畫句柄線。位置為0,13,3.3,3.3,顏色為黃色。td=;記錄時間的變量,yd =,記錄y軸位置的變量。T=0; 設置初始時的時間值。text(2,9,'理想中的彈簧振子簡諧振動','fontsize',16); 添加標注文字。位置為(2,9),標注為理想中的彈簧振子簡諧振動字符串大小為16號字體。set(gcf,'doublebuffer','on');啟動雙緩存,設置渲染效果。 通過上面的可得到如下圖所示的界面。 18 圖2-12 彈簧振子振動前的圖形 模擬彈簧振子簡諧振動的過程包括
23、以下內容: 更新小球和彈簧的位置。 更新水平線的位置和長度。 實時地畫出彈簧高度與時間的關系曲線。 以上幾點將在下面程序介紹中解釋。 該彈簧振子的振動是通過一個while循環(huán)語句來實現(xiàn)的。程序語句為: while T<12; pause(0.2); Dy=(3/2-1/2*sin(pi*T)*1/2; 19 Y=-(y-2)*Dy+7; Yf=Y(end)+t1; td=td,T;yd=yd,Y(end); set(D,'ydata',Y); set(F1,'ydata',Yf,'facecolor',rand(1,3); set(H1,&
24、#39;xdata',T,13,'ydata',Y(end),Y(end); set(Q,'xdata',td,'ydata',yd) ; T=T+0.1; End 程序功能介紹:pause(0.2); 暫停一下,顯示動畫效果。Dy=(3/2-1/2*sin(pi*T)*1/2; 計算T時刻彈簧對平衡位置的位移。Y=-(y-2)*Dy+7;計算彈簧的縱坐標數值。Yf=Y(end)+t1; 計算圓球的縱坐標數值。td=td,T;yd=yd,Y(end); 更新運動曲線的數據。set(D,'ydata',Y); 更新彈簧的位置
25、數據。set(F1,'ydata',Yf,'facecolor',rand(1,3) ,更新圓球的位置數據。rand(m,n)函數是返回一個m*n的隨機矩陣,這里用來改變小球的顏色。set(H1,'xdata',T,13,'ydata',Y(end),Y(end),更新跟蹤黃線的數據。這里句柄黃線的主要作用為將振動彈簧的位移以運動曲線的形式變現(xiàn)出來,以便我們跟好的了解彈簧振子的簡諧振動。set(Q,'xdata',td,'ydata',yd),更新曲線的數據。T=T+0.1; 更新時間。 2.4 調
26、試結果調試結果調試結果調試結果 觀察T=0、3、6、9、12的調試圖形。 20051015-1 0 1 2 3理理理理理理理理理理理理 圖2-13 T=0的圖形 051015-1 0 1 2 3理理理理理理理理理理理理 圖2-14 T=3時的圖形 21051015-1 0 1 2 3理理理理理理理理理理理理 圖2-15 T=6時的圖形 051015-1 0 1 2 3理理理理理理理理理理理理 圖2-16 T=9時的圖形 22051015-1 0 1 2 3理理理理理理理理理理理理 圖2-17 T=12時的圖形 233 3 3 3 設計總結設計總結設計總結設計總結 本次設計實現(xiàn)了設計要求,實現(xiàn)了
27、利用matlab實現(xiàn)振動彈簧的實時動畫,同時畫出相應圓球質心隨時間變化的曲線。 通過此次課程設計,讓我對matlab軟件的應用有了更多的了解,對一些基本matlab函數的功能及算法有了一定的掌握。在學習的過程中,對matlab軟件功能強大深有體會。 24參考文獻參考文獻參考文獻參考文獻 1徐東艷.MATLAB函數庫查詢辭典.中國鐵道出版社.2005. 2蘇金明.MATLAB實用教程.電子工業(yè)出版社.2008. 3李麗.MATLAB工程計算及應用.人民郵電出版社.2001. 4蔡旭輝.MATLAB基礎與應用教程.人民郵電出版社.2009. 5周建興.MATLAB從入門到精通.人民郵電出版社.20
28、08. 6張錚.MATLAB程序設計與實例應用.中國鐵道出版社.2003. 25致謝致謝致謝致謝 在本次設計的整個過程中,得到了敖老師和同學的大力幫助,借此機會向他們表示誠摯的感謝。 感謝在百忙之中對我的論文進行評審并提出寶貴意見的老師們。 26附錄附錄附錄附錄-彈簧阻尼振動彈簧阻尼振動彈簧阻尼振動彈簧阻尼振動程序程序程序程序 下面來模擬彈簧振子在阻尼力的作用下進行阻尼運動的過程,同時畫出相應圓球質心隨時間變化的曲線。相應的MATLAB程序如下: close all;clear;clc; rectangle('position',12,8,2,0.3,'FaceColo
29、r',0.1,0.3,0.4); axis(0,15,-1,10);hold on; % 設置坐標軸范圍 plot(13,13,7,8,'r','linewidth',2); % 畫與彈簧連接的線 y=2:.2:7; % 得到彈簧對應的縱坐標數據 M=length(y); % 獲取數據的長度 x=12+mod(1:M,2)*2; % 生成彈簧的橫坐標數據 x(1)=13;x(end-3:end)=13; % 計算出彈簧上下端點的橫坐標值 D=plot(x,y); % 畫出彈簧 C=0:.1:2*pi; % 生成圓球的角度數據 r=0.3; % 圓球的半徑
30、 t1=r*sin(C); % 計算出圓球對中心的縱坐標數據 F1=fill(13+r*cos(C),2+t1,'r'); % 畫出圓球 set(gca,'ytick',0:2:9); % 設置y軸的刻度 set(gca,'yticklabels',num2str(-1:3'); % 重新設置y軸的刻度值 plot(0,15,2,2,'black'); % 畫出平衡位置 H1=plot(0,13,2,2,'g'); % 球心的跟蹤線 Q=plot(0,2.5,'color','r'); % 畫出運動曲線; td=; % 記錄時間的變量 yd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025按摩院轉讓合同范本
- 2025年中國國內運輸合同示范文本
- 2025建筑材料采購安裝合同
- 2025智能手機買賣合同
- 2025年附近學校房屋租賃合同范本
- 2025股權轉讓合同模板范文
- 2025年度標準版企業(yè)辦公場地租賃合同協(xié)議書
- 2025委托生產合同標準范例
- 2025江蘇中天鋼鐵集團有限公司產品采購銷售合同
- 2025企業(yè)間合作開發(fā)合同
- 自身免疫性腦炎
- 醫(yī)院質控科工作質量考核指標
- CRPS電源設計向導 CRPS Design Guide r-2017
- GB/T 9345.1-2008塑料灰分的測定第1部分:通用方法
- GB/T 4937.22-2018半導體器件機械和氣候試驗方法第22部分:鍵合強度
- GB/T 3452.2-2007液壓氣動用O形橡膠密封圈第2部分:外觀質量檢驗規(guī)范
- 煤礦從業(yè)人員安全培訓考試題庫(附答案)
- 第十章-國際政治與世界格局-(《政治學概論》課件)
- 2023年法律職業(yè)資格考試歷年真題精選合集
- 濾毒罐使用說明書
- 如何上好一節(jié)思政課綜述課件
評論
0/150
提交評論