因此,我想使用可视包在Python中绘制一个简单的立方晶格。

我有一种简单的方法来制作带有均具有相同颜色的小球体的晶格,但我想改变颜色:要制成NaCl晶格,我需要使一种颜色的球体被6种其他颜色的球体包围。

所以我这样做:

from __future__ import division
from visual import sphere,color

L = 5
R = 0.3

even = []
odd = []

for i in range(-L,L+1):
    if i%2==0:
        even.append(i)
    else:
        odd.append(i)

for i in even:
    for j in even:
        for k in even:
            sphere(pos=[i,j+1,k+1],radius=R,color=color.green)

for i in odd:
    for j in odd:
        for k in odd:
            sphere(pos=[i,j,k],radius=R,color=color.yellow)


我得到一种颜色的球体,旁边是不同颜色的精子,但它们成行排列:



但是我需要它们交替:\正确的位置仅在i方向上。我如何纠正其他对象以制作简单的立方晶格?我尝试摆弄球的位置(i,j,k + -number),但是那样一来,我得到了密件抄送晶格(中间有一个绿色的球,周围有另一个绿色的球)。

我被困住了...

最佳答案

您需要的是:

from visual import sphere,color

count = 3
R=0.3

for x in range(-count,count+1):
    for y in range(-count,count+1):
        for z in range(-count,count+1):
            if ((x+y+z+3*count)%2) == 0:
                sphere(pos=[x,y,z],radius=R,color=color.green)
            else:
                sphere(pos=[x,y,z],radius=R,color=color.yellow)


关键是,您应该根据(整数,在这种情况下)坐标的和是否可以被2整除来切换颜色。

关于python - 在Python中绘制立方晶格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11373146/

10-12 20:25