Beispiel #1
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     if hasattr(self, 'kwargs'):
         self.kwargs = { **kwargs, **self.kwargs }
     else:
         self.kwargs = kwargs
     #### EULERTOUR_INIT_START ####
     self.transformations = []
     Container.__init__(self, **kwargs)
     self.submobjects = []
     self.color = Color(self.color)
     if self.name is None:
         self.name = self.__class__.__name__
     self.updaters = []
     self.updating_suspended = False
     self.reset_points()
     self.generate_points()
     self.init_colors()
     if 'template_tex_file_body' in self.kwargs:
         del self.kwargs['template_tex_file_body']
     #### EULERTOUR_INIT_END ####
     if "skip_registration" not in kwargs or not kwargs["skip_registration"]:
         register_mobject(self)
Beispiel #2
0
    def copy(self, delegate_for_original=False, copy_tag="Copy"):
        # TODO, either justify reason for shallow copy, or
        # remove this redundancy everywhere
        # return self.deepcopy()

        copy_mobject = copy.copy(self)
        copy_mobject.original = self
        copy_mobject.delegate_for_original = delegate_for_original
        copy_mobject.points = np.array(self.points)
        copy_mobject.submobjects = [
            submob.copy(
                delegate_for_original=delegate_for_original,
                copy_tag=copy_tag,
            ) for submob in self.submobjects
        ]
        copy_mobject.updaters = list(self.updaters)
        family = self.get_family()
        for attr, value in list(self.__dict__.items()):
            if isinstance(value, Mobject) and value in family and value is not self:
                setattr(copy_mobject, attr, value.copy(
                    delegate_for_original=delegate_for_original,
                    copy_tag=copy_tag,
                ))
            if isinstance(value, np.ndarray):
                setattr(copy_mobject, attr, np.array(value))
        if not hasattr(copy_mobject, "skip_registration") or not copy_mobject.skip_registration:
            register_mobject(copy_mobject, copy_tag=copy_tag)
        return copy_mobject
Beispiel #3
0
    def __init__(self, *tex_strings, **kwargs):
        #### EULERTOUR_INIT_START ####
        if not hasattr(self, "args"):
            self.args = serialize_args(tex_strings)
        if not hasattr(self, "config"):
            self.config = serialize_config({
                **kwargs,
            })
        #### EULERTOUR_INIT_START ####
        digest_config(self, kwargs)
        tex_strings = self.break_up_tex_strings(tex_strings)
        self.tex_strings = tex_strings
        SingleStringTexMobject.__init__(self,
                                        self.arg_separator.join(tex_strings),
                                        skip_registration=True,
                                        **kwargs)
        self.skip_registration = False
        self.break_up_by_substrings()
        self.set_color_by_tex_to_color_map(self.tex_to_color_map)

        if self.organize_left_to_right:
            self.organize_submobjects_left_to_right()
        if hasattr(self, 'kwargs'):
            self.kwargs = {
                'tex_strings': self.tex_strings,
                **kwargs,
                **self.kwargs
            }
        else:
            self.kwargs = {'tex_strings': self.tex_strings, **kwargs}
        #### EULERTOUR_INIT_END ####
        register_mobject(self)
