示例#1
0
    def construct(self):
        formula = TexMobject(*([
            "{%d \\over %d} \\cdot" % (wallis_numer(n), wallis_denom(n))
            for n in range(1, self.n_terms + 1)
        ] + ["\\cdots"]))
        result = TexMobject("=", "{\\pi \\over 2}")
        result.scale(2)
        pi = result[-1][0]
        pi.set_color(YELLOW)
        circle = Circle(color=YELLOW)
        circle.surround(pi)
        question = TexMobject("?", color=YELLOW)
        question.scale(2).next_to(circle, RIGHT, buff=0.4)
        result_group = VGroup(result, circle, question)
        result_group.next_to(formula, DOWN)
        group = VGroup(formula, result_group)
        group.center().set_width(10)
        bg_rect = BackgroundRectangle(group, fill_opacity=0.5, buff=0.2)

        random_walks = VGroup(*[
            RandomWalk1DArrow(random_walk_string(30), step_size=0.5)
            for k in range(self.n_walks)
        ])
        for k, walk in enumerate(random_walks):
            walk.shift(random.randrange(-5, 5) * 2 * walk.step_size * UP)
        random_walks.center()

        text = TextMobject(self.part).scale(3).set_color(YELLOW)
        text.to_corner(RIGHT + DOWN)

        self.add(random_walks)
        self.add(FullScreenFadeRectangle())
        self.add(bg_rect, group, text)
示例#2
0
文件: mobject.py 项目: mosincos/manim
 def add_background_rectangle(self, color=BLACK, opacity=0.75, **kwargs):
     from mobject.shape_matchers import BackgroundRectangle
     self.background_rectangle = BackgroundRectangle(
         self, color=color,
         fill_opacity=opacity,
         **kwargs
     )
     self.add_to_back(self.background_rectangle)
     return self
示例#3
0
 def add_background_rectangle(self):
     #TODO, is this the best way to handle
     #background rectangles?
     self.background_rectangle = BackgroundRectangle(self)
     self.submobjects = [
         self.background_rectangle,
         VGroup(*self.submobjects)
     ]
     return self
示例#4
0
 def add_background_rectangle(self, color=BLACK, opacity=0.75, **kwargs):
     # TODO, this does not behave well when the mobject has points,
     # since it gets displayed on top
     from mobject.shape_matchers import BackgroundRectangle
     self.background_rectangle = BackgroundRectangle(self,
                                                     color=color,
                                                     fill_opacity=opacity,
                                                     **kwargs)
     self.add_to_back(self.background_rectangle)
     return self
示例#5
0
def vector_coordinate_label(vector_mob, integer_labels=True,
                            n_dim=2, color=WHITE):
    vect = np.array(vector_mob.get_end())
    if integer_labels:
        vect = np.round(vect).astype(int)
    vect = vect[:n_dim]
    vect = vect.reshape((n_dim, 1))
    label = Matrix(vect, add_background_rectangles_to_entries=True)
    label.scale(VECTOR_LABEL_SCALE_FACTOR)

    shift_dir = np.array(vector_mob.get_end())
    if shift_dir[0] >= 0:  # Pointing right
        shift_dir -= label.get_left() + DEFAULT_MOBJECT_TO_MOBJECT_BUFFER * LEFT
    else:  # Pointing left
        shift_dir -= label.get_right() + DEFAULT_MOBJECT_TO_MOBJECT_BUFFER * RIGHT
    label.shift(shift_dir)
    label.set_color(color)
    label.rect = BackgroundRectangle(label)
    label.add_to_back(label.rect)
    return label
示例#6
0
 def add_background_rectangle(self):
     self.background_rectangle = BackgroundRectangle(self)
     self.add_to_back(self.background_rectangle)