Esempio n. 1
0
 def test_get_updaters(self):
     obj = Mobject()
     obj.add_updater(__func__)
     obj.add_updater(__func__)
     obj.add_updater(__func__)
     self.assertListEqual([__func__, __func__, __func__],
                          obj.get_updaters())
Esempio n. 2
0
 def test_add_updater(self):
     obj = Mobject()
     self.assertListEqual([], obj.updaters)
     obj.add_updater(__func__)
     self.assertListEqual([__func__], obj.updaters)
     obj.add_updater(__dt_func__)
     self.assertListEqual([__func__, __dt_func__], obj.updaters)
Esempio n. 3
0
 def test_update_children(self):
     a, b, c, obj = Mobject(), Mobject(), Mobject(), Mobject()
     a.add_updater(__func__)
     b.add_updater(__func__)
     c.add_updater(__func__)
     obj.add(a, b, c)
     obj.update()
     for sub in obj.submobjects:
         self.assertEqual("lambda", str(sub))
Esempio n. 4
0
 def test_match_updater_2(self):
     a, b = Mobject(), Mobject()
     a.add_updater(__func__)
     a.add_updater(__dt_func__)
     self.assertListEqual([__func__, __dt_func__], a.updaters)
     self.assertListEqual([], b.updaters)
     a.match_updaters(b)
     self.assertListEqual([], a.updaters)
     self.assertListEqual([], b.updaters)
Esempio n. 5
0
 def test_get_family_updater(self):
     a, b, c, obj = Mobject(), Mobject(), Mobject(), Mobject()
     obj.add(a, b, c)
     obj.add_updater(__func__)
     a.add_updater(__func__)
     b.add_updater(__func__)
     c.add_updater(__func__)
     self.assertListEqual([__func__, __func__, __func__, __func__],
                          obj.get_family_updaters())
Esempio n. 6
0
def move_along_vector_field(
    mobject: Mobject,
    func: Callable[[np.ndarray], np.ndarray]
) -> Mobject:
    mobject.add_updater(
        lambda m, dt: m.shift(
            func(m.get_center()) * dt
        )
    )
    return mobject
Esempio n. 7
0
def move_submobjects_along_vector_field(
        mobject: Mobject, func: Callable[[np.ndarray], np.ndarray]) -> Mobject:
    def apply_nudge(mob, dt):
        for submob in mob:
            x, y = submob.get_center()[:2]
            if abs(x) < FRAME_WIDTH and abs(y) < FRAME_HEIGHT:
                submob.shift(func(submob.get_center()) * dt)

    mobject.add_updater(apply_nudge)
    return mobject
Esempio n. 8
0
 def test_clear_updaters_in_children(self):
     a, b, c, obj = Mobject(), Mobject(), Mobject(), Mobject()
     obj.add(a, b, c)
     obj.add_updater(__func__)
     a.add_updater(__func__)
     b.add_updater(__func__)
     c.add_updater(__func__)
     self.assertListEqual([__func__, __func__, __func__, __func__],
                          obj.get_family_updaters())
     obj.clear_updaters()
     self.assertListEqual([], obj.get_family_updaters())
Esempio n. 9
0
def move_points_along_vector_field(
        mobject: Mobject, func: Callable[[float, float], Iterable[float]],
        coordinate_system: CoordinateSystem) -> Mobject:
    cs = coordinate_system
    origin = cs.get_origin()

    def apply_nudge(self, dt):
        mobject.apply_function(lambda p: p +
                               (cs.c2p(*func(*cs.p2c(p))) - origin) * dt)

    mobject.add_updater(apply_nudge)
    return mobject
Esempio n. 10
0
 def test_update_suspended(self):
     obj = Mobject(name="obj")
     obj.updating_suspended = True
     obj.add_updater(__func__)
     obj.update()
     self.assertEqual("obj", str(obj))
Esempio n. 11
0
def always_rotate(mobject: Mobject,
                  rate: float = 20 * DEGREES,
                  **kwargs) -> Mobject:
    mobject.add_updater(lambda m, dt: m.rotate(dt * rate, **kwargs))
    return mobject
Esempio n. 12
0
def always_shift(mobject: Mobject,
                 direction: np.ndarray = RIGHT,
                 rate: float = 0.1) -> Mobject:
    mobject.add_updater(lambda m, dt: m.shift(dt * rate * direction))
    return mobject
Esempio n. 13
0
 def test_update_no_dt(self):
     obj = Mobject()
     obj.add_updater(__func__)
     obj.update()
     self.assertEqual("lambda", obj.name)
Esempio n. 14
0
 def test_remove_no_updater(self):
     obj = Mobject()
     obj.add_updater(__func__)
     self.assertListEqual([__func__], obj.updaters)
     obj.remove_updater(__dt_func__)
     self.assertListEqual([__func__], obj.updaters)
Esempio n. 15
0
 def test_update_dt(self):
     obj = Mobject()
     obj.add_updater(__dt_func__)
     obj.update(dt=0.1)
     self.assertEqual("0.1", str(obj))
Esempio n. 16
0
 def test_add_updater_returns_self(self):
     obj = Mobject()
     self.assertEqual(obj, obj.add_updater(__func__))
Esempio n. 17
0
 def test_has_no_dt_updater(self):
     obj = Mobject()
     obj.add_updater(__func__)
     self.assertFalse(obj.has_time_based_updater())