Маним: Как обновить функцию с заданным интервалом времени - PullRequest
0 голосов
/ 26 апреля 2020

В настоящее время я изучаю маним и пытаюсь воспроизвести анимацию рисования Фурье 3b1b. (https://www.youtube.com/watch?v=-qgreAUpPwM) У меня все настроено, и основы анимации работают. Единственная проблема, которая у меня есть, это то, что она не рисует нужную фигуру. В настоящее время я использую valuetracker для обновления функции. Чтобы получить правильную анимацию, я думаю, что мне нужно иметь постоянную «dt» между каждым обновлением, но я не знаю, как это реализовать. Я не уверен, является ли valuetracker правильным способом сделать это. Я пробовал использовать «dt», как в теореме Бетховена об обучении 8.3 (https://www.youtube.com/watch?v=J6qT8YZQeOw&t=506s). Не смог заставить его работать так же.

Вот код, который обновляет все объекты в анимации:

    def update_fct(c):  # Updating mobject
        for k in range(len(c)):
            c[k].become(c[k].start)
            for j in range(k):  # nth Circles rotates around all circles before
                c[k].rotate(TAU * values[j, 2] * alpha.get_value(), about_point=c[j].get_center())

            dots[k].move_to(circles[k].points[0])  # move dots to new position

            if k == N - 1:  # Only track path of last dot
                old_path = paths[k].copy()
                old_path.append_vectorized_mobject(Line(old_path.points[-1], dots[k].get_center()))
                old_path.make_smooth()
                paths[k].become(old_path)

            lines[k].put_start_and_end_on(circles[k].get_center(), dots[k].get_center())  # Update Arrow

    circles.add_updater(update_fct)

    self.add(circles,lines,paths[N-1])  # Only add circles, arrows and last path
    self.play(
        alpha.set_value, 1,
        rate_func=linear,
        run_time=10
    )
    circles.clear_updaters()
...