manim的学习指南(二)

前言

对于manim这个第三方模块我就是久仰大名,他是3b1b视频创作者开源的一款,具有独特风格的python第三方库,可以创作独特的数学视频,本人也是对这类视频风格很是偏爱,后续也是准备考研,准备在备考期间,每天分享一道考研题目,就是为了记录考研期间的枯燥生活,也是为自己的知识体系做一个可视化参照。

案例分析

代码展示

class Chi(Scene):
    def construct(self):
        tex_template = TexTemplate()
        tex_template.add_to_preamble(r"\usepackage{ctex}")  # 在模板中添加 ctex
​
        # 使用自定义模板渲染中文
        tex = Tex(r"""
        已知函数 $ f(x)=\ln \frac{x}{2-x}+a x+b(x-1)^{3} $。""", tex_template=tex_template, font_size=50,color = RED_D)
        
        
        # 问题部分
        question_tex_1 = Tex(r"""(1) 若 $ b=0 $,且 $ f^{\prime}(x) \geqslant 0 $,求 $ a $ 的最小值;"""
                        ,tex_template=tex_template, font_size=40,color = RED_D)
        
        question_tex_2 = Tex(r"""(2) 证明:曲线 $ y=f(x) $ 是中心对称图形;"""
                        ,tex_template=tex_template, font_size=40,color = RED_D)
​
        question_tex_3 = Tex(r"""(3) 若 $ f(x) > -2 $ 当且仅当 $ 1 < x < 2 $,求 $ b $
                                的取值范围。"""
                        ,tex_template=tex_template, font_size=40,color = RED_D)
​
​
        # 组合
        self.play(Write(tex))
        self.wait(1)
        
        self.play(tex.animate.shift(UP*3))
​
        
        conditions = VGroup(question_tex_1, question_tex_2, question_tex_3).arrange(DOWN, aligned_edge=LEFT, buff=0.5)
        conditions.next_to(tex, DOWN, aligned_edge=LEFT)  # 将条件放在公式下方,左对齐
​
        # 可选项:若需要,可以逐个显示每个条件,增加可读性
        for condition in conditions:
            self.play(Write(condition))
            self.wait(1)
​
        # 将所有的模块选中再进行平移命令
        all_tex = VGroup(tex,conditions)
        self.play(all_tex.animate.shift(LEFT*4).scale(0.5),)
        self.wait(1) 
​
%manim -pqh  Chi</pre>
我是在jupyter环境上面运行了,除了运行指令以外其余指令都是一模一样的,在PyCharm里面的运行命令是manim -pql python文件.py 类名

代码分析

tex_template = TexTemplate()
tex_template.add_to_preamble(r"\usepackage{ctex}") # 在模板中添加 ctex</pre>
  1. 在这段代码里面是为了导入latex的ctex这个模块他是支持latex中文显示,对于本地安转的中文字体库的朋友,可以选着直接使用Text这个指令他是支持直接显示中文的,对于我(在云服务器上面安转运行了)或者本地没有安装本地字体的可以选着使用Tex
    这段代码的主要功能就是实现的对问题文字的展示,其中TexVGroug这两个指令最为重要。首先Tex支持中文和公式同时渲染,对于展示数学问题,极为了友好,而前面提到了Text这个指令,它仅仅支持对于文字的渲染,不能同时渲染公式。
# 使用自定义模板渲染中文
      tex = Tex(r"""
      已知函数 $ f(x)=\ln \frac{x}{2-x}+a x+b(x-1)^{3} $。""", tex_template=tex_template, font_size=50,color = RED_D)
       
       
      # 问题部分
      question_tex_1 = Tex(r"""(1) 若 $ b=0 $,且 $ f^{\prime}(x) \geqslant 0 $,求 $ a $ 的最小值;"""
                      ,tex_template=tex_template, font_size=40,color = RED_D)
       
      question_tex_2 = Tex(r"""(2) 证明:曲线 $ y=f(x) $ 是中心对称图形;"""
                      ,tex_template=tex_template, font_size=40,color = RED_D)
​
      question_tex_3 = Tex(r"""(3) 若 $ f(x) > -2 $ 当且仅当 $ 1 &lt; x &lt; 2 $,求 $ b $
                              的取值范围。"""
                      ,tex_template=tex_template, font_size=40,color = RED_D)
​
​
      # 组合
      self.play(Write(tex))
      self.wait(1)
       
      self.play(tex.animate.shift(UP*3))
​
       
      conditions = VGroup(question_tex_1, question_tex_2, question_tex_3).arrange(DOWN, aligned_edge=LEFT, buff=0.5)
      conditions.next_to(tex, DOWN, aligned_edge=LEFT) # 将条件放在公式下方,左对齐
​
      # 可选项:若需要,可以逐个显示每个条件,增加可读性
      for condition in conditions:
          self.play(Write(condition))
          self.wait(1)</pre>

这段代码的主要功能就是实现的对问题文字的展示,其中TexVGroug这两个指令最为重要。首先Tex支持中文和公式同时渲染,对于展示数学问题,极为了友好,而前面提到了Text这个指令,它仅仅支持对于文字的渲染,不能同时渲染公式。

VGroug这个指令的作用是进行组合,把question_tex_num全部组合在一起

.arrange(DOWN, aligned_edge=LEFT, buff=0.5)这个指令的目的是让组合方式是向下的,行间距是0.5。展示效果类似于一行一行的对齐

.next_to(tex, DOWN, aligned_edge=LEFT)这个命令的目的是让组合移动到问题的下发,对齐方式还是左对齐。


for condition in conditions:
  self.play(Write(condition))
  self.wait(1)

这段代码实现的效果和目的:把组合物一行一行的方式展示出来,更美观也是更直观

3.最后一段代码

all_tex = VGroup(tex,conditions)
self.play(all_tex.animate.shift(LEFT*4).scale(0.5),)
self.wait(1)

再一次使用VGoup这个指令把全部问题组合成一个整体,再进行.animate.shift(LEFT*4).scale(0.5)指令进行平移间的缩放,展示效果如视频的最后一个阶段相似

最后总结

本次使用指令:

1.

tex_template = TexTemplate()
tex_template.add_to_preamble(r"\usepackage{ctex}")  # 在模板中添加 ctex

2.

Tex()   #传入latex语法,支持显示中文,也支持中文和公式一起显示

3.VGroup,组合命令

4.all_tex.animate.shift(LEFT*4).scale(0.5)对于组合类的平移缩放效果展示

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