用 VPython 构造一个简单的原子晶格 (Python 3.6.1)

Constructing a simple atomic lattice with VPython (Python 3.6.1)

我目前正在学习 Mark Newman 的计算物理学,但在使用 VPython 模块进行 3D 建模练习时遇到了一些问题。

我正在尝试构建一个简单的 L*L 晶格并使用 VPython 模块显示它。我是 运行 Python 3.6.1.

我的代码如下所示:

from vpython import sphere

L = 5 # lattice size
R = 0.3 # atom radius

for i in range(-L,L+1):
    for j in range(-L,L+1):
        for k in range(-L,L+1):
            sphere(pos=[i,j,k],radius=R)

我收到以下属性错误:

Traceback (most recent call last):
  File "C:\Users\xxx\Desktop\python\computational physics\web resources\lattice.py", line 7, in <module>
    sphere(pos=[i,j,k],radius=R)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages\vpython\vpython.py", line 1168, in __init__
    super(sphere, self).setup(args)
  File "C:\Users\xxx\AppData\Local\Programs\Python\Python36\lib\site-packages\vpython\vpython.py", line 631, in setup
    else: raise AttributeError(a+' must be a vector')
AttributeError: pos must be a vector

书中的示例使用了 visual 模块,所以我怀疑我的问题是由于我的 Python 版本和 V[=29] 之间存在一些兼容性问题=].

有什么方法可以修复我的代码,使其使用 VPython 显示格子吗?如果没有,是否有 VPython 的替代方案?

您需要创建一个向量: http://vpython.org/contents/docs/vector.html

首先,您必须通过

导入它
from vpython import vector

现在您将最后一行更改为

sphere(pos=vector(i,j,k),radius=R)

希望它能奏效!