第一章 遊戲中的數學和物理 數學篇

2021-05-02 17:50:11 字數 3160 閱讀 6637

唉!真是悲哀,從小學到大學,學了16年的數學和物理,直到今天才真正的使用到它們,雖然日常生活中可能很多事情都會涉及到,但是真正直接的利用它們卻是從現在才開始.唉!如果早知道就.......沒辦法!學吧!

1.直角座標系

這個概念比較簡單,大家應該都不會忘記吧!在表示構成畫像的點,線,以及bitmap 的位置時幾乎都是使用的直角座標系.在表示乙個點的位置時一般使用p(4,6)的方式,4代表x座標,6代表y座標,只需要這兩個屬性就可以在直角座標系中確鑿的定義乙個點的位置.當然,對於3次元空間,還需要在加乙個屬性即z軸.

2.三角法(trigonometry)

這是乙個非常重要的部分,在遊戲ai裡經常被使用,比如視線(los:line of sight)。以下是幾個重要的概念.

角度->弧度  a*pi/180

弧度->角度  r*180/pi

3.三角形

1. 勾股定理:把直角三角形的兩直角邊的平方和等於斜邊的平方這一特性叫做勾股定理或勾股弦定.

實踐應用:

在下面的中有兩個角色,分別是射手和劍手,他們對於遊戲世界的座標分別為s(x1,y1),j(x2,y2).

現在對兩個人物的距離進行計算:

ap = y1-y2;

tp = x1-y1;

ap = (ap2 + tp2 )的開平方

tip:當判斷兩個角色與某乙個物體的距離誰更接近的情況時,最直觀的辦法為分別求兩個角色與物體的距離然後比較它們的大小,但是如果使用這種方法,需要進行兩次開平方,無疑效率會受點損失,在這種情況下可以採用直接比較平方的結果而不進行開平方,這種方法叫做平方距離空間.

2.sin,cos,tan

這三個三角函式在遊戲的開發裡經常被使用.以下為基本定義:

sin(角度或弧度) = 對邊/斜邊

cos(角度或弧度) = 鄰邊/斜邊

tan(角度或弧度) = 對邊/鄰邊

tip:在遊戲的開發裡,一般並不是使用角度作為sin,cos,tan的值,而是弧度,例如c語言中的double sin(double x)等方法,他們的引數都是弧度.

4 向量

1.定義: 有大小又有方向的量叫做向量.

2.座標系中的點座標(p=(x,y))與向量的區別(v=(x,y))

3.向量的加法與減法

向量的加法滿足平行四邊形法則和三角形法則。

假設有兩個向量a(x,y),b(x',y'),則

a+b=(x+x',y+y')

a-b=(x-x',y-y').

4.數乘向量

實數λ和向量a的乘積是乙個向量,記作λa,且∣λa∣=∣λ∣·∣a∣。

實數λ叫做向量a的係數,乘數向量λa的幾何意義就是將表示向量a的有向線段伸長或壓縮。

當∣λ∣>1時,表示向量a的有向線段在原方向(λ>0)或反方向(λ<0)上伸長為原來的∣λ∣倍;

當∣λ∣<1時,表示向量a的有向線段在原方向(λ>0)或反方向(λ<0)上縮短為原來的∣λ∣倍。

5 .向量的大小

以v=(x,y)為例,v向量的大小表示為|v|=(x2 + y2 )的開平方,即直角三角形的斜角邊

6.向量的正規化

單位向量(unit vector): 範數為1的向量,若 v 為一非零向量,則為一方向與 v 相同之單位向量,

這種對一已知向量建構與其同向之單位元向量的程式稱為向量正規化(normalization of a vector)

計算方法:

n=v/|v|

對於v(4,5)的正規化結果為:

|v| = (4*4 + 5*5)的開平方 = 6.403

新x=4/6.403=0.62

新y=5/6.403=0.78

即v(4,5)的正規化結果為v(0.62, 0.78)

7.兩個向量的內積

使用內積主要是用來計算兩個向量之間的夾角.

假設有兩個點u(x,y),v(x',y')則它們的內積為

內積=x*x' + y*y'

內積=|u||v|cos(夾角)

則:cos(夾角)=(x*x' + y*y')/|u||v|

就可以得出夾角的度數.下面是乙個在遊戲中使用例子

判斷某乙個物體是否在另乙個物體的正對面時的判斷方法,下圖中中間部分為乙個人,人的臉的方向為乙個向量.

然後利用上面的方法,可以得出cos(夾角)的值

當cos(夾角)>0的場合,則0度《夾角<90度,即人的正前方

當cos(夾角)<0的場合,則90度《夾角<180度,即人的後方

8.例項

如下圖所示,有兩個人物,怪物t(0,0)和公主p(x,y),其中怪物的視野為向量h(x',y'),求怪物的視野向量需要旋轉多少角度才可以看到公主?

(因為整個座標系統以怪物為原點,所以公主p(x,y)的位置座標也就是它的向量)

由圖可以得出,旋轉的角度即為向量th與向量tp的夾角.

假設p(x,y)=p(4,5),h(x',y') =h(1,0)

首先對其進行正規化:

p的向量長=(4*4 + 5*5)的開平方=6.4

則p的正規化為(0.62,0.78)

由內積cos(夾角)=x*x' + y*y"=(0.62*1) + 0.78*0=0.62

求0.62的反余弦得出角度0.902弧度

9.c語言中的三角函式

double sin(double x);

double cos(double x);

double tan(double x);

double asin(double x);

double acos(double x);

double atan(double x);

5 本地座標系和世界座標系

第一章 遊戲中的數學和物理 物理篇

物理在遊戲開發中是非常重要的部分,例如 敵人的地點,攻擊的最佳角度,傳球,面向哪個方向用多大的力量踢球等等,都需要物理學的支援.下面對遊戲中經常使用的幾個概念以及定理進行介紹.1.時間 遊戲中的時間一般採用兩種方法,一種是與現實世界相同,另一種是採取一種固定的假想時間間隔.以前所有的元件都採取相同的...

離散數學第一章總結

1 重言式 也是永真式,公式真值恒為1。2 矛盾式 永假式,真值恒為0。3 可滿足式 不是矛盾式的就都是可滿足式。重言式一定是可滿足式。也叫成真指派與成假指派。一組原子的取值 真值指派 使得公式為真 成真指派 賦值 一組原子的取值 真值指派 使得公式為假 成假指派 賦值 也叫等值式,即任意的分量指派...

北郵考研數學 第一章

第一章 函式 極限 連續 第三節 連續 題型二 介值定理,最值定理及零點定理的證明題 共有4道題 共2張 因為 是連續的 所以他肯定滿足那四大性質 因為題目中的問法是存在,且最後要證明的不是讓你證明等於零,或者說即便你可以化為等於零的形式,但比較複雜,所以這個題應該是要用介值定理 由介值定理的推論我...