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)
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)
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)
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
def finished(self): sorted_text = TextMobject("Sorted") sorted_text.move_to(2 * UP) self.add(sorted_text)