正文

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

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


8.2  向量

向量是一個(gè)常用的游戲編程工具。了解向量數(shù)學(xué)最簡單的方式是在游戲中使用向量,很快就可以熟悉向量的各種用法。前面的章節(jié)中已經(jīng)創(chuàng)建了一個(gè)簡單的向量類,但是到現(xiàn)在為止還沒有定義它的任何屬性。

8.2.1  向量的定義

在游戲編程中,向量用于操作和描述3D游戲世界。向量的數(shù)學(xué)定義是既有大小又有方向的量。大小就是向量的長度。

游戲編程中最常用的向量是2D、3D和4D向量。在使用投影矩陣將頂點(diǎn)從3D轉(zhuǎn)換到2D空間時(shí),會用到4D向量。紙面上看起來,向量和位置很類似。位置[0,3,0]和向量[0,3,0]有相同的內(nèi)部值,但是它們代表不同的概念。位置使用坐標(biāo)系統(tǒng)定義世界中的一個(gè)絕對位置。向量描述一個(gè)方向(在這里為向上)和大小或者說長度(在這里為3)。圖8-3比較了兩者的不同。例如,“離地面3英里”不是一個(gè)位置,而是使用位置和長度描述了一個(gè)位置,換句話說,它是一個(gè)向量。

在游戲編程中,向量用于回答如下問題:

● 敵人的飛船位于[0,0,90],玩家的飛船位于[0,80,-50]。敵人應(yīng)該向哪個(gè)位置發(fā)射導(dǎo)彈?在每一幀中,如何更新導(dǎo)彈的位置,使其朝向玩家不斷移動?

● 玩家與導(dǎo)彈的位置小于1m嗎?

● 玩家在墻的哪一邊?

● 玩家在看NPC嗎?

● 給定一個(gè)表示槍的后部的四方形,子彈將向哪個(gè)方向飛出?

● 光應(yīng)該如何從這個(gè)表面反射出去?

● 把汽車向前移動3m。

● 玩家擊中了一個(gè)敵人,敵人應(yīng)該向哪個(gè)方向運(yùn)動?

● 如何將子彈的動力增加100?

● 哪個(gè)玩家最接近外星人的飛船?

 


上一章目錄下一章

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