如何在 manim 中为带有更新程序的行添加 buff

问题描述

我想在 manim 动画中的两个圆圈之间画一条线。我希望有一个 buff > 0 像这样,而且在动画期间也是如此。

enter image description here

如何在移动圆圈时保​​留此 buff

我现在使用的更新程序是

line1.add_updater(lambda m: m.put_start_and_end_on(circle1.get_center(),circle2.get_center()))

结果

enter image description here

MWE

使用 manim 社区版,pip install manim==0.3.0

from manim import *

class MWE(Scene):
    def construct(self):

        circle1 = Circle(radius=0.5).move_to(2*LEFT)
        circle2 = Circle(radius=0.5).move_to(2*RIGHT)
        line1 = Line(circle1,circle2,buff=0.25)

        self.play(FadeIn(circle1),FadeIn(circle2))
        self.play(GrowFromPoint(line1,line1.get_start()),run_time=1)

        self.wait(2)

        line1.add_updater(lambda m: m.put_start_and_end_on(circle1.get_center(),circle2.get_center()))
        circle1.add_updater(lambda m,dt: m.shift(dt*UP))

        self.wait(2)

有没有比手动计算点更简单的方法

编辑:

manimglmanim 中,我可以在创建行时使用 always_update 函数

line1 = always_redraw(lambda: Line(circle1,buff=0.25))

然而,虽然 manimgl 中的结果是正确的,但 manim 中的结果很奇怪。

enter image description here

manimgl 的正确结果:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...