博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python绘制铅球的运行轨迹
阅读量:4171 次
发布时间:2019-05-26

本文共 1316 字,大约阅读时间需要 4 分钟。

在上一篇博客(python面向过程程序设计,网址:http://blog.csdn.net/sxingming/article/details/51260857)中,我们按照面向过程程序设计的思想,使用python编写了程序,追踪铅球在运行过程中的位置信息。下面,修改程序代码,导入turtle模块,将铅球的运行轨迹绘制出来。

python3代码如下:

from math import pi,sin,cos,radians

from turtle import Turtle
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)#铅球的初始速度在x轴上的分量
    yvel=vel*sin(theta)#铅球的初始速度在y轴上的分量
    #创建Turtle对象,刚创建的小乌龟对象,位于坐标原点(0,0),朝向x轴正方向
    t=Turtle()
    t.color('red')#设置画笔的颜色
    t.pensize(2)#线条粗细
    t.speed(2)#调整速度
    t.hideturtle()#隐藏小乌龟
    #绘制x轴和y轴
    t.forward(350)#绘制x轴
    t.goto(0,0)#回到坐标原点,准备绘制y轴
    t.goto(0,200)#绘制y轴
    
    print('the position:({0:.3f},{1:0.3f})'.format(xpos,ypos))
    xScale=25 # x坐标放大倍数
    yScale=30 # y坐标放大倍数
    #画笔移到铅球的起始位置,准备绘制铅球的运行轨迹
    t.goto(xpos*xScale,ypos*yScale)
    #通过while循环绘制铅球的运行轨迹,每隔time秒,取一个点,将所有取到的点连起来
    while ypos>=0:
        xpos=xpos+time*xvel
        yvel1=yvel-time*9.8
        ypos=ypos+time*(yvel+yvel1)/2.0
        yvel=yvel1
        print('the position:({0:.3f},{1:0.3f})'.format(xpos,ypos))
        t.goto(xpos*xScale,ypos*yScale)
    print('\nDistance traveled:{0:0.1f} meters.'.format(xpos))
if __name__=='__main__':
    main()

运行程序,输入输出如下:

绘制的铅球运行轨迹,如下:

(完)

你可能感兴趣的文章
js常用小知识点
查看>>
Java常用小知识点
查看>>
Java小知识点之lambda
查看>>
开源Java诊断工具Arthas简单使用说明
查看>>
深入理解Mysql索引底层数据结构与算法(二)
查看>>
IDEA自动去掉无用的import
查看>>
js数字转换成汉字
查看>>
MySQL不同存储引擎底层真正存储结构
查看>>
MySQL存储引擎底层常见面试题
查看>>
MySQL Explain执行计划详解
查看>>
索引最佳实践具体实例
查看>>
临时关闭MySQL缓存
查看>>
HBase学习和使用
查看>>
LSTM
查看>>
牛客网 数字游戏
查看>>
逆波兰表达式
查看>>
逆波兰表达式
查看>>
K-means中K值的选取
查看>>
kmeans优化算法
查看>>
牛客网 构造队列
查看>>