基于Pygame的原子模拟

2024-09-19 23:44:09 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我决定作为一项挑战,用Python模拟atom。起初,这对我来说似乎很简单——要画原子核,我只需在proton-neutron-proton-neutron模式中画一些圆,如下所示:

x o x o x
o x o x o
x o x o x
o x o x o
[...]

这可以通过以下代码简单地实现(为了简单起见,我的模拟中的nucleus将是正方形,但由圆形组成,nucleus只能有奇数个n_per_row(每行粒子数)):

def neutron_proton(n_per_row, number_of_particles):
    ret = []
    sub_vec = []
    x = 0
    for i in range(0, number_of_particles):
        if i % 2 == 0:
            sub_vec.append("proton")
        else:
            sub_vec.append("neutron")
        x += 1
        if x == n_per_row:
            ret.append(sub_vec)
            sub_vec = []
            x = 0

    return ret

很明显,这段代码存在一些问题:

  • 一个原子中不可能有偶数个粒子
  • 你不能指定一个原子中有多少质子或中子
  • 原子核总是正方形的 然而,我并不需要一个复杂的模型,更需要一个可以用来模拟氦原子的简单模型

但我有一个紧迫的问题——我需要让电子在轨道上围绕原子核旋转。我不知道如何在pygame中做到这一点。我发现了一个半有用的帖子,里面的答案使用了经典物理学,这对这个问题很好,但我想要更准确一点的答案。有一点特别重要,那就是答案使用的引力常数。我不知道电子和它各自的原子核的相对引力常数是多少。有人能帮我吗


Tags: 答案代码number粒子rowret原子neutron