數學之向量的點積(點乘、數量積)


向量的點積(英語:dot product)(數量積的定義):

 

幾何意義是:是一條邊向另一條邊的投影乘以另一條邊的長度。

 

 

在其物理上面的幾何意義是容易理解的。如下圖所示:


現在求F1在水平方向上的做功:

W = F1 * Cosθ * S

那么套用數量積公式:

力F1在水平方向位移S,可以表示為:

F1 * S = Cosθ * |F1| * |S|

上面的數量積公式的使用如下:

當θ夾角小於90度時,F1 * S > 0

當θ夾角大於90度時,F1 * S < 0

利用上面的特性,在游戲的開發中可以作為一個玩家的視野計算,對玩家身前可能存在的碰撞進行檢測。

如上圖所示,2號藍線為玩家的面朝的方向,我們可以知道1和3紅線對2線的夾角是小於90度的,這也就是玩家的面朝的方向

再看4號線,與2號線的夾角是大於90度的,故向量2與向量4的點積是小於0的,故我們可以判斷4是玩家的視野盲區,也就是玩家的身后。

我們如果需要對玩家身前是否有障礙需要判斷的話,可以通過向量來實現。

-------------------------------------------------------------------------------------------------

我們首先設置的是RPG玩家的位置,假設是(10,10)

下面的向量描述都是以玩家為中心的描述。

我們設置他的視野范圍是5,知道主角的朝向假設是向量(1,1)

現在有一個箱子的向量是(-3,4);

利用點積公式:

1 * (-3) + 1 * 4 = 1

因為1大於0,推導出他們的夾角θ是大於0小於等於90度的

故該箱子一定是位於玩家的前方的。

再次假設,玩家的視野角度是60度。計算Cosθ的值

Cosθ = 2 / (sqrt(2) * 5) = 2 / (1.4 * 5) = 2 / 7 = 0.2857

計算反余弦:ArcCos 0.2857 =  73.399305 ° 

知道了箱子與玩家朝向的向量(1,1)的夾角是73度,故可以知道,該箱子不在玩家的視野中。

如果還不懂,可以對照下圖的大致圖解:





 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM