def show_specific_rectangle(self):
    rects = self.rects
    rect = rects[4].copy()
    rect_top = Line(rect.get_corner((UP + LEFT)), rect.get_corner((UP + RIGHT)), color=self.v_graph.get_color())
    t_vals = [1, 1.25]
    t_labels = VGroup(*[TexMobject(('t=%s' % str(t))) for t in t_vals])
    t_labels.scale(0.7)
    t_labels.next_to(rect, DOWN)
    for (vect, label) in zip([LEFT, RIGHT], t_labels):
        label.shift((1.5 * vect))
        label.add(Arrow(label.get_edge_center((- vect)), rect.get_corner((DOWN + vect)), buff=SMALL_BUFF, tip_length=0.15, color=WHITE))
    v_lines = VGroup()
    h_lines = VGroup()
    height_labels = VGroup()
    for t in t_vals:
        v_line = self.get_vertical_line_to_graph(t, self.v_graph, color=YELLOW)
        y_axis_point = (self.graph_origin[0] * RIGHT)
        y_axis_point += (v_line.get_end()[1] * UP)
        h_line = DashedLine(v_line.get_end(), y_axis_point)
        label = TexMobject(('%.1f' % v_func(t)))
        label.scale(0.5)
        label.next_to(h_line, LEFT, SMALL_BUFF)
        v_lines.add(v_line)
        h_lines.add(h_line)
        height_labels.add(label)
    circle = Circle(radius=0.25, color=WHITE)
    circle.move_to(rect.get_top())
    self.play(rects.set_fill, None, 0.25, Animation(rect))
    self.wait()
    for label in t_labels:
        self.play(FadeIn(label))
    self.wait()
    for (v_line, h_line, label) in zip(v_lines, h_lines, height_labels):
        self.play(ShowCreation(v_line))
        self.play(ShowCreation(h_line))
        self.play(Write(label, run_time=1))
        self.wait()
    self.wait()
    t_label_copy = t_labels[0].copy()
    self.play(t_label_copy.scale, (1.0 / 0.7), t_label_copy.next_to, self.v_graph_label, (DOWN + LEFT), 0)
    self.wait()
    self.play(FadeOut(t_label_copy))
    self.wait()
    self.play(ShowCreation(circle))
    self.play(ShowCreation(rect_top))
    self.play(FadeOut(circle))
    rect.add(rect_top)
    self.wait()
    for x in range(2):
        self.play(rect.stretch_to_fit_height, v_lines[1].get_height(), rect.move_to, rect.get_bottom(), DOWN, Animation(v_lines), run_time=4, rate_func=there_and_back)
    self.play(*list(map(FadeOut, [group[1] for group in (v_lines, h_lines, height_labels)])))
    self.play(v_lines[0].set_color, RED, rate_func=there_and_back)
    self.wait()
    area = TextMobject('7$\\frac{\\text{m}}{\\text{s}}$', '$\\times$', '0.25s', '=', '1.75m')
    area.next_to(rect, RIGHT, LARGE_BUFF)
    arrow = Arrow(area.get_left(), rect.get_center(), buff=0, color=WHITE)
    area.shift((SMALL_BUFF * RIGHT))
    self.play(Write(area), ShowCreation(arrow))
    self.wait(2)
    self.play(*list(map(FadeOut, [area, arrow, v_lines[0], h_lines[0], height_labels[0], rect, t_labels])))
def show_specific_rectangle(self):
    rects = self.rects
    rect = rects[4].copy()
    rect_top = Line(rect.get_corner((UP + LEFT)), rect.get_corner((UP + RIGHT)), color=self.v_graph.get_color())
    t_vals = [1, 1.25]
    t_labels = VGroup(*[TexMobject(('t=%s' % str(t))) for t in t_vals])
    t_labels.scale(0.7)
    t_labels.next_to(rect, DOWN)
    for (vect, label) in zip([LEFT, RIGHT], t_labels):
        label.shift((1.5 * vect))
        label.add(Arrow(label.get_edge_center((- vect)), rect.get_corner((DOWN + vect)), buff=SMALL_BUFF, tip_length=0.15, color=WHITE))
    v_lines = VGroup()
    h_lines = VGroup()
    height_labels = VGroup()
    for t in t_vals:
        v_line = self.get_vertical_line_to_graph(t, self.v_graph, color=YELLOW)
        y_axis_point = (self.graph_origin[0] * RIGHT)
        y_axis_point += (v_line.get_end()[1] * UP)
        h_line = DashedLine(v_line.get_end(), y_axis_point)
        label = TexMobject(('%.1f' % v_func(t)))
        label.scale(0.5)
        label.next_to(h_line, LEFT, SMALL_BUFF)
        v_lines.add(v_line)
        h_lines.add(h_line)
        height_labels.add(label)
    circle = Circle(radius=0.25, color=WHITE)
    circle.move_to(rect.get_top())
    self.play(rects.set_fill, None, 0.25, Animation(rect))
    self.wait()
    for label in t_labels:
        self.play(FadeIn(label))
    self.wait()
    for (v_line, h_line, label) in zip(v_lines, h_lines, height_labels):
        self.play(ShowCreation(v_line))
        self.play(ShowCreation(h_line))
        self.play(Write(label, run_time=1))
        self.wait()
    self.wait()
    t_label_copy = t_labels[0].copy()
    self.play(t_label_copy.scale, (1.0 / 0.7), t_label_copy.next_to, self.v_graph_label, (DOWN + LEFT), 0)
    self.wait()
    self.play(FadeOut(t_label_copy))
    self.wait()
    self.play(ShowCreation(circle))
    self.play(ShowCreation(rect_top))
    self.play(FadeOut(circle))
    rect.add(rect_top)
    self.wait()
    for x in range(2):
        self.play(rect.stretch_to_fit_height, v_lines[1].get_height(), rect.move_to, rect.get_bottom(), DOWN, Animation(v_lines), run_time=4, rate_func=there_and_back)
    self.play(*list(map(FadeOut, [group[1] for group in (v_lines, h_lines, height_labels)])))
    self.play(v_lines[0].set_color, RED, rate_func=there_and_back)
    self.wait()
    area = TextMobject('7$\\frac{\\text{m}}{\\text{s}}$', '$\\times$', '0.25s', '=', '1.75m')
    area.next_to(rect, RIGHT, LARGE_BUFF)
    arrow = Arrow(area.get_left(), rect.get_center(), buff=0, color=WHITE)
    area.shift((SMALL_BUFF * RIGHT))
    self.play(Write(area), ShowCreation(arrow))
    self.wait(2)
    self.play(*list(map(FadeOut, [area, arrow, v_lines[0], h_lines[0], height_labels[0], rect, t_labels])))