예제 #1
0
    def finished(self):
        sorted_text = TextMobject("Sorted")
        sorted_text.move_to(2 * UP)
        self.add(sorted_text)

        for node in self.nodes:
            node.circle.set_color(GREEN)
예제 #2
0
 def build_text_and_circles(value, location):
     text_obj = TextMobject(str(value))
     text_obj.move_to(location)
     circle_obj = Circle()
     circle_obj.surround(text_obj)
     circle_obj.scale(1.5)
     return Node(text_obj, circle_obj, value)
예제 #3
0
    def sort(self):
        nodes_length = len(self.nodes)
        swapped = True
        nb_iterations = 1
        nb_iterations_text = None
        while swapped:
            self.remove(nb_iterations_text)
            nb_iterations_text = TextMobject("Iteration " + str(nb_iterations))
            nb_iterations_text.move_to(2 * UP)
            self.add(nb_iterations_text)

            swapped = False
            arrow = Arrow(UP + RIGHT)  # I don't get it
            arrow.scale(1)
            arrow.move_to(UP + 3 * LEFT)
            self.add(arrow)
            for i in range(nodes_length - 1):
                arrow.generate_target()
                arrow.target.move_to(self.nodes[i].circle.get_arc_center() +
                                     UP)
                self.play(MoveToTarget(arrow))
                if self.nodes[i + 1].value < self.nodes[i].value:
                    self.swap_nodes(i, i + 1)
                    swapped = True

            self.remove(arrow)
            nb_iterations = nb_iterations + 1
            self.wait(0.1)

        self.remove(nb_iterations_text)
예제 #4
0
    def get_table(elts_list,
                  buff_length=0.3,
                  cell_length=1,
                  cell_height=1,
                  line_color=WHITE,
                  text_color=WHITE,
                  background_color=BLACK):

        nb_l = len(elts_list)
        nb_c = len(elts_list[0])

        l_fill = 0.015

        table = VGroup()
        grid = VGroup()
        result = VGroup()

        rec = Polygon(
            (-cell_length / 2, cell_height / 2, 0),
            (-cell_length / 2 + (nb_c * cell_length), cell_height / 2, 0),
            (-cell_length / 2 + (nb_c * cell_length), cell_height / 2 -
             (nb_l) * cell_height, 0),
            (-cell_length / 2, cell_height / 2 - (nb_l) * cell_height, 0),
            mark_paths_closed=True,
            close_new_points=True,
            fill_color=background_color,
            fill_opacity=1,
            color=background_color)

        for i in range(nb_l):
            for j in range(nb_c):
                #elt = Text(elts_list[i][j],color = text_color, font = "Open Sans Bold Italic")

                if elts_list[i][j] != " ":  #TextMobject doesnt like " " strings
                    elt = TextMobject(elts_list[i][j], color=text_color)
                    elt.move_to([j * cell_length, -i * cell_height, 0])

                    table.add(elt)

        for i in range(nb_l + 1):

            # start_line_hor = (0, -i * cell_height,0) # + (-cell_length ,cell_height,0)
            # end_line_hor = ((nb_c * cell_length), -i * cell_height,0) # + (-cell_length ,cell_height,0)
            start_line_hor = (-cell_length / 2 - l_fill,
                              cell_height / 2 - i * cell_height, 0
                              )  # + ( ,cell_height,0)
            end_line_hor = (-cell_length / 2 + (nb_c * cell_length) + l_fill,
                            cell_height / 2 - i * cell_height, 0
                            )  # + (-cell_length ,cell_height,0)

            line_hor = Line(start=start_line_hor,
                            end=end_line_hor,
                            color=line_color)
            grid.add(line_hor)

        for j in range(nb_c + 1):
            start_line_ver = (-cell_length / 2 + j * cell_length,
                              cell_height / 2 + l_fill, 0
                              )  # (-cell_length ,cell_height,0)
            end_line_ver = (-cell_length / 2 + j * cell_length,
                            cell_height / 2 - (nb_l) * cell_height - l_fill, 0
                            )  # (-cell_length ,cell_height,0)

            line_ver = Line(start=start_line_ver,
                            end=end_line_ver,
                            color=line_color)
            grid.add(line_ver)

        #Rec = Rectangle()

        result.add(rec)
        result.add(table)
        result.add(grid)
        return result
예제 #5
0
 def finished(self):
     sorted_text = TextMobject("Sorted")
     sorted_text.move_to(2 * UP)
     self.add(sorted_text)