正文

游戲數(shù)學(xué)(32)

精通C#游戲編程 作者:(英)斯庫勒


 

這里添加了另外一個補(bǔ)間。該補(bǔ)間使精靈的透明度從0逐漸變?yōu)橥耆煌该?。這是淡入文本的一種很好的方法。精靈的位置也可以通過補(bǔ)間改變。嘗試使用補(bǔ)間,將精靈從屏幕外移動到屏幕的中央。另外一個很好的示例是將精靈的透明度從0變化為1,然后引發(fā)另一個補(bǔ)間,將透明度從1變化為0。這些函數(shù)可以逐個調(diào)用,使補(bǔ)間循環(huán)執(zhí)行。

8.5  矩陣

圖形編程中到處會用到矩陣。矩陣有很多種應(yīng)用,但是本節(jié)將只關(guān)注與圖形和游戲編程有關(guān)的那一部分。

矩陣是一種數(shù)學(xué)結(jié)構(gòu),為描述或者執(zhí)行3D模型或者由四方形構(gòu)成的精靈上的眾多操作提供了一種便捷的方法。這些操作包括變換(在3D空間內(nèi)移動模型)、旋轉(zhuǎn)、縮放、偏航(使形狀“靠”向特定的方向)和投影(例如,將3D空間中的點(diǎn)轉(zhuǎn)換到2D空間中的點(diǎn))。許多這樣的操作都可以手動完成,例如,精靈類已經(jīng)通過把向量添加到每個頂點(diǎn)位置而執(zhí)行了平移。

與向量相比,矩陣在執(zhí)行這類操作時有幾個優(yōu)勢。實(shí)現(xiàn)不同操作的矩陣可以相互結(jié)合,得到單個矩陣,該矩陣定義了這些操作的組合。例如,一個矩陣將模型旋轉(zhuǎn)90°,一個矩陣將模型放大兩倍,一個矩陣將模型向左移動兩英里,這幾個矩陣可以結(jié)合成一個同時完成所有操作的矩陣。矩陣乘法可以實(shí)現(xiàn)這種操作,即將多個矩陣相乘,得到的結(jié)果矩陣是所有操作的組合。

組合操作并不是矩陣唯一的優(yōu)勢。矩陣可以求出逆矩陣,它執(zhí)行的操作與原矩陣執(zhí)行的操作相反。如果創(chuàng)建一個繞Z軸旋轉(zhuǎn)5? 的旋轉(zhuǎn)矩陣,然后對一個模型應(yīng)用該矩陣,那么通過對矩陣求逆矩陣,然后將這個逆矩陣應(yīng)用到模型上,可以使模型返回到原來的位置。通過將模型的每個頂點(diǎn)與矩陣相乘,可以將矩陣應(yīng)用到模型上。

8.5.1  矩陣的定義

矩陣是數(shù)值組成的網(wǎng)格。與向量類似,矩陣也可以有多個維。我們定義的向量的維數(shù)為3,其中的3個維度分別是X、Y和Z。在3D圖形學(xué)中,最常用的矩陣是4×4矩陣,如圖8-21所示。

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) hotzeplotz.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號