2017-07-05 10 views
0

Ich arbeite derzeit meinen Weg durch Mark Newman Computational Physics und ich habe einige Probleme bei den Übungen zur 3D-Modellierung mit dem VPython-Modul aufgetreten.Konstruieren eines einfachen atomaren Gitters mit VPython (Python 3.6.1)

Ich versuche, ein einfaches L * L-Gitter zu konstruieren und es mit dem VPython-Modul anzuzeigen. Ich führe Python 3.6.1.

Mein Code sieht wie folgt aus:

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) 

Ich erhalte die folgende Attribut Fehler:

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 

Die Beispiele in dem Buch das visuelle Modul verwenden, so vermute ich, dass mein Problem zurückzuführen ist zu einigen Kompatibilitätsproblemen zwischen meiner Version von Python und VPython.

Gibt es eine Möglichkeit, meinen Code so zu reparieren, dass er das Gitter mit VPython anzeigt? Wenn nicht, gibt es eine Alternative zu VPython?

Antwort

0

Sie benötigen einen Vektor zu erstellen: http://vpython.org/contents/docs/vector.html

Zuerst müssen Sie es importieren über

from vpython import vector 

Jetzt haben Sie Ihre letzte Zeile

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

ändern, und es sollte hoffentlich Arbeit!