Exemple #1
0
 def __init__(self, mobject: Mobject, tracked_mobject: Mobject, **kwargs):
     self.tracked_mobject = tracked_mobject
     self.diff = op.sub(
         mobject.get_center(),
         tracked_mobject.get_center(),
     )
     super().__init__(mobject, **kwargs)
Exemple #2
0
    def __init__(self, mobject: Mobject, target_mobject: Mobject, **kwargs):
        digest_config(self, kwargs)
        assert (isinstance(mobject, self.mobject_type))
        assert (isinstance(target_mobject, self.mobject_type))
        source_map = self.get_shape_map(mobject)
        target_map = self.get_shape_map(target_mobject)

        # Create two mobjects whose submobjects all match each other
        # according to whatever keys are used for source_map and
        # target_map
        transform_source = self.group_type()
        transform_target = self.group_type()
        kwargs["final_alpha_value"] = 0
        for key in set(source_map).intersection(target_map):
            transform_source.add(source_map[key])
            transform_target.add(target_map[key])
        anims = [Transform(transform_source, transform_target, **kwargs)]
        # User can manually specify when one part should transform
        # into another despite not matching by using key_map
        key_mapped_source = self.group_type()
        key_mapped_target = self.group_type()
        for key1, key2 in self.key_map.items():
            if key1 in source_map and key2 in target_map:
                key_mapped_source.add(source_map[key1])
                key_mapped_target.add(target_map[key2])
                source_map.pop(key1, None)
                target_map.pop(key2, None)
        if len(key_mapped_source) > 0:
            anims.append(
                FadeTransformPieces(
                    key_mapped_source,
                    key_mapped_target,
                ))

        fade_source = self.group_type()
        fade_target = self.group_type()
        for key in set(source_map).difference(target_map):
            fade_source.add(source_map[key])
        for key in set(target_map).difference(source_map):
            fade_target.add(target_map[key])

        if self.transform_mismatches:
            anims.append(Transform(fade_source.copy(), fade_target, **kwargs))
        if self.fade_transform_mismatches:
            anims.append(
                FadeTransformPieces(fade_source, fade_target, **kwargs))
        else:
            anims.append(
                FadeOutToPoint(fade_source, target_mobject.get_center(),
                               **kwargs))
            anims.append(
                FadeInFromPoint(fade_target.copy(), mobject.get_center(),
                                **kwargs))

        super().__init__(*anims)

        self.to_remove = mobject
        self.to_add = target_mobject
Exemple #3
0
 def __init__(self, mobject: Mobject, point: np.ndarray, **kwargs):
     super().__init__(
         mobject,
         shift=point - mobject.get_center(),
         scale=0,
         **kwargs,
     )
Exemple #4
0
 def __init__(self, mobject: Mobject, point: np.ndarray, **kwargs):
     super().__init__(
         mobject,
         shift=mobject.get_center() - point,
         scale=np.inf,
         **kwargs,
     )
Exemple #5
0
 def __init__(self, mobject: Mobject, **kwargs):
     point = mobject.get_center()
     super().__init__(mobject, point, **kwargs)