Beispiel #4
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     RegularPolygon.__init__(self, n=3, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #5
0
 def __init__(self, *args, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(args)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Arrow.__init__(self, *args, **kwargs)
     self.add_tip(at_start=True)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #6
0
 def __init__(self, points, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([points])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     VMobject.__init__(self, **kwargs)
     self.set_points(points)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #7
0
 def __init__(self, *vertices, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(vertices)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     VMobject.__init__(self, **kwargs)
     self.set_points_as_corners([*vertices, vertices[0]])
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #8
0
 def __init__(self, point=ORIGIN, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'point': point,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Circle.__init__(self, arc_center=point, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #9
0
 def __init__(self, start_point, end_point, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([start_point, end_point])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     ArcBetweenPoints.__init__(self, start_point, end_point, **kwargs)
     self.add_tip()
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #10
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Rectangle.__init__(self, **kwargs)
     self.round_corners(self.corner_radius)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #11
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Triangle.__init__(self, **kwargs)
     self.set_width(self.length)
     self.set_height(self.length, stretch=True)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #12
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Polygon.__init__(self, UL, UR, DR, DL, **kwargs)
     self.set_width(self.width, stretch=True, add_transform=False)
     self.set_height(self.height, stretch=True, add_transform=False)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #13
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     VMobject.__init__(self, **kwargs)
     self.set_points_as_corners([UP, UP + RIGHT, RIGHT])
     self.set_width(self.width, about_point=ORIGIN)
     self.rotate(self.angle, about_point=ORIGIN)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #14
0
 def __init__(self, direction=RIGHT, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'direction': direction,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     if len(direction) == 2:
         direction = np.append(np.array(direction), 0)
     Arrow.__init__(self, ORIGIN, direction, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #15
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     if hasattr(self, 'kwargs'):
         self.kwargs = {**kwargs, **self.kwargs}
     else:
         self.kwargs = kwargs
     #### EULERTOUR_INIT_START ####
     Arc.__init__(self, 0, TAU, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #16
0
 def __init__(self, start_angle=0, angle=TAU / 4, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'start_angle': start_angle,
             'angle': angle,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     self.start_angle = start_angle
     self.angle = angle
     VMobject.__init__(self, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #17
0
 def __init__(self, start=LEFT, end=RIGHT, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'start': start,
             'end': end,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     digest_config(self, kwargs)
     self.set_start_and_end_attrs(start, end)
     VMobject.__init__(self, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #18
0
 def __init__(self, *vmobjects, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(vmobjects)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     if not all([isinstance(m, VMobject) for m in vmobjects]):
         raise Exception("All submobjects must be of type VMobject")
     VMobject.__init__(self, **kwargs)
     self.add(*vmobjects)
     #### EULERTOUR_INIT_END ####
     if "skip_registration" not in kwargs or not kwargs["skip_registration"]:
         register_mobject(self)
Beispiel #19
0
 def __init__(self, *args, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(args)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Line.__init__(self, *args, **kwargs)
     # TODO, should this be affected when
     # Arrow.set_stroke is called?
     self.initial_stroke_width = self.stroke_width
     self.add_tip()
     self.set_stroke_width_from_length()
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #20
0
 def __init__(self, vmob, alpha, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([vmob, alpha])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     digest_config(self, kwargs)
     da = self.d_alpha
     a1 = np.clip(alpha - da, 0, 1)
     a2 = np.clip(alpha + da, 0, 1)
     super().__init__(vmob.point_from_proportion(a1),
                      vmob.point_from_proportion(a2), **kwargs)
     self.scale(self.length / self.get_length())
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #21
0
 def __init__(self, *mobjects, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(mobjects)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     if hasattr(self, 'kwargs'):
         self.kwargs = { **kwargs, **self.kwargs }
     else:
         self.kwargs = kwargs
     #### EULERTOUR_INIT_START ####
     if not all([isinstance(m, Mobject) for m in mobjects]):
         raise Exception("All submobjects must be of type Mobject")
     Mobject.__init__(self, **kwargs)
     self.add(*mobjects)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #22
0
 def __init__(self, *args, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args(args)
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Line.__init__(self, *args, **kwargs)
     ps_ratio = self.positive_space_ratio
     num_dashes = self.calculate_num_dashes(ps_ratio)
     dashes = DashedVMobject(self,
                             num_dashes=num_dashes,
                             positive_space_ratio=ps_ratio)
     self.clear_points()
     self.add(*dashes)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #23
0
 def __init__(self, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             **kwargs,
         })
     if hasattr(self, 'kwargs'):
         self.kwargs = {**kwargs, **self.kwargs}
     else:
         self.kwargs = kwargs
     #### EULERTOUR_INIT_START ####
     digest_config(self, kwargs)
     Rectangle.__init__(self,
                        height=self.side_length,
                        width=self.side_length,
                        **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #24
0
 def __init__(self, start, end, angle=TAU / 4, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([start, end])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'angle': angle,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     Arc.__init__(
         self,
         angle=angle,
         **kwargs,
     )
     if angle == 0:
         self.set_points_as_corners([LEFT, RIGHT])
     self.put_start_and_end_on(start, end)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)
Beispiel #25
0
 def __init__(self, n=6, **kwargs):
     #### EULERTOUR_INIT_START ####
     if not hasattr(self, "args"):
         self.args = serialize_args([])
     if not hasattr(self, "config"):
         self.config = serialize_config({
             'n': n,
             **kwargs,
         })
     #### EULERTOUR_INIT_START ####
     digest_config(self, kwargs, locals())
     if self.start_angle is None:
         if n % 2 == 0:
             self.start_angle = 0
         else:
             self.start_angle = 90 * DEGREES
     start_vect = rotate_vector(RIGHT, self.start_angle)
     vertices = compass_directions(n, start_vect)
     Polygon.__init__(self, *vertices, **kwargs)
     #### EULERTOUR_INIT_END ####
     register_mobject(self)