在本地跑3Blue1Brown的数学动画:用Manim完整复现微积分可视化
【免费下载链接】videosCode for the manim-generated scenes used in 3blue1brown videos项目地址: https://gitcode.com/GitHub_Trending/vi/videos
本文带你逛一遍3Blue1Brown的videos仓库,它是该频道所有数学动画视频的官方开源代码,基于Manim库编写。花几分钟搭好环境后,你就能在本地渲染出《微积分的本质》系列的微积分可视化场景,亲眼看着导数从切线斜率里长出来。
Manim动画环境安装步骤
跑通这个仓库有一个前置条件:Manim要装对版本。这里用的是3b1b官方提供的manimgl命令,而不是社区版ManimCommunity,两个版本的API有差异,仓库里的代码直接跑在社区版上会报错。README里明确建议从源码安装manimgl,因为公开发布的包落后于最新代码。
另一个前置条件是LaTeX,场景里的数学公式靠它排版,Ubuntu上装好texlive相关组件即可。
两样都就绪后,克隆仓库,直接跑第一个场景:
git clone https://gitcode.com/GitHub_Trending/vi/videos cd videos manimgl _2017/eoc/chapter2.py GraphCarTrajectory三步渲染第一个导数场景
屏幕上出现什么
GraphCarTrajectory是《微积分的本质》开篇的经典一幕。先是小车沿时间轴行驶,同时坐标系上画出位移曲线s(t):小车从静止逐渐加速,曲线由平缓变得陡峭。接着一个半透明小矩形沿曲线左右滑动,底边是Δt,竖边是Δs,合起来就是那一秒内的平均速度。
核心是一个函数
矩形滑完全程后,画面调用get_derivative_graph()画出第二条曲线v(t),也就是位移曲线的导数。对应关系一目了然:位移曲线最陡的地方,速度曲线最高;位移曲线趋于平坦的地方,速度曲线落回零线附近。函数源码就在_2017/eoc/chapter2.py,相关场景代码大约在第455到528行。
继续探索微积分可视化场景
从割线到切线
同一个文件里还有SecantLineToTangentLine:连接曲线上两点的割线随着两点相互靠近不断转动,最终停在切线上。极限在课本里只是一个符号,在这里是一段看得见"越逼近、却到不了"的动态过程。
正方形与幂法则
_2017/eoc/chapter3.py换了一个角度:NudgeSideLengthOfSquare把正方形边长拉长一点点,多出来的面积近似是2x·dx加dx²的小条,幂法则由此自然浮现;DerivativeOfSineIsSlope则直接从单位圆上读出正弦曲线的斜率。视频里那只说话的蓝色π定义在custom/characters/pi_creature.py,场景统一通过manim_imports_ext.py导入Manim基础库和这套自定义组件。
自己动手渲染微积分动画
常规渲染之外,manimgl还有两个实用参数:
- 加
-p可在窗口里快速预览,不生成视频文件 - 加
-se 行号停在指定行进入交互模式,像调试器一样逐步执行场景 - 输出默认是4K、30fps,想省时间可以用分辨率参数降档渲染
看完导数场景后,下一步直接渲染_2017/eoc/chapter3.py里的NudgeSideLengthOfSquare:看着正方形边长被拉长、面积实时变化,验证你对幂法则的直觉和屏幕上的画面是否一致。
【免费下载链接】videosCode for the manim-generated scenes used in 3blue1brown videos项目地址: https://gitcode.com/GitHub_Trending/vi/videos
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考