Итерация со списком черепах - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь симулировать черепаху лучами света, огибающими массивное тело. Я могу сделать это отлично только с одним световым лучом (черепахой), но я хочу сделать анимацию с 5 или 6 лучами. Я создал черепах и поместил их в список (я попробовал кортеж, та же проблема). Когда я перебираю список, анимация идет совершенно неправильно - все пути, описанные черепахами, одинаковы (5 из 6 ошибочно). Если я итерирую только с одной черепахой, путь будет правильным. Пожалуйста, помогите мне понять, что делать:

мой код итерации: фотоны - это черепахи.

fotons = [fot, fot2, fot3, fot4, fot5, fot6]
while (t < 0.1):
    for foton in fotons:
        x = foton.xcor()
        y = foton.ycor()
        r = foton.distance(bh.xcor(), bh.ycor())
        if r == 0:
            r = 1
        if r <= 20:
            foton.clear()
            foton.hideturtle()
            foton.reset()
        elif r > 20 and r < 22:
            d = foton.distance(bh.xcor(), bh.ycor())
            a = (30**2)/d
            ax = -a*x/d
            ay = -a*y/d
            vx = vx + ax*dt
            vy = vy + ay*dt
            x = x + vx*dt
            y = y + vy*dt
            foton.goto(x, y)
        if r >= 22:
            Fg = G*mfot*mbh/r**2
            a = Fg/mfot
            ax = -a*x/r
            ay = -a*y/r
            vx = vx + ax*dt
            vy = vy + ay*dt
            x = x + vx*dt
            y = y + vy*dt
            foton.goto(x, y)
    t += dt
...