python计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹(不完美)

Posted QQ糖_尤尤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹(不完美)相关的知识,希望对你有一定的参考价值。

#计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹

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("
铅球飞行距离是:{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计算铅球飞行距离的模块化程序设计,并画出铅球飞行轨迹(不完美)的主要内容,如果未能解决你的问题,请参考以下文章

获取两个位置 android google maps 之间的距离并画线

python模块之logging

阿富汗距离中国有多少公里?

计算四轴飞行器的航向值

python,基于tkinter模块编写的根据经纬度计算两点间距离的应用程序

Python如何写出计算过了多少天的程序?