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)
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
def __init__(self, mobject: Mobject, point: np.ndarray, **kwargs): super().__init__( mobject, shift=point - mobject.get_center(), scale=0, **kwargs, )
def __init__(self, mobject: Mobject, point: np.ndarray, **kwargs): super().__init__( mobject, shift=mobject.get_center() - point, scale=np.inf, **kwargs, )
def __init__(self, mobject: Mobject, **kwargs): point = mobject.get_center() super().__init__(mobject, point, **kwargs)