Manim 流体流动动画 5 个实验:一行向量场函数让粒子起舞

发布时间:2026/9/15 22:06:38
Manim 流体流动动画 5 个实验:一行向量场函数让粒子起舞 Manim 流体流动动画 5 个实验一行向量场函数让粒子起舞【免费下载链接】videosCode for the manim-generated scenes used in 3blue1brown videos项目地址: https://gitcode.com/GitHub_Trending/vi/videos一条向量场 lambda 函数就能指挥满屏粒子排出漩涡、波浪和喷泉3b1b/videos 仓库里的 fluid_flow.py 用 Manimmanimgl把 3Blue1Brown 数学视频中的流体流动动画做成了可交互的实验台。下面用 5 个实验带你逐个把玩向量场驱动粒子这件事先跑起来再换函数看效果。Manim 流体动画环境怎么搭起来装环境manimgl 需从源码安装3b1b 版 manim并配好 LaTeX拿代码git clone https://gitcode.com/GitHub_Trending/vi/videos在仓库根目录敲一条命令manimgl _2015/ka_playgrounds/fluid_flow.py VectorFieldExample -p-p是预览模式不渲染成片。窗口里先画出坐标轴、黄色箭头和蓝色粒子然后粒子群开始流动四个旋涡把粒子卷进角落中间的对角方向又向外甩整面屏像两股气旋在互相较劲。核心机制速览一行函数如何决定粒子运动self.use_function( lambda (x, y, z) : 0.5*((2*y)**3-9*(2*y))*RIGHT 0.5*((2*x)**3-9*(2*x))*UP ) self.add_dots(show_creationTrue) self.flow(run_time30, virtual_time3)FluidFlow 这个类先在平面撒下一整排蓝点再让每个点沿当前所在位置的转向牌挪动一小步一帧一帧挪出动画。lambda 就是那块转向牌传入坐标返回方向加快慢。virtual_time指走了多少物理时间run_time指视频多长两个比例就是播放速度。换个函数看流动怎么变5 张实验卡片实验 1绕原点转圈【运行】manimgl _2015/ka_playgrounds/fluid_flow.py ConstantPositiveCurl -p【现象】粒子绕原点做同心圆旋转一圈套一圈像浴缸里排水形成的漩涡谁也逃不出去。 【变量】转向函数里的系数0.5换成2转速加快圆变密换成0.1慢悠悠地转。实验 2波浪形剪切流【运行】manimgl _2015/ka_playgrounds/fluid_flow.py VectorFieldExampleTwo -p【现象】整排粒子向右平移上下速度不同规整的方格被拉成波浪状条纹——这就是剪切流水表层和底层滑得不一样快。 【变量】场景里流动是flow(run_time1)连跑 10 次把次数加到 30条纹拉得更长更碎。实验 3汇聚成一点【运行】manimgl _2015/ka_playgrounds/fluid_flow.py NegativeDivergenceExamlpe -p【现象】粒子从四面八方涌向原点近处粒子窜得飞快像地面水篦子吸走水洼圈里先画出一个黄圆当下水口。 【变量】转向函数开头那个负号换成正号立刻变成向外喷的喷泉也就是 PositiveDivergenceExample 的玩法。实验 4四漩涡系统【运行】manimgl _2015/ka_playgrounds/fluid_flow.py FourSwirlsWithoutCircles -p【现象】场里出现四个旋涡粒子被甩进两个对角旋涡并越转越贴另两个对角方向不断往外吐新粒子。 【变量】virtual_time从2改成10同样的 20 秒视频里粒子被卷得离圈更远、轨迹更夸张。实验 5鞍点分道扬镳【运行】manimgl _2015/ka_playgrounds/fluid_flow.py QuadraticField -p【现象】粒子沿两条对角线分道扬镳一条线上被吸走另一条线上被甩出去中间夹着不动的点这就是二次向量场里的鞍点。 【变量】rate_funclinear保持不变时把virtual_time从10减到3粒子只挪半步看得清谁进谁出。风格调节4 个改动最明显的参数dot_spacingCONFIG 默认0.5调小到0.25粒子更密纹理更细调大到1稀疏适合看清单个点的轨迹。vector_length默认0.5箭头统一缩放到这个长度调小箭头短而齐整看不出快慢想要看箭头长短读速度改调add_vectors(true_lengthTrue)箭头真实反映场强。vector_color/dot_color默认黄箭头配蓝点换个高对比配色漩涡方向更一眼可读。run_time与virtual_time的比值比值大慢动作看细节比值小快进看整体形态。探索路线图场景看点VectorFieldExample入场动画箭头、粒子、流动三件套齐全ConstantPositiveCurl最纯粹的旋转场同心圆轨迹NegativeDivergenceExamlpe汇聚与喷泉的对照类名保留原版拼写FourSwirlsWithoutCircles多旋涡 额外注入粒子DropletFlow高密度色块模拟像一滴墨入水渲染耗时较长粒子沿场移动这一步由 PhaseFlow 动画完成它随 manimlib 提供经由 manim_imports_ext.py 一并导入背景样式还能从 custom/backdrops.py 里挑。收尾与你的下一个场跑完 5 个场景应该已经摸清骨架满屏粒子的所有花样都来自那个 lambda——换函数就是换物理规则。现在轮到你写一个转向函数让粒子逆时针绕原点转圈且离原点越近速度越快把它塞进use_function再跑一次VectorFieldExample看看。提示速度方向取(-y*RIGHT x*UP)大小除以get_norm(p)就行。【免费下载链接】videosCode for the manim-generated scenes used in 3blue1brown videos项目地址: https://gitcode.com/GitHub_Trending/vi/videos创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考