子彈跟蹤演算法2

2021-08-31 02:09:00 字數 745 閱讀 6933

很多玩過飛行射擊類遊戲的朋友都對跟蹤飛彈印象深刻,手中有這樣一款**常常能夠戰無不勝,但是敵人射出的飛彈則可能成為玩家的噩夢。其實實現飛彈跟蹤的方法並不複雜,只需要一些簡單的平面解析幾何知識就可以做到。

演算法分析

假設飛彈旋轉角速度為omega,運動速度為v。下圖顯示了飛彈和目標在座標軸中的初始狀態。

初始時刻,目標與飛彈的運動方向都是-y,位置分別為(x1,y1),(x2,y2),連線飛彈與目標的座標,得到一條線段,該線段與-y軸夾角為c;飛彈與-y方向的夾角為b,b是飛彈已旋轉的角度,此時為0;飛彈方向與線段的夾角為a,a就是飛彈還需要旋轉的角度。此時:

c=90-math.atan2(y2-y1,x2-x1)*180/math.pi;

b=0;

a=c-b;

為了方便計算將c轉換為360度以內的正值:

c=(270+math.atan2(y2-y1,x2-x1)*180/math.pi)%360;

取得這些值以後,可以計算下一時刻飛彈的旋轉角度和應該處在的位置。如果a小於角速度omega,飛彈旋轉角度a,正好可以指向目標,否則將旋轉omega度,所以 b=ax2=x2+math.sin(b*math.pi/180)*v;

y2=y2+math.cos(b*math.pi/180)*v;

在新的時刻,目標移動到新的位置,同時飛彈旋轉角度為b,如下圖

然後重新進行上面的計算,修正飛彈位置和旋轉角度,如此反覆,直到飛彈命中目標,或者因超出時間限制而銷毀。

CE自動彙編之植物大戰殭屍之子彈跟蹤

置頂宣告 本文重理論基礎 邏輯 輕分析過程 實戰 實戰過程應該使自己技術水平成長的 最佳良藥 所以下面只會出現自己的分析過程的部分 思路說明 模擬香蒲攻擊方式 發現殭屍 定位殭屍 跟蹤攻擊 根據香蒲 攻擊間隔 找發射前定位 詳細 發現殭屍這步可能是定位殭屍的子過程,因為是攻擊類植物共有的邏輯,因此需...

CamShift跟蹤演算法

ifdef ch pragma package opencv endif define cv no backward compatibility ifndef eic include cv.h include highgui.h include stdio.h include ctype.h end...

TLd跟蹤演算法

作者 的鏈結 原始碼為linux版本,基於opencv2.3 在原始碼 doc資料夾下有其程式設計介面,很清晰。zk關於這個tld框架發表了很多 感覺對理解 非常有用的 有下面三個 1 tracking learning detection 2 forward backward error auto...