AnimationsWithManim
AnimationsWithManim copied to clipboard
Function graphs to updaters
Hi everyone i don't know how to create this animation: add a decimal number "a", With the change of a, y also changes, y=a, and create a rectangular coordinate system with time as the horizontal axis and y as the vertical axis. Updater and ValueTracker seems to have no effect. Elteoremadebeethoven made a tutorial about updaters. (without graphs) But it's still hard to make this animation with graph. Here is my code:
class UpdaterTest9(GraphScene):
def construct(self):
# global number_value
numberplane = NumberPlane()
self.add(numberplane)
self.setup_axes()
line = Square()
line2 = Circle()
number = DecimalNumber(0, num_decimal_places=5)
# number.add_updater(lambda m: m.set_value(get_area(line)))
def number_updater(obj):
obj.add_updater(lambda m: m.set_value(get_area(line)))
# self.get_graph(lambda x: x.set_value(get_area(line)))
number.add_updater(number_updater)
# if number.get_value() != 0:
number_value = number.get_value()
graph = self.get_graph(
x_values=[0, number_value],
y_values=[0, number_value],
# func=lambda x: 0
func=number_value
)
graph.add_updater(number_updater)
self.add(number, graph)
self.play(Transform(line, line2), rate_func=linear, run_time=8)
self.wait(2)
class UpdaterTest10(GraphScene):
def construct(self):
# global number_value
numberplane = NumberPlane()
self.add(numberplane)
self.setup_axes()
line = Square()
line2 = Circle()
vt = ValueTracker(0)
number = DecimalNumber(0, num_decimal_places=5)
# numberv = ChangeDecimalToValue(decimal_mob=number)
# numberv = CountInDecimal()
# number.add_updater(lambda m: m.set_value(get_area(line)))
def number_updater(obj):
obj.add_updater(lambda m: m.set_value(vt.get_value(get_area(line))))
# self.get_graph(lambda x: x.set_value(get_area(line)))
number.add_updater(number_updater)
# if number.get_value() != 0:
number_value = number
# number_value.add_updater(lambda m: m.set_value(number))
def number_value_updater(obj):
obj.add_updater(lambda m: m.set_value(number))
# graph = self.get_graph(
# x_values=[],
# y_values=[],
# # func=lambda x: 0
# func=number_value_updater(obj)
#
# ).add_updater(number_value_updater)
graph = FunctionGraph(function=number_updater)
graph.add_updater(number_updater)
self.add(number, graph)
self.play(Transform(line, line2), rate_func=linear, run_time=8)
self.wait(2)