Advertisement
NikaGreg

Untitled

May 27th, 2023
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.26 KB | None | 0 0
  1. from manim import *
  2.  
  3. # Площадь прямоугольников в группе
  4. def get_rects_area(group):
  5.     area = 0
  6.     for mob in group:
  7.         area += mob.width * mob.height
  8.     return area
  9.  
  10.  
  11. # правое оснащение
  12. class GraphAreaPlot_right(Scene):
  13.     def construct(self):
  14.         ax = Axes(
  15.             x_range=[-3, 3],
  16.             y_range=[-1.5, 1.5],
  17.             axis_config={
  18.                 "tip_width": 0.15,
  19.                 "tip_height": 0.15,
  20.                 "tick_size": 0.08
  21.             },
  22.             x_axis_config={"numbers_to_include": [-1, 1]},
  23.         )
  24.         labels = ax.get_axis_labels()
  25.         # график функции
  26.         graph = ax.plot(lambda x: np.cos(x), x_range=[-3, 3], color=BLUE_B)
  27.         # Разбиения
  28.         dx = ValueTracker(0.3)
  29.         riemann_area = always_redraw(lambda:
  30.             ax.get_riemann_rectangles(
  31.                 graph,
  32.                 x_range=[0, 0.5 * PI],
  33.                 dx=dx.get_value(),
  34.                 color=TEAL_A,
  35.                 fill_opacity=0.9,
  36.                 stroke_width=0.2,
  37.                 input_sample_type="right"
  38.             )
  39.         )
  40.         # Количество прямоугольников и их площадь
  41.         num = MathTex("n=").to_edge(UL)
  42.         area = MathTex("S=").next_to(num, DOWN, 0.3, LEFT)
  43.         num_value = always_redraw(
  44.             lambda: DecimalNumber(len(riemann_area), 0).next_to(num)
  45.         )
  46.         area_value = always_redraw(
  47.             lambda: DecimalNumber(get_rects_area(riemann_area)).next_to(area)
  48.         )
  49.         #
  50.         sum = ax.get_area(
  51.             graph,
  52.             [0, 0.5 * PI],
  53.             color=(YELLOW, YELLOW),
  54.             opacity=1,
  55.             stroke_width=0
  56.         )
  57.         # Анимация
  58.         self.add(ax, labels)
  59.         self.wait()
  60.         self.play(Create(graph), run_time = 1.5)
  61.         self.play(DrawBorderThenFill(riemann_area), run_time = 2.5, lag_ratio = 0.2)
  62.         self.play(
  63.             FadeIn(num),
  64.             FadeIn(num_value),
  65.             FadeIn(area),
  66.             FadeIn(area_value),
  67.         )
  68.         self.play(dx.animate.set_value(0.03), run_time = 10)
  69.         self.wait()
  70.         self.play(
  71.             FadeOut(num, shift = DOWN),
  72.             FadeOut(num_value, shift = DOWN),
  73.             FadeOut(area, shift = DOWN),
  74.             FadeOut(area_value, shift = DOWN),
  75.         )
  76.         self.play(ReplacementTransform(riemann_area, sum), run_time = 2)
  77.         self.add(sum)
  78.         self.remove(riemann_area)
  79.         self.wait(2)
  80.  
  81.  
  82. # среднее оснащение
  83. class GraphAreaPlot_center(Scene):
  84.     def construct(self):
  85.         ax = Axes(
  86.             x_range=[-3, 3],
  87.             y_range=[-1.5, 1.5],
  88.             axis_config={
  89.                 "tip_width": 0.15,
  90.                 "tip_height": 0.15,
  91.                 "tick_size": 0.08
  92.             },
  93.             x_axis_config={"numbers_to_include": [-1, 1]},
  94.         )
  95.         labels = ax.get_axis_labels()
  96.         # график функции
  97.         graph = ax.plot(lambda x: np.cos(x), x_range=[-3, 3], color=BLUE_B)
  98.         # Разбиения
  99.         dx = ValueTracker(0.3)
  100.         riemann_area = always_redraw(lambda:
  101.             ax.get_riemann_rectangles(
  102.                 graph,
  103.                 x_range=[0, 0.5 * PI],
  104.                 dx=dx.get_value(),
  105.                 color=TEAL_A,
  106.                 fill_opacity=0.9,
  107.                 stroke_width=0.2,
  108.                 input_sample_type="center"
  109.             )
  110.         )
  111.         # Количество прямоугольников и их площадь
  112.         num = MathTex("n=").to_edge(UL)
  113.         area = MathTex("S=").next_to(num, DOWN, 0.3, LEFT)
  114.         num_value = always_redraw(
  115.             lambda: DecimalNumber(len(riemann_area), 0).next_to(num)
  116.         )
  117.         area_value = always_redraw(
  118.             lambda: DecimalNumber(get_rects_area(riemann_area)).next_to(area)
  119.         )
  120.         #
  121.         sum = ax.get_area(
  122.             graph,
  123.             [0, 0.5 * PI],
  124.             color=(YELLOW, YELLOW),
  125.             opacity=1,
  126.             stroke_width=0
  127.         )
  128.         # Анимация
  129.         self.add(ax, labels)
  130.         self.wait()
  131.         self.play(Create(graph), run_time = 1.5)
  132.         self.play(DrawBorderThenFill(riemann_area), run_time = 2.5, lag_ratio = 0.2)
  133.         self.play(
  134.             FadeIn(num),
  135.             FadeIn(num_value),
  136.             FadeIn(area),
  137.             FadeIn(area_value),
  138.         )
  139.         self.play(dx.animate.set_value(0.03), run_time = 10)
  140.         self.wait()
  141.         self.play(
  142.             FadeOut(num, shift = DOWN),
  143.             FadeOut(num_value, shift = DOWN),
  144.             FadeOut(area, shift = DOWN),
  145.             FadeOut(area_value, shift = DOWN),
  146.         )
  147.         self.play(ReplacementTransform(riemann_area, sum), run_time = 2)
  148.         self.add(sum)
  149.         self.remove(riemann_area)
  150.         self.wait(2)
  151.  
  152.  
  153. # левое оснащение
  154. class GraphAreaPlot_left(Scene):
  155.     def construct(self):
  156.         ax = Axes(
  157.             x_range=[-3, 3],
  158.             y_range=[-1.5, 1.5],
  159.             axis_config={
  160.                 "tip_width": 0.15,
  161.                 "tip_height": 0.15,
  162.                 "tick_size": 0.08
  163.             },
  164.             x_axis_config={"numbers_to_include": [-1, 1]},
  165.         )
  166.         labels = ax.get_axis_labels()
  167.         # график функции
  168.         graph = ax.plot(lambda x: np.cos(x), x_range=[-3, 3], color=BLUE_B)
  169.         # Разбиения
  170.         dx = ValueTracker(0.3)
  171.         riemann_area = always_redraw(lambda:
  172.             ax.get_riemann_rectangles(
  173.                 graph,
  174.                 x_range=[0, 0.5 * PI],
  175.                 dx=dx.get_value(),
  176.                 color=TEAL_A,
  177.                 fill_opacity=0.9,
  178.                 stroke_width=0.2,
  179.                 input_sample_type="left"
  180.             )
  181.         )
  182.         # Количество прямоугольников и их площадь
  183.         num = MathTex("n=").to_edge(UL)
  184.         area = MathTex("S=").next_to(num, DOWN, 0.3, LEFT)
  185.         num_value = always_redraw(
  186.             lambda: DecimalNumber(len(riemann_area), 0).next_to(num)
  187.         )
  188.         area_value = always_redraw(
  189.             lambda: DecimalNumber(get_rects_area(riemann_area)).next_to(area)
  190.         )
  191.         #
  192.         sum = ax.get_area(
  193.             graph,
  194.             [0, 0.5 * PI],
  195.             color=(YELLOW, YELLOW),
  196.             opacity=1,
  197.             stroke_width=0
  198.         )
  199.         # Анимация
  200.         self.add(ax, labels)
  201.         self.wait()
  202.         self.play(Create(graph), run_time = 1.5)
  203.         self.play(DrawBorderThenFill(riemann_area), run_time = 2.5, lag_ratio = 0.2)
  204.         self.play(
  205.             FadeIn(num),
  206.             FadeIn(num_value),
  207.             FadeIn(area),
  208.             FadeIn(area_value),
  209.         )
  210.         self.play(dx.animate.set_value(0.03), run_time = 10)
  211.         self.wait()
  212.         self.play(
  213.             FadeOut(num, shift = DOWN),
  214.             FadeOut(num_value, shift = DOWN),
  215.             FadeOut(area, shift = DOWN),
  216.             FadeOut(area_value, shift = DOWN),
  217.         )
  218.         self.play(ReplacementTransform(riemann_area, sum), run_time = 2)
  219.         self.add(sum)
  220.         self.remove(riemann_area)
  221.         self.wait(2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement