标签:程序 text drawtext color form down ext pos 方向
#计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹 from math import pi,sin,cos,radians import turtle def drawLine(x,y):#画线 turtle.pendown() turtle.goto (x,y) def drawText(x,y,n): turtle.penup() turtle.goto (x,y) turtle.pendown() turtle.write(float("%3.f"%(x/n)),float("%3.f"%(y/n)))#只保留两位小数????不知为啥只写x值不出y值???????????? def main(): angle,vel,h0,time=getinputs()#调用getinputs()获取仿真参数 xpos,ypos=0,h0#初始化铅球抛出点x,y坐标 n=50#初始化铅球轨迹的显示系数 drawLine(800,0) #初始坐标轴 drawLine(0,0) drawLine(0,500) drawLine(0,h0*n)#从h0高度抛出,turtle在h0*n处开始画飞行轨迹,n为显示系数 xvel,yvel=getxycomponents(vel,angle)#调用getxycomponents()获取铅球抛出点x,y轴方向速度 while ypos>=0:#判断铅球是否落地 xpos,ypos,yvel=updateposition(time,xpos,ypos,xvel,yvel)#调用updateposition()更新铅球坐标坐置及y轴方向飞行速度 drawLine(xpos*n,ypos*n)#########drawline()在此处调用轨迹会画到x轴以下,不是很完美############ drawText(xpos*n,ypos*n,n) turtle.hideturtle()#隐藏turtle形状 print("\n铅球飞行距离是:{0:0.1f}米.".format(xpos)) def getinputs(): #输入仿真参数 angle=eval(input("请输入投掷角度(度):")) vel=eval(input("请输入投掷速度(米/秒:")) h0=eval(input("请输入投掷的初始高度(米):")) time=eval(input("请输入间隔判断时间(秒):"))#每隔这个时间就判断一次铅球是否落地 return angle,vel,h0,time#返回参数值 def getxycomponents(vel,angle): theta=radians(angle)#度转换为弧度 xvel=vel*cos(theta) yvel=vel*sin(theta) return xvel,yvel#返回x轴,y轴方向的速度 def updateposition(time,xpos,ypos,xvel,yvel): xpos=xpos+xvel*time yvel1=yvel-time*9.8 ypos=ypos+time*(yvel+yvel1)/2 yvel=yvel1 return xpos,ypos,yvel if __name__=="__main__": main()
python计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹(不完美)
标签:程序 text drawtext color form down ext pos 方向
原文地址:https://www.cnblogs.com/ylzchs/p/13228663.html