为什么在某些情况下vpython无法显示多个球体?

时间:2020-04-03 20:22:56

标签: python 3d vpython 3d-modelling

我正在尝试用Python编写一种针对鸡群心态的模型-'boids'。我在使用vpython 3d建模时遇到问题,因为它似乎无法一次显示多个球体,除非它们在代码中彼此相邻。

我的代码的相关部分的基本内容是:

'([A-Za-z]^[^\(]+)'

我希望显示三个随机放置的球体,但我只能得到一个。我可以通过运行得到三个球体:

    def uniform_distr(x1, x2):
        x1, x2 = float(x1), float(x2)
        return x1 + random() * (x2 - x1)

    def random_position_vector():
        return vector(uniform_distr(-1, 1), uniform_distr(-1, 1), uniform_distr(-1, 1))

    def random_unit_vector():
        return norm(vector(random(), random(), random()))


    class Boid:
        def __init__(self,
                     initial_velocity = random_unit_vector(),
                     initial_position = random_position_vector()):

            self.velocity = initial_velocity

            self.position = initial_position

            self.model = sphere(pos = self.position, radius = 0.05, color = color.red,
                                    make_trail = False)


    boid_list = [Boid(), Boid(), Boid()]

造成此问题的原因是什么?我已经阅读了很多文档,但是看不到为什么以前的代码中只显示一个!

1 个答案:

答案 0 :(得分:0)

请提供一个小但有效的程序。我不知道您使用的是什么环境,但是我假设您使用的是VPython 7(Jupyter笔记本?Spyder?),并且您以

作为代码的开头

从vpython导入* 来自随机导入*

我从这些行开始构造了一个程序,接着是您的第一个代码,接着是3个球体语句,我看到了3个白色球体和1个红色球体。

对于VPython问题,最好将其发布到VPython论坛,在该论坛上,与您是否发布到stackoverflow相比,会有更多的VPython用户看到您的问题:

https://groups.google.com/forum/?fromgroups&hl=en#!forum/vpython-users