利用Python實現導彈自動追蹤!室友面前的裝逼利器!史上最詳細!
不好意思 ,上傳錯了。接著看圖!
由於待會要用pygame演示,他的坐標系是y軸向下,所以這裏我們也用y向下的坐標系。
算法總的思想就是根據上圖,把時間t分割成足夠小的片段(比如1/1000,這個時間片越小越精確),每一個片段分別構造如上三角形,計算出導彈下一個時間片走的方向(即∠a)和走的路程(即vt=|AC|),這時候目標再在第二個時間片移動了位置,這時剛才計算的C點又變成了第二個時間片的初始點,這時再在第二個時間片上在C點和新的目標點構造三角形計算新的vt,然後進入第三個時間片,如此反復即可。
假定導彈和目標的初始狀態下坐標分別是(x1,y1),(x,y),構造出直角三角形ABE,這個三角形用來求∠a的正弦和余弦值,因為vt是自己設置的,我們需要計算A到C點x和y坐標分別移動了多少,移動的值就是AD和CD的長度,這兩個分別用vt乘cosa和sina即可。
計算sina和cosa,正弦對比斜,余弦鄰比斜,斜邊可以利用兩點距離公式計算出,即:
好,由於最近在用Python的pygame庫制作小遊戲玩,接下來我們就用pygame來演示一下這個效果,效果如下圖:
很簡單的代碼如下:
但是實際運行效果並不好:
大致方向相同,但是圖片箭頭的尖點並沒有一直跟隨鼠標,這是為什麽呢。經過我的研究(就因為這個問題沒解決一直沒發布),
我發現原來是這個圖旋轉的機制問題,我們看看旋轉後的圖片變成什麽樣了:
旋轉後的圖片變成了藍色的那個範圍,根據旋轉角度的不同,所變成的圖片大小也不一樣,我們看旋轉90的情況
1,2象限
3,4象限,它的旋轉只有正負0—180,所以3,4象限就是負角
大功告成,最後附上全部的算法代碼.
進群:125240963 即可獲取數十套PDF哦!
利用Python實現導彈自動追蹤!室友面前的裝逼利器!史上最詳細!