def roles_of_dt(self):
    rects = self.rects
    next_rects = self.rect_list[3]
    morty = Mortimer().flip()
    morty.to_corner((DOWN + LEFT))
    int_dt = self.integral.get_part_by_tex('dt')
    dt_copy = int_dt.copy()
    self.play(FadeIn(morty))
    self.play(morty.change_mode, 'raise_right_hand', morty.look, (UP + RIGHT), dt_copy.next_to, morty.get_corner((UP + RIGHT)), UP, dt_copy.set_color, YELLOW)
    self.play(Blink(morty))
    self.play(ReplacementTransform(dt_copy.copy(), int_dt, run_time=2), morty.look_at, int_dt)
    self.wait(2)
    self.play(ReplacementTransform(dt_copy.copy(), self.dt_label), morty.look_at, self.dt_label)
    self.play(*[ApplyMethod(tick.shift, ((tick.get_height() * UP) / 2), run_time=2, rate_func=squish_rate_func(there_and_back, alpha, (alpha + 0.2))) for (tick, alpha) in zip(self.ticks, np.linspace(0, 0.8, len(self.ticks)))])
    self.wait()
    self.play(morty.change_mode, 'pondering', rects.set_fill, None, 0.75, *list(map(FadeOut, [dt_copy, self.v_t, self.v_t_brace])))
    rects.align_submobjects(next_rects)
    for every_other_rect in rects[::2]:
        every_other_rect.set_fill(opacity=0)
    self.play(self.dt_brace.stretch, 0.5, 0, self.dt_brace.move_to, self.dt_brace, LEFT, ReplacementTransform(rects, next_rects, run_time=2, lag_ratio=0.5), Transform(self.ticks, self.get_ticks(next_rects), run_time=2, lag_ratio=0.5))
    self.rects = rects = next_rects
    self.wait()
    self.play(Blink(morty))
    self.play(*([ApplyFunction((lambda r: r.shift((0.2 * UP)).set_fill(None, 1)), rect, run_time=2, rate_func=squish_rate_func(there_and_back, alpha, (alpha + 0.2))) for (rect, alpha) in zip(rects, np.linspace(0, 0.8, len(rects)))] + [morty.change_mode, 'thinking']))
    self.wait()
    self.morty = morty
def roles_of_dt(self):
    rects = self.rects
    next_rects = self.rect_list[3]
    morty = Mortimer().flip()
    morty.to_corner((DOWN + LEFT))
    int_dt = self.integral.get_part_by_tex('dt')
    dt_copy = int_dt.copy()
    self.play(FadeIn(morty))
    self.play(morty.change_mode, 'raise_right_hand', morty.look, (UP + RIGHT), dt_copy.next_to, morty.get_corner((UP + RIGHT)), UP, dt_copy.set_color, YELLOW)
    self.play(Blink(morty))
    self.play(ReplacementTransform(dt_copy.copy(), int_dt, run_time=2), morty.look_at, int_dt)
    self.wait(2)
    self.play(ReplacementTransform(dt_copy.copy(), self.dt_label), morty.look_at, self.dt_label)
    self.play(*[ApplyMethod(tick.shift, ((tick.get_height() * UP) / 2), run_time=2, rate_func=squish_rate_func(there_and_back, alpha, (alpha + 0.2))) for (tick, alpha) in zip(self.ticks, np.linspace(0, 0.8, len(self.ticks)))])
    self.wait()
    self.play(morty.change_mode, 'pondering', rects.set_fill, None, 0.75, *list(map(FadeOut, [dt_copy, self.v_t, self.v_t_brace])))
    rects.align_submobjects(next_rects)
    for every_other_rect in rects[::2]:
        every_other_rect.set_fill(opacity=0)
    self.play(self.dt_brace.stretch, 0.5, 0, self.dt_brace.move_to, self.dt_brace, LEFT, ReplacementTransform(rects, next_rects, run_time=2, lag_ratio=0.5), Transform(self.ticks, self.get_ticks(next_rects), run_time=2, lag_ratio=0.5))
    self.rects = rects = next_rects
    self.wait()
    self.play(Blink(morty))
    self.play(*([ApplyFunction((lambda r: r.shift((0.2 * UP)).set_fill(None, 1)), rect, run_time=2, rate_func=squish_rate_func(there_and_back, alpha, (alpha + 0.2))) for (rect, alpha) in zip(rects, np.linspace(0, 0.8, len(rects)))] + [morty.change_mode, 'thinking']))
    self.wait()
    self.morty = morty