def __init__( self, *mobjects: Mobject, shift: np.ndarray | None = None, target_position: np.ndarray | Mobject | None = None, scale: float = 1, **kwargs, ) -> None: if not mobjects: raise ValueError("At least one mobject must be passed.") if len(mobjects) == 1: mobject = mobjects[0] else: mobject = Group(*mobjects) self.point_target = False if shift is None: if target_position is not None: if isinstance(target_position, (Mobject, OpenGLMobject)): target_position = target_position.get_center() shift = target_position - mobject.get_center() self.point_target = True else: shift = ORIGIN self.shift_vector = shift self.scale_factor = scale super().__init__(mobject, **kwargs)