這里添加了另外一個補間。該補間使精靈的透明度從0逐漸變?yōu)橥耆煌该?。這是淡入文本的一種很好的方法。精靈的位置也可以通過補間改變。嘗試使用補間,將精靈從屏幕外移動到屏幕的中央。另外一個很好的示例是將精靈的透明度從0變化為1,然后引發(fā)另一個補間,將透明度從1變化為0。這些函數(shù)可以逐個調(diào)用,使補間循環(huán)執(zhí)行。
8.5 矩陣
圖形編程中到處會用到矩陣。矩陣有很多種應用,但是本節(jié)將只關注與圖形和游戲編程有關的那一部分。
矩陣是一種數(shù)學結構,為描述或者執(zhí)行3D模型或者由四方形構成的精靈上的眾多操作提供了一種便捷的方法。這些操作包括變換(在3D空間內(nèi)移動模型)、旋轉、縮放、偏航(使形狀“靠”向特定的方向)和投影(例如,將3D空間中的點轉換到2D空間中的點)。許多這樣的操作都可以手動完成,例如,精靈類已經(jīng)通過把向量添加到每個頂點位置而執(zhí)行了平移。
與向量相比,矩陣在執(zhí)行這類操作時有幾個優(yōu)勢。實現(xiàn)不同操作的矩陣可以相互結合,得到單個矩陣,該矩陣定義了這些操作的組合。例如,一個矩陣將模型旋轉90°,一個矩陣將模型放大兩倍,一個矩陣將模型向左移動兩英里,這幾個矩陣可以結合成一個同時完成所有操作的矩陣。矩陣乘法可以實現(xiàn)這種操作,即將多個矩陣相乘,得到的結果矩陣是所有操作的組合。
組合操作并不是矩陣唯一的優(yōu)勢。矩陣可以求出逆矩陣,它執(zhí)行的操作與原矩陣執(zhí)行的操作相反。如果創(chuàng)建一個繞Z軸旋轉5? 的旋轉矩陣,然后對一個模型應用該矩陣,那么通過對矩陣求逆矩陣,然后將這個逆矩陣應用到模型上,可以使模型返回到原來的位置。通過將模型的每個頂點與矩陣相乘,可以將矩陣應用到模型上。
8.5.1 矩陣的定義
矩陣是數(shù)值組成的網(wǎng)格。與向量類似,矩陣也可以有多個維。我們定義的向量的維數(shù)為3,其中的3個維度分別是X、Y和Z。在3D圖形學中,最常用的矩陣是4×4矩陣,如圖8-21所示。