news 2026/7/4 1:58:08

画出动态数学」:让数学可视化触手可及的Manim入门课2025-11-0722.让你的动画“活”过来:Manim 节奏控制指南 (Rate Functions)2025-11-2323.M

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
画出动态数学」:让数学可视化触手可及的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(color=random_color()) # 现在:指定 seed=1,无论运行多少次,它永远是同一个颜色! rnd = RandomColorGenerator(seed=1) dot_a = Dot(radius=1, color=rnd.next()) dot_a.shift(LEFT * 2) # 即使在不同的地方调用,只要种子一样,颜色就一样 dot_b = Dot(radius=1, color=rnd.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], color=RED) l2 = Line([-2, 3, 0], [1, 2, 0], color=BLUE) # 创建切圆弧对象 # 参数说明: # - l1: 第一条切线 # - l2: 第二条切线 # - radius: 圆弧的半径(0.2) # - corner: 圆弧所在的角落方向 # - color: 圆弧的颜色(绿色) circulararc = TangentialArc(l1, l2, radius=0.2, corner=(-1, -1), color=GREEN) self.play(Create(l1), Create(l2)) self.play(Create(circulararc)) self.wait()

4. 🛠️ 其他值得关注的变化

除了上面三个新特性,还有一些改动也非常贴心:

  1. SurroundingRectangle 更灵活了
    以前buff参数只能是一个数字,导致矩形框的四周留白必须一样。现在你可以传入一个元组buff=(0.5, 0.1),分别控制水平垂直方向的间距。给长公式加框时再也不用担心左右太宽或者上下太挤了!
  2. Code Mobject 支持 OpenGL
    如果你是用 OpenGL 渲染模式(渲染速度超快的那种)的用户,现在Code对象也能完美显示了。
  3. 修复了 Tex 环境格式化问题
    LaTeX公式时如果不小心换行或者格式乱了,现在Manim能更好地处理它,报错更少。
  4. CLI 默认分辨率调整
    命令行工具的默认分辨率逻辑进行了一些微调,更加符合 1080p 的标准预期。

5. 📝 总结与升级

这次v0.19.1虽然版本号跨度不大,但每一个改动都切中了实际开发中的痛点。

特别是随机种子ValueTracker 算术支持,属于那种“用了就回不去”的优化。

升级Manim也很简单,打开终端/命令行,输入:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 2:04:52

VSCode Remote SSH 中 Codex 连接超时的排查与解决记录

VSCode Remote SSH 中 Codex 连接超时的排查与解决记录 1. 问题现象 本地 Windows 上 Codex 可以正常使用,但通过 VSCode Remote SSH 连接 Orange Pi 后,在远程环境里使用 Codex 会出现: request timed out远程机器是: Orange Pi …

作者头像 李华
网站建设 2026/7/4 17:42:14

新手买翡翠避坑指南:7个可落地的“硬核”核对标准

一句话结论:在扎根广东四会近40年的源头工厂臻世祥看来,买真翡翠戴好兆头,防坑的根本不是学故事,而是学会核对以下7项硬指标——凡是能把证书、复检、实拍、售后这些可核对材料摆在前面的商家,比只靠话术的更值得信任。…

作者头像 李华
网站建设 2026/7/4 17:13:31

One API:用一套接口调遍所有大模型

文章目录One API:用一套接口调遍所有大模型1、 它到底干了什么2、 解决了什么痛点3、 几个实用功能4、 部署方式5、 适合什么场景One API:用一套接口调遍所有大模型 one-api 在 GitHub 上已经拿到 35,273 Star 了。 这个项目解决的问题很具体&#xff…

作者头像 李华
网站建设 2026/7/4 1:13:04

死磕Spring Boot Validation校验

一、基本介绍 SpringBoot提供了方便的validation主要对输入数据进行校验,确保数据符合预期规则,是保证应用健壮性的重要手段, 1、Bean Validation:基于 JSR-380 (Bean Validation 2.0) 规范、 2、Hibernate Validator&#xff1a…

作者头像 李华