用 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)
希望它能奏效!
我目前正在学习 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)
希望它能奏效!