繁体   English   中英

python分配对象中的可视模块

[英]Visual module in python assign objects

我是python中的Visual模块中的新手,不是很了解如何为对象分配值。

from visual import *
stars=[]
galaxies=[]    
for i in range(10):
   stars+=[sphere('pos,radius,color.....')]
for j in range(20):
   galaxies+=[sphere('pos,radius,color......')]
for k in range(30):
   stars[k].pos=position[k] 
   galaxies[k].pos=G_position[k]

我只是不明白,通常,当python读取此代码时,列表将在for循环后完全完成,但是在导入可视模块后,这些球体可以显示在屏幕上,并通过最后一次for循环的每次迭代更新其位置!

或者我的问题还可能链接到可视模块中的“ show()”,“ print”,“ start the animation”语句的内容和位置,以及它是如何工作的? 我该如何使用?

有点像是在for循环中或完成后添加打印状态。

在此先感谢

首先是第一件事。 您的代码使用列表串联将内容添加到列表中。 最好使用列表的.append()方法。 同样,最后一个循环可以直接在对象上进行迭代,而无需使用索引。 这样更优雅,更容易理解。

以下伪代码与您的伪代码等效,但应用了上述更正:

from visual import *
stars = []
galaxies = []    
for i in  range(10):
   stars.append(sphere(...))
for j in range(20):
   galaxies.append(sphere(...))
for star, galaxy, starpos, galaxypos in zip(stars, galaxies, 
                                            position, G_position):
   star.pos = starpos
   galaxy.pos = galaxypos

有了这些,我可以解释视觉是如何工作的。

更改对象后,可视模块将立即更新屏幕。 动画是通过这种更改实时完成的,不需要show()start_animation() -它可以start_animation()进行。 您可以在python命令行上运行的示例:

>>> from visual import sphere
>>> s = sphere()

那条线创建了一个球体和一个窗口,并且已经在窗口中显示了该球体!!!

>>> s.x = -100

那条线将x轴上的球体位置更改为-100 更改立即在屏幕上发生。 在这条线运行之后,您会看到球形出现在窗口的左侧。

因此,动画是通过更改对象的值来发生的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM