Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from manim import *
- def area_rect(mob):
- height = np.linalg.norm(mob.get_right()[1] - mob.get_right()[0])
- width = np.linalg.norm(mob.get_right()[2] - mob.get_right()[1])
- s = height * width
- return s
- def counter(mob):
- S = area_rect(mob[0])
- for i in range(len(mob)):
- s = area_rect(mob = mob[i])
- S += s
- return S
- class GraphAreaPlot(Scene):
- def construct(self):
- ax = Axes(
- x_range=[-3, 3],
- y_range=[-1.5, 1.5],
- x_axis_config={
- "numbers_to_include": [-1, 1],
- "tip_width": 0.15,
- "tip_height": 0.15,
- "tick_size": 0.08
- },
- y_axis_config={
- "tip_width": 0.15,
- "tip_height": 0.15,
- "tick_size": 0.08
- }
- )
- labels = ax.get_axis_labels()
- # график функции
- graph = ax.plot(lambda x: np.cos(x), x_range=[-3, 3], color=BLUE_B)
- # Разбиения
- dx = ValueTracker(0.3)
- riemann_area = always_redraw(lambda:
- ax.get_riemann_rectangles(
- graph,
- x_range=[0, 0.5 * PI],
- dx=dx.get_value(),
- color=TEAL_A,
- fill_opacity=0.9,
- stroke_width=0.2,
- input_sample_type="right"
- )
- )
- # счетчик разбиений
- num = always_redraw(
- lambda: MathTex("n =", str(round(len(riemann_area), 0))
- ).to_edge(UR)
- )
- num[1].add_updater(
- lambda num: num.become(Tex(str(round(len(riemann_area), 0))).next_to(num[0], RIGHT, buff = 0.05)))
- # счетчик площади
- num_S = always_redraw(
- lambda: MathTex(
- "S =",
- str(round(counter(riemann_area), 2)
- )
- ).next_to(num, DOWN, aligned_edge=RIGHT))
- num_S[1].add_updater(
- lambda num: num.become(Tex(str(round(counter(riemann_area), 2))).next_to(num[0], RIGHT, buff = 0.05)))
- #
- area = ax.get_area(
- graph,
- [0, 0.5 * PI],
- color=(YELLOW, YELLOW),
- opacity=1,
- stroke_width=0
- )
- # анимации
- self.add(ax, labels)
- self.add(graph, riemann_area, num, num_S)
- self.play(dx.animate.set_value(0.2), run_time = 10)
- self.wait()
- # self.play(Create(graph), run_time = 1.5)
- # self.play(DrawBorderThenFill(riemann_area), run_time = 2.5, lag_ratio = 0.2)
- # self.play(FadeIn(num), FadeIn(num_S))
- # self.play(dx.animate.set_value(0.03), run_time = 10)
- # self.wait()
- # self.play(FadeOut(num, shift = DOWN), FadeOut(num_S, shift = DOWN))
- # self.play(ReplacementTransform(riemann_area, area), run_time = 2)
- # self.add(area)
- # self.remove(riemann_area)
- # self.wait(2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement