画出动态数学」:让数学可视化触手可及的Manim入门课2025-11-0722.让你的动画“活”过来:Manim 节奏控制指南 (Rate Functions)2025-11-2323.M 以前我们在使用random_color()时最大的痛点就是每次运行脚本生成的颜色都不一样有时候你觉得这次随机出来的配色方案简直完美结果改了一行无关代码再渲染配色变了……心态直接崩了有没有在v0.19.1中random_color()终于支持seed随机种子参数了这意味着你可以通过指定种子让随机颜色变得“确定”。 代码示例from manim import * class DeterministicColors(Scene): def construct(self): # 以前每次运行颜色都可能不同 # circle Circle(colorrandom_color()) # 现在指定 seed1无论运行多少次它永远是同一个颜色 rnd RandomColorGenerator(seed1) dot_a Dot(radius1, colorrnd.next()) dot_a.shift(LEFT * 2) # 即使在不同的地方调用只要种子一样颜色就一样 dot_b Dot(radius1, colorrnd.next()) dot_b.shift(RIGHT * 2) self.play(Create(dot_a), Create(dot_b)) self.wait()只要seed的值一样每次的随机的颜色都一样。这对于制作系列视频或者调试配色时简直是救命稻草。2. 亮点二ValueTracker 终于学会算术了ValueTracker是 Manim 中做动态数值动画的核心。但以前它有点“笨”不能直接参与加减乘除。比如你想让一个tracker的值翻倍以前你得写t.set_value(t.get_value() * 2)。现在则直接乘这就行了新版本支持,-,*,/,//,%,**等常见运算符。 代码示例from manim import * class SmartTracker(Scene): def construct(self): tracker ValueTracker(2) number DecimalNumber() number.add_updater(lambda m: m.set_value(tracker.get_value())) self.add(number) # 以前的写法现在依然可用但比较繁琐 # self.play(tracker.animate.set_value(tracker.get_value() 5)) # v0.19.1 的新玩法直接对对象进行操作 # 注意这里展示的是逻辑上的简化在非 animate 场景下处理数据更方便 # 比如我们在循环中处理数据逻辑时 tracker 5 # tracker 的内部值现在变成了 7 self.wait() # 甚至可以进行更复杂的运算 tracker * 2 # 变成 14 self.wait() # 注意如果你要用 animate 动画过渡还是推荐用 .animate.set_value() # 但这个特性让编写复杂的 updater 逻辑或者预计算变得非常爽。代码又可以少写几行get_value()了清爽度 1。3. 亮点三新增TangentialArc(切线弧)这是几何绘图的新玩具以前如果想画一段圆弧既要连接两个点又要保证切线方向平滑可能需要费点脑筋去算角度。新的TangentialArc旨在简化这类几何构造。目前官方文档还在完善中但它的出现意味着我们可以更容易地画出流畅连接直线或曲线的圆弧了。 代码场景如果你有一条直线想在末端接一个圆弧且连接处要是“丝滑”的切线连续。以前你得算切角现在可以试试使用TangentialArc。class TangentialArcSample(Scene): def construct(self): l1 Line([0, 3, 0], [1, 2, 0], colorRED) l2 Line([-2, 3, 0], [1, 2, 0], colorBLUE) # 创建切圆弧对象 # 参数说明 # - l1: 第一条切线 # - l2: 第二条切线 # - radius: 圆弧的半径0.2 # - corner: 圆弧所在的角落方向 # - color: 圆弧的颜色绿色 circulararc TangentialArc(l1, l2, radius0.2, corner(-1, -1), colorGREEN) self.play(Create(l1), Create(l2)) self.play(Create(circulararc)) self.wait()4. ️ 其他值得关注的变化除了上面三个新特性还有一些改动也非常贴心SurroundingRectangle 更灵活了以前buff参数只能是一个数字导致矩形框的四周留白必须一样。现在你可以传入一个元组buff(0.5, 0.1)分别控制水平和垂直方向的间距。给长公式加框时再也不用担心左右太宽或者上下太挤了Code Mobject 支持 OpenGL如果你是用 OpenGL 渲染模式渲染速度超快的那种的用户现在Code对象也能完美显示了。修复了 Tex 环境格式化问题写LaTeX公式时如果不小心换行或者格式乱了现在Manim能更好地处理它报错更少。CLI 默认分辨率调整命令行工具的默认分辨率逻辑进行了一些微调更加符合 1080p 的标准预期。5. 总结与升级这次v0.19.1虽然版本号跨度不大但每一个改动都切中了实际开发中的痛点。特别是随机种子和ValueTracker 算术支持属于那种“用了就回不去”的优化。升级Manim也很简单打开终端/命令行输入