软件测试|手把手教你用Python来模拟绘制自由落体运动过程中的抛物线

举报
Tester_muller 发表于 2023/02/08 18:27:13 2023/02/08
【摘要】 学过高中物理的我们都知道,当我们在一定高度上以一定速度水平抛出一个物体时,物体的运动轨迹实际上就是一条抛物线,那么,我们如何用Python将这个抛物线绘制出来呢。 思路其实解决问题的关键点就是在于两点。其一是基于加速度公式,通过Python得到对应的x和y的点值;其二是针对这些点集进行作图。这里例举一种方法,肯定还有其他的方法的,也欢迎大家在评论区留言拍砖。 分析需要定义一个列表,用于存储物...

学过高中物理的我们都知道,当我们在一定高度上以一定速度水平抛出一个物体时,物体的运动轨迹实际上就是一条抛物线,那么,我们如何用Python将这个抛物线绘制出来呢。

思路

其实解决问题的关键点就是在于两点。其一是基于加速度公式,通过Python得到对应的x和y的点值;其二是针对这些点集进行作图。这里例举一种方法,肯定还有其他的方法的,也欢迎大家在评论区留言拍砖。

分析

需要定义一个列表,用于存储物体的坐标值,其中总高度我们可以自己自定义,之后水平上的位置和垂直高度的位置都可以通过相关公式进行计算,将每次计算得到的点集追加到列表之后,之后调用作图函数进行绘制抛物线,具体实现如下。

具体实现

直接上代码,如下所示:

# coding: utf-8
from matplotlib import pyplot as plt

def pwx(v, h):
    yx = []  # 定义一列表
    # 物体从高处位置为点50米的地方
    g = 9.8
    height = 5  # 这个是常量每运行一行为5米
    hh = 5*v  # 总高度
    for i in range(h):
        y = height
        height = y+5
        x = int(v*(2*y*(1/9.8))**0.5)
        yx.append((hh, x))
        hh -= 5
    return yx

def huaxian(yx):
    plt.title("Parabolic trajectory curve") 
    plt.xlabel("x") 
    plt.ylabel("y") 
    for y, x in yx:
        plt.plot(x, y, "*")
        print(y, x)
    plt.show()


def main():
    v = int(input("请输入初速度v:  "))
    h = int(input("请输入绘制行数h:  "))
    yx = pwx(v, h)
    huaxian(yx)


if __name__ == "__main__":
    main()

当在Pycharm中运行之后,输入初速度为10,绘制行数为10之后,程序就会自动跑起来,如下图所示:

在这里插入图片描述

之后matplotlib库会给我们呈现一个完美的抛物线图,如下图所示:

在这里插入图片描述

总结

本文只是简单的实现了使用Python绘制自由落体抛物线问题,还有一些不完美的地方,欢迎大家留言拍砖。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。