def always_changing(self):
    dot = Dot()
    arrow = Arrow(LEFT, RIGHT)
    words = TextMobject('Always changing')
    group = VGroup(dot, arrow, words)

    def update_group(group, alpha):
        (dot, arrow, words) = group
        prop = interpolate(self.min_graph_proportion, self.max_graph_proportion, alpha)
        graph_point = self.v_graph.point_from_proportion(prop)
        dot.move_to(graph_point)
        x_val = self.x_axis.point_to_number(graph_point)
        angle = self.angle_of_tangent(x_val, self.v_graph)
        angle += (np.pi / 2)
        vect = rotate_vector(RIGHT, angle)
        arrow.rotate(((angle - arrow.get_angle()) + np.pi))
        arrow.shift(((graph_point + (MED_SMALL_BUFF * vect)) - arrow.get_end()))
        words.next_to(arrow.get_start(), UP)
        return group
    update_group(group, 0)
    self.play(Write(words), ShowCreation(arrow), DrawBorderThenFill(dot), run_time=1)
    self.play(UpdateFromAlphaFunc(group, update_group, rate_func=there_and_back, run_time=5))
    self.wait()
    self.play(FadeOut(group))
def always_changing(self):
    dot = Dot()
    arrow = Arrow(LEFT, RIGHT)
    words = TextMobject('Always changing')
    group = VGroup(dot, arrow, words)

    def update_group(group, alpha):
        (dot, arrow, words) = group
        prop = interpolate(self.min_graph_proportion, self.max_graph_proportion, alpha)
        graph_point = self.v_graph.point_from_proportion(prop)
        dot.move_to(graph_point)
        x_val = self.x_axis.point_to_number(graph_point)
        angle = self.angle_of_tangent(x_val, self.v_graph)
        angle += (np.pi / 2)
        vect = rotate_vector(RIGHT, angle)
        arrow.rotate(((angle - arrow.get_angle()) + np.pi))
        arrow.shift(((graph_point + (MED_SMALL_BUFF * vect)) - arrow.get_end()))
        words.next_to(arrow.get_start(), UP)
        return group
    update_group(group, 0)
    self.play(Write(words), ShowCreation(arrow), DrawBorderThenFill(dot), run_time=1)
    self.play(UpdateFromAlphaFunc(group, update_group, rate_func=there_and_back, run_time=5))
    self.wait()
    self.play(FadeOut(group))