ValueTracker

限定名称: manim.mobject.value_tracker.ValueTracker

class ValueTracker(value=0, **kwargs)[source]

基类: Mobject

一个可用于追踪(实数值)参数的mobject。对于动画参数变化很有用。

不用于显示。相反,其位置编码某个数字,通常是另一个动画或连续动画用于其更新函数的数字,通过将其视为mobject,它仍然可以像其他任何对象一样被动画和操作。

当使用 animate 语法进行动画时,此值会持续变化。

示例

示例: ValueTrackerExample

from manim import *

class ValueTrackerExample(Scene):
    def construct(self):
        number_line = NumberLine()
        pointer = Vector(DOWN)
        label = MathTex("x").add_updater(lambda m: m.next_to(pointer, UP))

        tracker = ValueTracker(0)
        pointer.add_updater(
            lambda m: m.next_to(
                        number_line.n2p(tracker.get_value()),
                        UP
                    )
        )
        self.add(number_line, pointer,label)
        tracker += 1.5
        self.wait(1)
        tracker -= 4
        self.wait(0.5)
        self.play(tracker.animate.set_value(5))
        self.wait(0.5)
        self.play(tracker.animate.set_value(3))
        self.play(tracker.animate.increment_value(-2))
        self.wait(0.5)
class ValueTrackerExample(Scene):
    def construct(self):
        number_line = NumberLine()
        pointer = Vector(DOWN)
        label = MathTex("x").add_updater(lambda m: m.next_to(pointer, UP))

        tracker = ValueTracker(0)
        pointer.add_updater(
            lambda m: m.next_to(
                        number_line.n2p(tracker.get_value()),
                        UP
                    )
        )
        self.add(number_line, pointer,label)
        tracker += 1.5
        self.wait(1)
        tracker -= 4
        self.wait(0.5)
        self.play(tracker.animate.set_value(5))
        self.wait(0.5)
        self.play(tracker.animate.set_value(3))
        self.play(tracker.animate.increment_value(-2))
        self.wait(0.5)

注意

您也可以将ValueTracker链接到更新器。在这种情况下,您必须确保ValueTracker通过 add 方法添加到场景中。

示例: ValueTrackerExample

from manim import *

class ValueTrackerExample(Scene):
    def construct(self):
        tracker = ValueTracker(0)
        label = Dot(radius=3).add_updater(lambda x : x.set_x(tracker.get_value()))
        self.add(label)
        self.add(tracker)
        tracker.add_updater(lambda mobject, dt: mobject.increment_value(dt))
        self.wait(2)
class ValueTrackerExample(Scene):
    def construct(self):
        tracker = ValueTracker(0)
        label = Dot(radius=3).add_updater(lambda x : x.set_x(tracker.get_value()))
        self.add(label)
        self.add(tracker)
        tracker.add_updater(lambda mobject, dt: mobject.increment_value(dt))
        self.wait(2)

方法

get_value (获取值)

获取此ValueTracker的当前值。

increment_value (增加值)

向ValueTracker增加(添加)一个标量值

interpolate (插值)

将自身转换为mobject1和mobject2之间的插值。

set_value (设置值)

为ValueTracker设置一个新的标量值

属性

animate (动画)

用于动画化 self 的任何方法的应用。

animation_overrides (动画覆盖)

depth (深度)

mobject 的深度。

height (高度)

mobject 的高度。

width (宽度)

mobject 的宽度。

_original__init__(value=0, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

get_value()[source]

获取此ValueTracker的当前值。

返回类型:

浮点数

increment_value(d_value)[source]

向ValueTracker增加(添加)一个标量值

参数:

d_value (float)

interpolate(mobject1, mobject2, alpha, path_func=<function interpolate>)[source]

将自身转换为mobject1和mobject2之间的插值。

set_value(value)[source]

为ValueTracker设置一个新的标量值

参数:

value (float)