铅球飞行计算问题
在给定不同的投掷角度和初始速度下,求解计算铅球的飞行距离
输入:
铅球发射角度、 初始速度(m/s)、 初始高度(m)
处理:模拟铅球飞行,时刻更新铅球在飞行中的位置
输出:铅球飞行距离(m)
仿真参数:投掷角度angle、 初始速度velocity、 初始高
度height、 飞行距离interval
位置参数:x轴坐标xpos,y轴坐标ypos
速度分量:x轴方向上速度xvel,y轴方向上速度yvel
from math import pi,sin,cos,radians
def main():
angle = eval(input("Enter the launch angle (in degrees):"))#输入发射角度(角度单位)
vel = eval(input("Enter the initial velocity (in meters/sec):"))#输入初始速度(单位为米/秒)
h0 = eval(input("Enter the initial height (in meters):"))#输入初始高度(以米为单位)
time = eval(input("Enter the time interval: "))#输入时间间隔
xpos = 0 #初始水平位移
ypos = h0#初始高度
#水平速度和垂直方向速度分解
theta = radians(angle)#方法将角度转换为弧度
xvel = vel * cos(theta)#弧度的余弦值
yvel = vel * sin(theta)#弧度的正弦值
while ypos >= 0:#如果高度>= 0
xpos = xpos + time * xvel#水平位移
yvell = yvel - time * 9.8#垂直速度
ypos = ypos + time * (yvel + yvell)/2.0#垂直平均位移
yvel = yvell
print("\nDistance traveled:{0:0.1f}meters.".format(xpos))
if __name__ == "__main__":
main()