已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB程式設計入門篇動畫製作 張智星清大資工系補充內容 方煒台大生機系 6 1MATLAB動畫簡介6 2以電影方式產生動畫 a 電影動畫之範例一 b 電影動畫之範例二 c 電影動畫之範例三6 3以物件方式產生動畫 a 曲線的動畫 b 曲線的EraseMode c 物件動畫之範例 6 1MATLAB動畫簡介 MATLAB產生動畫的方式有兩種 電影方式 以影像的方式預存多個畫面 再將這些畫面快速的呈現在螢幕上 就可以得到動畫的效果 此種方式類似於電影的原理 可以產生很繽紛亮麗的動畫 但是其缺點為每個畫面都必需事先備妥 無法進行及時成像 Real timeRendering 而且每個畫面 以至於整套動畫 都必需佔用相當大的記憶體空間 物件方式 在MATLAB的 握把式圖形 HandleGraphics 詳見本書第七章 概念下 所有的曲線或曲面均可被視為一個物件 MATLAB可以很快的抹去舊曲線 並產生相似但不同的新曲線 此時就可以看到曲線隨時間而變化的效果 使用物件方式 即握把式圖形 所產生的動畫 可以呈現即時的變化 也不需要太高的記憶體需求 但其缺點是較難產生太複雜的動畫 6 2以電影方式產生動畫 以電影方式來產生動畫 可由下列兩個步驟來達成 使用getframe指令來抓取圖形做為電影的畫面 每個畫面都是以一個行向量的方式 置放於整個代表電影的矩陣 使用movie指令來播放電影 並可指定播放的重複次數及每秒播放的畫面數目 電影動畫之範例一 在下例中 我們將以不同的角度來顯示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 播放電影三次 電影動畫之範例一 最後一個frame的畫面 電影動畫之範例二 將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次 電影動畫之範例二 最後一個frame的畫面 電影動畫之範例三 改變影像的色盤矩陣 讓影像出現 從正片變到負片 的效果範例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次 含正向與逆向播放 電影動畫之範例三 在上述範例中 正片 如下張投影片圖左 的色盤矩陣是map 而1 map則是負片 如下張投影片圖右 的色盤矩陣 因此我們在抓影片時 讓色盤矩陣進行漸進式的變化 因此呈現的電影就有 從正片變到負片 的效果 另外 movie M 5 代表電影將播放5次 但由於第二個參數是負數 所以每次播放會包含一次 正向播放 及一次 逆向播放 電影動畫之範例三 正片色盤矩陣是map 負片色盤矩陣是1 map 電影動畫的其他範例 MATLAB的demo程式中亦包含了數個與電影方式相關的動畫 讀者可以在指令視窗輸入下列任一指令 xpmovievibesxpmovielogospinxpmoviecrulspin 6 3以物件方式產生動畫 以電影方式產生動畫可以說是 暴力法 因為此方法佔掉了許多記憶體空間 另一個技巧性較高的方法則是以物件方式產生動畫 此種方法不需要大量的記憶體 而且可以產生 即時 Real time 或 互動式 Interactive 的動畫 MATLAB的所有圖形元件 曲線 曲面 圖軸等 都是物件 您可以控制這些物件的各種性質 此種特性稱為 握把式圖形 HandleGraphics 可詳見第七章 握把式圖形包含的層面很廣 但牽涉到動畫部份的基本概念並不複雜 以下我們以曲線的動畫來說明 曲線的動畫 我們可以快速地改變圖形物件的性質 如顏色 座標等 就可以達到動畫的效果每一條曲線都有下列三種性質 xdata 此為一向量 代表曲線的x座標值ydata 此為一向量 代表曲線的y座標值EraseMode 此為一字串 代表曲線被抹除的方式 亦即當xdata或ydata被改變時 對於舊曲線的處理方式 曲線的EraseMode EraseMode對於動畫的呈現相當重要 此字串可是下列幾種選擇 normal 重畫整個畫面 xor 將舊曲線的點以xor的方式還原 background 將舊曲線的點改成背景顏色 none 保留舊曲線的點 不做任何處理 在上述四種EraseMode中 耗費時間的次序是normal xor background nonexor和background很接近 但是background會抹去其他舊曲線所掃過的其他物件 如圖軸 格線 另一條曲線等 所以較少用到 所以一般在產生動畫時 最常用到的EraseMode就是xor 曲線的動畫 有了這些概念後 產生曲線的動畫就很容易了 其主要步驟有兩點 產生一條曲線 其EraseMode為xor background 或none 在for loop之中 改變此曲線的xdata或ydata 或兩者 我們產生一條隨x而衰減的正弦曲線 並讓k隨時間而便大 即改變正弦波的相角 使整條曲線產生舞動的效果 物件動畫之範例一 我們產生一條衰減的正弦曲線讓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 物件動畫之範例一 我們產生一條衰減的正弦曲線讓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 物件動畫之範例一 最後一個frame的畫面 物件動畫之範例一 在上例中 我們使用set指令 總共改變曲線的y座標5000次 並以xor的方式抹掉舊曲線 drawnow的作用是使MATLAB立刻處理set指令 若無drawnow MATLAB會累積set指令 直到for loop結束時再一併處理圖形的變化 這時就不會看到動畫的效果 如果您將上例的EraseMode改成background 則會發現曲線會 抹掉 圖形中的格線及代表圖軸的直線 如果您將上例的EraseMode改成none 則舊的曲線會被保留下來 產生不同的效果 物件動畫之範例 MATLAB MATLAB有很多物件動畫之範例 lorenz 以3D動畫呈現的Lorenz混沌方程式 ChaoticEquation 好像慧星在運行 truss 一座橋樑在地震時的震動方式 共有12種喔 travel 顯示如何以雜亂搜尋 RandomSearch 的方式來解TravelingSalespersonProblem fitdemo 顯示如何以DownhillSimplexSearch來解決非線性曲線擬合 NonlinearCurveFitting 的問題 spinner 常見的螢幕保護程式 xphide 試試您的眼力 物件動畫之範例 Simulink 若您有安裝Simulink 可試試下列動態系統模擬加上動畫呈現 onecart 傳統的彈簧加上砝碼的動態系統 dblcart1 一條彈簧加上兩個砝碼的動態系統 simppend 簡單的單擺系統 dblpend1 兩截的擺動系統 dblpend2 更複雜的擺動系統 penddemo 倒單擺系統 物件動畫之範例 模糊工具箱 如果您有安裝FuzzyLogicToolbox 可以試試由張老師開發的各項模擬及動畫展示 fcmdemo FuzzyC meansClustering juggler 用板子接皮球 invkine 兩截機器手臂的InverseKinematics slcp1 倒單擺 桿子長度隨時間而變 您可以控制所欲到達的位置 slcpp1 雙倒單擺 其中一個桿子的長度隨時間而變 您可以控制所欲到達的位置 slbb 蹺蹺板加上滾球系統 您可以控制球的最後位置 sltbu 倒車入庫系統 以物件方式產生動畫 呈現一個小圓 半徑為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 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 以物件方式產生動畫 呈現一個圓圈 半徑為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 dot1H line 0 0 marker o color k erase xor dot2H line 0 0 marker color r erase none fori 1 length x set circleH xdata x i real circle angle pi 2 x i set dot1H xdata x i cos angle ydata r sin angle set dot2H xdata x i cos angle ydata r sin angle line xdata x i cos angle ydata
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年CMC管理顾问师考试备考题库及答案解析
- 2025年护士资格考试《急诊护理技能与危重病监护》备考题库及答案解析
- 软件开发外包协议2025年保密条款
- 人力资源服务派遣合同协议2025年用工要求
- 清洁服务2025年合同协议
- 旅游服务合同协议2025年退改规定
- 临时工工资涨幅合同协议2025
- 酒店管理合作合同协议
- 健身服务2025年合同协议样本
- 商业广告发布合同范本
- GB/T 2423.17-2024环境试验第2部分:试验方法试验Ka:盐雾
- 中医儿科外治
- JGJ8-2016建筑变形测量规范
- 武汉市工伤人员医疗、康复、器具配置费用申报表
- 江西省新余市2023-2024学年八年级下学期期末质量监测物理试题
- (高清版)JTG D81-2017 公路交通安全设施设计规范
- (正式版)QBT 8020-2024 冷冻饮品 冰棍
- 小班儿歌《袋鼠爱跳高》课件
- 量子力学课件
- 利妥昔单抗护理课件
- 人工血管动静脉内瘘术后护理查房
评论
0/150
提交评论