矩陣算法原理
来源:互联网 发布:软件开发文档目录 编辑:程序博客网 时间:2024/05/17 02:54
http://blog.csdn.net/as3_flash/article/details/2378598
Matrix類的變形方法,最終都是根據用戶給出的參數修改內部矩陣。這些方法的不同之處,在於修改值的算法,以及修改結果在矩陣中的位置。
當用戶在代碼中調用translate(5,13)時,AS3修改矩陣類的內建矩陣,將其中的(tx,ty)T與(5,13)T相加,由於在矩陣創建時(tx,ty)被初始化為(0,0),所以這個結果就是向量(tx,ty)與(5,13)的和。
這個過程如圖所示:
當使用非位移的變換時,這個過程有所改變。根據公式f(x)=Ax+b可知,位移變換是矩陣相加運算,而非位移的變換是矩陣相乘運算。這個過程用代碼可以很清晰地展現,新建項目並在代碼編輯器中寫入以下代碼:
var myMatrix:Matrix=new Matrix;
trace(myMatrix.toString());
myMatrix.scale(4,6);
trace(myMatrix.toString());
myMatrix.scale(2,1);
trace(myMatrix.toString());
本例的操作過程如圖:
運行,可以觀察到輸出的結果是:
(a=1, b=0, c=0, d=1, tx=0, ty=0)
(a=4, b=0, c=0, d=6, tx=0, ty=0)
(a=8, b=0, c=0, d=6, tx=0, ty=0)
用這種方法,用戶可以研究矩陣類所有方法的內部邏輯。
其實,矩陣類其他內建變形方法的矩陣操作及其圖形學算法都大同小異,其通用模式是:
(1)根據方法的類型,對參數進行數學運算
(2)將運算得出的值,賦予變換矩陣中的相應元素
不同的變換有不同的算法和相關矩陣元素,詳情可以參考表:
表內建方法的矩陣操作和算法
名稱
詳情
translate(tx, ty)
scale(sx, sy)
rotate(q)
由此可知,Matrix類的所有內建變形方法都不神秘。它們僅僅是簡化了操作,避免了繁瑣的操作步驟。例如rotate(q)方法,如果使用此方法,用戶只需要一個語句就能完成操作:
DisplayObjectMatrix.rotate(Math.PI/4);
如果不使用這個方法,直接根據其內部機制,操作Matrix類的內部屬性,也能達到相同的結果,但步驟顯然要繁瑣一些:
DisplayObjectMatrix.a=Math.cos(Math.PI/4);
DisplayObjectMatrix.b = Math.sin(Math.PI/4);
DisplayObjectMatrix.c = Math.-sin(Math.PI/4);
DisplayObjectMatrix.d = Math.cos(Math.PI/4);
在動畫中經常會要求創建一些複雜的動畫變形,但使用Matrix類的內建方法的默認行為,在有些場合併不合適。對於初級用戶,因為不具備矩陣知識,面對這種需求只能束手無策。通過前面幾小節的學習,原本看似高深莫測的Matrix類,現在已經一目瞭然不在話下。有了堅實的知識儲備,就能根據Matrix和仿射變換矩陣的原理,手工改變各種內建方法的行為,以及根據所需創建其他變換。下一節,將詳細討論如何利用旋轉變形製作複雜的動畫。
- 矩陣算法原理
- 搜索引擎算法原理 百度算法的原理 [
- surf算法原理、sift算法原理详解
- Base64算法原理
- Base64算法原理
- NCR Shuffle算法原理
- NCR Shuffle算法原理
- md5算法原理
- MD5算法原理
- KMP算法原理
- MD5摘要算法原理
- NCR Shuffle算法原理
- OnlineSVR算法原理(1)
- OnlineSVR算法原理(2)
- OnlineSVR算法原理(3)
- RSA算法原理
- SHA1算法原理
- RSA算法原理
- memcached教程
- 看VC孙鑫的 自己一点小心得 不对的请指教
- 迈出从3K到1W的重要一步——掌握设计模式
- 矩陣變形方法
- Meta-analysis [incomplete]
- 矩陣算法原理
- osi 模型 tcpip网络模型
- 在Netbeans预览CSS和集成Browser
- VMware workstation 6.5安装Red Hat Linux 9
- android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
- 今天遇到了一个很有趣的问题
- SAS之SCSI Enclosure Services - 3 (SES-3)
- ruby入门_全局变量
- NetLimiter