




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-,1,MATLAB程式設計入門篇動畫製作,張智星清大資工系補充內容:方煒台大生機系,-,2,6-1MATLAB動畫簡介6-2以電影方式產生動畫(a).電影動畫之範例一(b).電影動畫之範例二(c).電影動畫之範例三6-3以物件方式產生動畫(a).曲線的動畫(b).曲線的EraseMode(c).物件動畫之範例,-,3,6-1MATLAB動畫簡介,MATLAB產生動畫的方式有兩種:電影方式:以影像的方式預存多個畫面,再將這些畫面快速的呈現在螢幕上,就可以得到動畫的效果。此種方式類似於電影的原理,可以產生很繽紛亮麗的動畫,但是其缺點為每個畫面都必需事先備妥,無法進行及時成像(Real-timeRendering),而且每個畫面,以至於整套動畫,都必需佔用相當大的記憶體空間。物件方式:在MATLAB的握把式圖形(HandleGraphics,詳見本書第七章)概念下,所有的曲線或曲面均可被視為一個物件,MATLAB可以很快的抹去舊曲線,並產生相似但不同的新曲線,此時就可以看到曲線隨時間而變化的效果。使用物件方式(即握把式圖形)所產生的動畫,可以呈現即時的變化,也不需要太高的記憶體需求,但其缺點是較難產生太複雜的動畫。,-,4,6-2以電影方式產生動畫,以電影方式來產生動畫,可由下列兩個步驟來達成:使用getframe指令來抓取圖形做為電影的畫面,每個畫面都是以一個行向量的方式,置放於整個代表電影的矩陣。使用movie指令來播放電影,並可指定播放的重複次數及每秒播放的畫面數目。,-,5,電影動畫之範例一,在下例中,我們將以不同的角度來顯示peaks函數,並將其結果以電影的方式來呈現動畫。範例6-1:movie01.m,clearM%清除電影資料矩陣Mn=50;%抓取50個畫面peaks;fprintf(抓取畫面中.n);fori=1:nview(-37.5+i*360/n,30);%改變觀測角度M(i)=getframe;%抓取畫面,並存入電影資料矩陣Mendfprintf(播放電影中.n);movie(M,3);%播放電影三次,-,6,電影動畫之範例一,最後一個frame的畫面,-,7,電影動畫之範例二,將peaks函數畫在圓盤上,然後再變換此函數的高度,以動畫呈現範例6-2:movie02.m,clearM%清除電影資料矩陣Mr=linspace(0,4,30);%圓盤的半徑t=linspace(0,2*pi,50);%圓盤的極座標角度rr,tt=meshgrid(r,t);xx=rr.*cos(tt);%產生圓盤上的x座標yy=rr.*sin(tt);%產生圓盤上的y座標zz=peaks(xx,yy);%產生peaks在極座標的資料n=30;%抓取30個畫面scale=cos(linspace(0,2*pi,n);fprintf(抓取畫面中.n);fori=1:nsurf(xx,yy,zz*scale(i);%畫圖axis(-infinf-infinf-8.58.5);%固定圖軸的範圍boxonM(i)=getframe;%抓取畫面,並存入電影資料矩陣Mendfprintf(播放電影中.n);movie(M,5);%播放電影5次,-,8,電影動畫之範例二,最後一個frame的畫面,-,9,電影動畫之範例三,改變影像的色盤矩陣,讓影像出現從正片變到負片的效果範例6-3:movie03.m,clearM%清除電影資料矩陣Mloadclown.matimage(X);colormap(map);%畫出小丑臉n=30;%抓取30個畫面scale=cos(linspace(0,2*pi,n);fprintf(抓取畫面中.n);fori=1:ncolormap(i-1)*(1-map)+(n-i)*map)/n);%改變色盤矩陣M(i)=getframe;%抓取畫面,並存入電影資料矩陣Mendfprintf(播放電影中.n);movie(M,-5);%播放電影5次(含正向與逆向播放),-,10,電影動畫之範例三,在上述範例中,正片(如下張投影片圖左)的色盤矩陣是map,而1-map則是負片(如下張投影片圖右)的色盤矩陣,因此我們在抓影片時,讓色盤矩陣進行漸進式的變化,因此呈現的電影就有從正片變到負片的效果。另外,movie(M,-5)代表電影將播放5次,但由於第二個參數是負數,所以每次播放會包含一次正向播放及一次逆向播放。,-,11,電影動畫之範例三,正片色盤矩陣是map,負片色盤矩陣是1-map,-,12,電影動畫的其他範例,MATLAB的demo程式中亦包含了數個與電影方式相關的動畫,讀者可以在指令視窗輸入下列任一指令:xpmovievibesxpmovielogospinxpmoviecrulspin,-,13,6-3以物件方式產生動畫,以電影方式產生動畫可以說是暴力法,因為此方法佔掉了許多記憶體空間。另一個技巧性較高的方法則是以物件方式產生動畫,此種方法不需要大量的記憶體,而且可以產生即時(Real-time)或互動式(Interactive)的動畫。MATLAB的所有圖形元件(曲線、曲面、圖軸等)都是物件,您可以控制這些物件的各種性質,此種特性稱為握把式圖形(HandleGraphics),可詳見第七章。握把式圖形包含的層面很廣,但牽涉到動畫部份的基本概念並不複雜,以下我們以曲線的動畫來說明。,-,14,曲線的動畫,我們可以快速地改變圖形物件的性質(如顏色、座標等),就可以達到動畫的效果每一條曲線都有下列三種性質:xdata:此為一向量,代表曲線的x座標值ydata:此為一向量,代表曲線的y座標值EraseMode:此為一字串,代表曲線被抹除的方式,亦即當xdata或ydata被改變時,對於舊曲線的處理方式。,-,15,曲線的EraseMode,EraseMode對於動畫的呈現相當重要,此字串可是下列幾種選擇:normal:重畫整個畫面。xor:將舊曲線的點以xor的方式還原。background:將舊曲線的點改成背景顏色。none:保留舊曲線的點,不做任何處理。在上述四種EraseMode中,耗費時間的次序是normalxorbackgroundnonexor和background很接近,但是background會抹去其他舊曲線所掃過的其他物件(如圖軸、格線、另一條曲線等),所以較少用到,所以一般在產生動畫時,最常用到的EraseMode就是xor。,-,16,曲線的動畫,有了這些概念後,產生曲線的動畫就很容易了!其主要步驟有兩點:產生一條曲線,其EraseMode為xor,background,或none。在for-loop之中,改變此曲線的xdata或ydata(或兩者)。我們產生一條隨x而衰減的正弦曲線,並讓k隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。,-,17,物件動畫之範例一,我們產生一條衰減的正弦曲線讓k隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。範例6-1:movie04.m,x=0:0.1:8*pi;h=plot(x,sin(x).*exp(-x/5),EraseMode,xor);axis(-infinf-11);%設定圖軸的範圍gridon%畫出格線fori=1:5000y=sin(x+i/50).*exp(-x/5);set(h,ydata,y);%設定新的y座標drawnow%立即作圖end,-,18,物件動畫之範例一,我們產生一條衰減的正弦曲線讓k隨時間而便大(即改變正弦波的相角),使整條曲線產生舞動的效果。範例6-1:movie04.m,x=0:0.1:8*pi;h=plot(x,sin(x).*exp(-x/5),EraseMode,xor);axis(-infinf-11);%設定圖軸的範圍gridon%畫出格線fori=1:5000y=sin(x+i/50).*exp(-x/5);set(h,ydata,y);%設定新的y座標drawnow%立即作圖end,-,19,物件動畫之範例一,最後一個frame的畫面,-,20,物件動畫之範例一,在上例中,我們使用set指令,總共改變曲線的y座標5000次,並以xor的方式抹掉舊曲線。drawnow的作用是使MATLAB立刻處理set指令,若無drawnow,MATLAB會累積set指令,直到for-loop結束時再一併處理圖形的變化,這時就不會看到動畫的效果。如果您將上例的EraseMode改成background,則會發現曲線會“抹掉”圖形中的格線及代表圖軸的直線。如果您將上例的EraseMode改成none,則舊的曲線會被保留下來,產生不同的效果。,-,21,物件動畫之範例:MATLAB,MATLAB有很多物件動畫之範例:lorenz:以3D動畫呈現的Lorenz混沌方程式(ChaoticEquation),好像慧星在運行。truss:一座橋樑在地震時的震動方式,共有12種喔!travel:顯示如何以雜亂搜尋(RandomSearch)的方式來解TravelingSalespersonProblem.fitdemo:顯示如何以DownhillSimplexSearch來解決非線性曲線擬合(NonlinearCurveFitting)的問題。spinner:常見的螢幕保護程式。xphide:試試您的眼力。,-,22,物件動畫之範例:Simulink,若您有安裝Simulink,可試試下列動態系統模擬加上動畫呈現:onecart:傳統的彈簧加上砝碼的動態系統。dblcart1:一條彈簧加上兩個砝碼的動態系統。simppend:簡單的單擺系統。dblpend1:兩截的擺動系統。dblpend2:更複雜的擺動系統。penddemo:倒單擺系統。,-,23,物件動畫之範例:模糊工具箱,如果您有安裝FuzzyLogicToolbox,可以試試由張老師開發的各項模擬及動畫展示:fcmdemo:FuzzyC-meansClustering。juggler:用板子接皮球。invkine:兩截機器手臂的InverseKinematics。slcp1:倒單擺,桿子長度隨時間而變,您可以控制所欲到達的位置。slcpp1:雙倒單擺,其中一個桿子的長度隨時間而變,您可以控制所欲到達的位置。slbb:蹺蹺板加上滾球系統,您可以控制球的最後位置。sltbu:倒車入庫系統,-,24,以物件方式產生動畫,呈現一個小圓(半徑為1)在一個大圓(半徑為3)的圓周外部滾動的動畫。,functionmymovie02closealltheta=0:0.1:2*pi;r1=3;x1=r1*cos(theta);y1=r1*sin(theta);plot(x1,y1),axisimage%大圓r2=1;center=(r1+r2)*1,0;x2=r2*cos(theta);y2=r2*sin(theta);h=line(center(1)+x2,center(2)+y2,EraseMode,xor,color,r);%小圓axis(-55-55);%設定圖軸的範圍n=5;%轉5圈theta1=0:0.005:n*2*pi;fori=1:length(theta1);center=(r1+r2)*cos(theta1(i),sin(theta1(i);set(h,xdata,center(1)+x2,ydata,center(2)+y2);%設定小圓的x,y座標drawnow%立即作圖end,-,25,functionmymovie02_2closealltheta=0:0.1:2*pi;r1=3;circle1=r1*exp(sqrt(-1)*theta);%大圓plot(circle1),axisimager2=1;circle2=r2*exp(sqrt(-1)*theta);%小圓center=r1+r2;h=line(real(center+circle2),imag(center+circle2),EraseMode,xor,color,r);axis(-55-55);%設定圖軸的範圍n=5;%轉5圈theta1=0:0.005:n*2*pi;fori=1:length(theta1);center=(r1+r2)*exp(sqrt(-1)*(theta1(i);set(h,xdata,real(center+circle2),ydata,imag(center+circle2);%設定小圓的x,y座標drawnow%立即作圖end,-,26,以物件方式產生動畫,呈現一個圓圈(半徑為1)由畫面左邊滾到右邊,圓周上的任一點所拉出的一條擺線。,functioncycloid01%擺線的動畫,x=0:0.01:5*pi;theta=linspace(0,2*pi);r=1;circle=j+r*exp(sqrt(-1)*theta);subplot(2,1,1);circleH=plot(circle);axisimageset(circleH,erase,xor);axis(min(x)-r,max(x)+r,-0.5,2*r+0.5);dot
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60245-6:1994/AMD2:2003 FR-D Amendment 2 - Rubber insulated cables - Rated voltages up to and including 450/750 V - Part 6: Arc welding electrode cables
- 【正版授权】 ISO/IEC GUIDE 50:2014 FR Safety aspects - Guidelines for child safety in standards and other specifications
- 电商平台运营与管理知识点梳理
- 分析数字化转型对IT行业的未来影响
- 美食探店评价参考表
- 学习进步的心得体会读后感7篇
- 艺术新课标音乐考试试题及答案
- 医院理论考试试题及答案
- 六一入场活动方案
- 六一古风活动方案
- 2025年四川省成都市中考语文真题(解析版)
- 2025年黑龙江、吉林、辽宁、内蒙古高考物理真题(解析版)
- 民航招飞初选试题及答案
- 2025年电子商务法律法规考试试题及答案
- 国开2025年《资源与运营管理》形考任务1-4答案
- 2025年安全生产考试题库(危险化学品安全)危险化学品安全操作规范应用试题
- T/CIQA 74-2024人工智能(AI)鉴定通用规范
- 学习解读《水利水电建设工程验收规程》SLT223-2025课件
- 餐饮服务员培训全流程解析
- 《成人高血压合并2型糖尿病和血脂异常基层防治中国专家共识(2024年版)》解读
- 《小学交通安全教育》课件
评论
0/150
提交评论