#铅球飞行的轨迹计算程序 from math import pi,sin,cos,radians def main(): #输入仿真参数 angle=eval(input("Enter the lauch 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#抛出点x坐标为0 ypos=0#抛出点y坐标为0 #抛出角度用radians()函数将输入的度转换为弧度,因为math库中角度值的单位是弧度 theta=radians(angle) xvel=vel*cos(theta)#x轴方向的初始速度 yvel=vel*sin(theta)#y轴方向的初始速度 #该循环体是在铅球落地之前保持更新它的位置和速度 """ 当ypos>=0时铅球处于飞行状态, 这用>=号是即使铅球从地面抛出仍可适用 当ypos<0时表示铅球已落地 """ while ypos>=0: xpos=xpos+time*xvel#x坐标位置 yvel1=yvel-time*9.8#该时间段y轴方向末速度 ypos=ypos+time*(yvel+yvel1)/2#y坐标位置 yvel=yvel1#更新铅球在该坐标点时的y轴方向速度 #循环结束,即铅球落地,用print()输出x轴方向飞行距离 print("\nistance traveled:(0:0.1f)meters.",format(xpos)) main()