欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

程序员文章站 2023-10-15 10:15:17
不好意思 ,上传错了。接着看图! 由于待会要用pygame演示,他的坐标系是y轴向下,所以这里我们也用y向下的坐标系。 算法总的思想就是根据上图,把时间t分割成足够小的片段(比如1/1000,这个时间片越小越精确),每一个片段分别构造如上三角形,计算出导弹下一个时间片走的方向(即∠a)和走的路程(即 ......
利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

不好意思 ,上传错了。接着看图!

利用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实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

好,由于最近在用Python的pygame库制作小游戏玩,接下来我们就用pygame来演示一下这个效果,效果如下图:

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

很简单的代码如下:

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

但是实际运行效果并不好:

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

大致方向相同,但是图片箭头的尖点并没有一直跟随鼠标,这是为什么呢。经过我的研究(就因为这个问题没解决一直没发布),

我发现原来是这个图旋转的机制问题,我们看看旋转后的图片变成什么样了:

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

旋转后的图片变成了蓝色的那个范围,根据旋转角度的不同,所变成的图片大小也不一样,我们看旋转90的情况

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

1,2象限

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

3,4象限,它的旋转只有正负0—180,所以3,4象限就是负角

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

大功告成,最后附上全部的算法代码.

利用Python实现导弹自动追踪!室友面前的装逼利器!史上最详细!

 

进群:125240963   即可获取数十套PDF哦!