如何使用python查找投射物运动的范围?

如何使用python查找投射物运动的范围?,python,numpy,matplotlib,physics,Python,Numpy,Matplotlib,Physics,我正在用Python模拟多角度的弹丸运动。这是一个几乎完成的代码,除了我还需要显示每个射弹的射程。你知道我该怎么做吗 import numpy as np import matplotlib.pyplot as plt import math #theta=pi/3 V=38.5 #speed t=np.arange(0,19,0.1) angle = math.pi/12 angle_list=[] while angle < math.pi/2: x=V*np.co

我正在用Python模拟多角度的弹丸运动。这是一个几乎完成的代码,除了我还需要显示每个射弹的射程。你知道我该怎么做吗

import numpy as np 
import matplotlib.pyplot as plt 
import math 

#theta=pi/3
V=38.5 #speed
t=np.arange(0,19,0.1)

angle = math.pi/12
angle_list=[]

while angle < math.pi/2:
    x=V*np.cos(angle)*t
    y=V*np.sin(angle)*t+(0.5*-9.8*t**2)
    plt.ylim([0,80])
    plt.xlim([0,170])
    print(x,y)
    plt.plot(x,y)
    angle_list.append(rf'{np.rad2deg(angle):.0f}$\degree$')
    angle+=math.pi/12
    

plt.xlabel("range")
plt.ylabel("height")
plt.title('Projectile Motion With Multiple Angles')
plt.legend(angle_list)
plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
输入数学
#θ=π/3
V=38.5#速度
t=np.arange(0,19,0.1)
角度=math.pi/12
角度列表=[]
当角度
图表的图片:


您只需找到零交叉点,即最大
x
,其
y>0
,这为您提供了可用于注释图形的范围,如下所示-

将numpy导入为np
将matplotlib.pyplot作为plt导入
输入数学
#θ=π/3
V=38.5#速度
t=np.arange(0,19,0.1)
角度=math.pi/12
角度列表=[]
当角度0)[-1]
plt.annotate(“{.2f}.”格式(x[zero\u crossing\u idx][0]),(x[zero\u crossing\u idx//2],y[zero\u crossing\u idx//2]+0.5))
angle_list.append(rf'{np.rad2deg(angle):.0f}$\degree$)
角度+=数学pi/12
plt.xlabel(“范围”)
plt.ylabel(“高度”)
plt.title(“多角度弹丸运动”)
零件图例(角度列表)
plt.show()

你所说的范围是什么意思?最后的x?你说的表演是什么意思?打印它?是的,这就是我的意思,找到每个投射物的最后一个x并打印它们。所以,它不只是通过打印(x[-1])
,打印最后一个
x
?@LiorCohen不完全是这样,图形延伸到了这里没有显示的负面
t
不是基于飞行时间,而是一般的延长时间HI!非常感谢。零交叉后的[-1]是什么意思?argwhere(y>0)同样,当我试图打印({.2f})格式(x[zero\u-crossing\u-idx][0])并查看它们是什么时,我发现它打印了图中显示的精确值,那么(x[zero\u-crossing\u-idx//2],y[zero\u-crossing\u-idx//2]+0.5)到底做了什么?
[-1]
给出了抛射体再次与地面接触的阵列中的索引。而这部分
(x[zero\u crossing\u idx//2],y[zero\u crossing\u idx//2]+0.5)
只是计算抛射体的峰值点,并将其在y方向上稍微向上移动,以将
范围
数字定位到图形上!而[0]是什么呢在“{.2f}”之后。格式(x[zero\u crossing\u idx]的意思是?它只访问第0个索引处的值。尝试不使用它,并查看差异