Manim物理动画教程:4个最小场景让力学与电磁学动起来
Manim物理动画教程4个最小场景让力学与电磁学动起来【免费下载链接】manimA community-maintained Python framework for creating mathematical animations.项目地址: https://gitcode.com/GitHub_Trending/man/manimManim 是一个社区维护的 Python 数学动画框架核心能力是把公式、几何和运动过程渲染成视频。用 Manim 做物理动画的关键不是找什么物理引擎而是想明白一件事动画里没有真实的力学求解器所有运动都是你亲手写的参数方程Manim 只负责逐帧画出来。想通这一点剩下的就是把Sphere、ValueTracker、TracedPath这几个现成组件拼起来。第一帧三维画面ThreeDScene 与 Sphere 快速上手物理动画的第一步是搭舞台。三维场景必须继承ThreeDScene而不是普通的Scene源码在 manim/scene/three_d_scene.py。它比Scene多了两个东西三维相机以及一个set_camera_orientation方法用来控制相机的极角phi、方位角theta、缩放和焦距——相当于给画面摆机位。基础几何体在 manim/mobject/three_d/three_dimensions.py 里Sphere、Cube、Cylinder、Plane都是现成的。注意Sphere只接受几何参数center、radius、resolution等并没有质量摩擦系数这类物理属性——质量这些量要放在你自己的变量里算别指望塞给图形对象。from manim import * class FirstFrame(ThreeDScene): def construct(self): # phi/theta 决定相机朝向先摆好机位 self.set_camera_orientation(phi75 * DEGREES, theta45 * DEGREES) ground Plane(colorGREY_B, opacity0.5) ball Sphere(center[0, 0, 1], radius0.3) ball.set_color(RED) self.add(ground, ball) self.wait()渲染命令直接manim -qm FirstFrame.py FirstFrame即可-qm是低质量快速预览。如果机位不对只调phi和theta两个角就行其他参数默认值够用。让小球动起来ValueTracker 与 add_updater 模拟抛体运动第一帧只是静态的。要让球沿抛物线飞核心思路是用一个ValueTracker装时间再用 updater 函数在每个渲染帧里根据当前时间算出位置。ValueTracker的源码在 manim/mobject/value_tracker.py它本质上是一个可以被.animate平滑改变数值的 mobject而add_updater是 mobject 的通用方法挂在上面的回调每帧都会被调用一次。轨迹用TracedPath免费获得它在 manim/animation/changing.py 中只需要传一个取点函数比如ball.get_center它会自动跟着物体描出一条线class ProjectileMotion(ThreeDScene): def construct(self): self.set_camera_orientation(phi75 * DEGREES, theta45 * DEGREES) ball Sphere(radius0.2) ball.set_color(RED) trace TracedPath(ball.get_center, stroke_colorRED) v0, angle, g 5, 45 * DEGREES, 9.8 vx, vz v0 * np.cos(angle), v0 * np.sin(angle) t ValueTracker(0) def follow_physics(mob): now t.get_value() pos [vx * now, 0, 1 vz * now - 0.5 * g * now ** 2] if pos[2] 0: # 落地即停最朴素的碰撞处理 pos[2] 0 mob.move_to(pos) ball.add_updater(follow_physics) self.add(trace, ball) # 把时间从 0 推到 2 秒linear 保证时间均匀流逝 self.play(t.animate.set_value(2), run_time3, rate_funclinear) ball.clear_updaters() # 别忘了摘掉 updater self.wait()两个细节值得记住一是rate_funclinear默认缓动函数会让时间忽快忽慢物理过程就必须用线性二是TracedPath和带 updater 的物体会持续消耗算力演示结束一定要clear_updaters()。 同一套模式换个公式就是自由落体、圆周运动或行星轨道——方程换掉updater 不用动。用 ParametricFunction 绘制电场线电磁学可视化里电场线本质是一族参数曲线。ParametricFunction定义在 manim/mobject/graphing/functions.py传入t_range和取点函数就能把参数方程直接画成 mobject二维三维通用。以正点电荷的径向电场为例电场线就是从球面沿各个方向向外射出的射线用球坐标展开即可class ElectricFieldLines(ThreeDScene): def construct(self): self.set_camera_orientation(phi60 * DEGREES, theta45 * DEGREES) charge Sphere(radius0.3) charge.set_color(YELLOW) def make_line(azimuth): def curve(u): # u 从 0 到 1半径向外生长 r 0.5 2.0 * u return [r * np.cos(azimuth), r * np.sin(azimuth), 0] return curve lines VGroup(*[ ParametricFunction(make_line(TAU * i / 12), t_range[0, 1], colorBLUE) for i in range(12) ]) self.add(charge, lines) self.play(Rotate(lines, angleTAU, about_pointORIGIN), run_time8, rate_funclinear)磁感线、双电荷的偶极场都是同样套路先按物理规律写出参数方程再用ParametricFunction批量生成。涉及公式展示时MathTex(r\vec{F} q(\vec{E} \vec{v} \times \vec{B}))这类矢量表达式用默认 TeX 模板就能渲染模板细节可参考 manim/utils/tex_templates.py。完整案例30 行代码实现阻尼弹簧振子把前面的积木组合起来一个质量块、一根动态更新的弹簧、一条衰减的正弦曲线。核心是阻尼振动解析解x(t) A·e^(-bt/2m)·cos(ωt)用 updater 把它逐帧贴到弹簧和物块上。这段代码可以直接保存运行class SpringOscillation(Scene): def construct(self): mass Square(side_length0.5, fill_colorBLUE, fill_opacity1) mass.move_to([0, 3, 0]) A, b, m, k 2.0, 0.3, 1.0, 2.0 omega np.sqrt(k / m) def damped_x(now): return A * np.exp(-b * now / (2 * m)) * np.cos(omega * now) t ValueTracker(0) def update_spring(mob): y 3 damped_x(t.get_value()) mob.become(Line([0, 0, 0], [0, y - 0.25, 0], colorGREEN)) def update_mass(mob): mob.move_to([0, 3 damped_x(t.get_value()), 0]) spring Line([0, 0, 0], mass.get_bottom(), colorGREEN) spring.add_updater(update_spring) mass.add_updater(update_mass) self.add(spring, mass) self.play(t.animate.set_value(6), run_time8, rate_funclinear) spring.clear_updaters() mass.clear_updaters() self.wait()如果觉得只有物块在晃不够直观可以在旁边挂一个Axes同步绘制x-t曲线——把damped_x(t.get_value())写进一个FunctionGraph的 updater 即可具体轴配置可参考官方示例 example_scenes/basic.py。Manim 物理动画常见避坑与调优建议⚠️ 几个新手最容易踩的坑场景基类写错任何带Sphere、Plane等三维物体和相机操作的场景都必须继承ThreeDScene普通Scene下会直接报错。时间不用 linearplay默认的缓动函数会扭曲物理时间轴所有驱动时间流逝的animate都要显式写rate_funclinear。updater 泄漏add_updater的回调每帧执行场景切换或play结束后记得clear_updaters()否则后续动画卡顿且逻辑互相污染。相机与 updaters 叠加ThreeDScene支持ambient_camera_rotation环境相机自转它和 updater 可以同时存在但渲染开销会叠加。性能方面三维Surface类物体Sphere等的resolution参数直接决定面数预览时降到(10, 10)量级、正式渲染再调高是最立竿见影的优化Manim 本身也有缓存机制重复渲染相同场景可参考 manim/utils/caching.py。需要硬件加速渲染时可阅读 docs/source/faq/opengl.md 了解 OpenGL 渲染器的配置方式行为细节以官方文档为准。延伸资源快速上手流程docs/source/tutorials/quickstart.rst动画机制深入讲解docs/source/guides/deep_dive.rst三维与 OpenGL 示例场景example_scenes/opengl.py官方示例合集example_scenes/basic.py先跑通第一个Sphere场景再往里加你那一行参数方程——Manim 物理动画的门槛就在这一来一回之间。【免费下载链接】manimA community-maintained Python framework for creating mathematical animations.项目地址: https://gitcode.com/GitHub_Trending/man/manim创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026北京GEO优化公司性价比高的|选型指南+避坑攻略运营篇

2026北京GEO优化公司性价比高的|选型指南+避坑攻略运营篇

2026北京GEO优化公司性价比高的|选型指南避坑攻略核验篇 AI搜索正在把品牌竞争前移到用户决策之前。企业选择服务商时,既要看技术与内容能力,也要看对方能否说明监测方式、复盘周期和事实边界。 本文围绕北京GEO优化公司的选型逻辑,说明GEO的…

2026/9/1 9:07:01 阅读更多 →
WebMCP与Codex:AI Agent从爬网页到调工具的新范式

WebMCP与Codex:AI Agent从爬网页到调工具的新范式

最近 AI Agent 圈子里最值得关注的一件事,不是又跑通了一个多智能体 demo,而是 OpenAI 把 Codex 直接塞进了 Chrome 侧边栏。伴随这个动作,一个新协议概念也被推到台前:WebMCP。按字面理解,它是让网站主动把“自己能干…

2026/9/1 9:07:01 阅读更多 →
如何给扫描 PDF 加上可搜索文本层:OCRmyPDF 快速上手指南

如何给扫描 PDF 加上可搜索文本层:OCRmyPDF 快速上手指南

如何给扫描 PDF 加上可搜索文本层:OCRmyPDF 快速上手指南 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 扫描件有一个让人抓…

2026/9/1 9:07:01 阅读更多 →

最新新闻

Qdrant 向量数据库:一条命令起步,3 个上生产前必调的能力

Qdrant 向量数据库:一条命令起步,3 个上生产前必调的能力

Qdrant 向量数据库:一条命令起步,3 个上生产前必调的能力 【免费下载链接】qdrant Qdrant - High-performance, massive-scale Vector Database and Vector Search Engine for the next generation of AI. Also available in the cloud https://cloud.qd…

2026/9/2 11:10:04 阅读更多 →
Nextcloud 文件夹 ZIP 打包下载全指南:一键打包与空间优化实操

Nextcloud 文件夹 ZIP 打包下载全指南:一键打包与空间优化实操

Nextcloud 文件夹 ZIP 打包下载全指南:一键打包与空间优化实操 【免费下载链接】server ☁️ Nextcloud server, a safe home for all your data 项目地址: https://gitcode.com/GitHub_Trending/se/server 要把一个装着 300 多张交付照片的项目文件夹发给客…

2026/9/2 11:10:04 阅读更多 →
暗影精灵4电池鼓包与温度高:清灰换硅脂换电池实操指南

暗影精灵4电池鼓包与温度高:清灰换硅脂换电池实操指南

暗影精灵4电池鼓包加机器温度高,这个组合在这批老款游戏本上不算罕见。先把最关键的判断说清楚:电池鼓包属于高风险故障,发现之后不要再充电、不要继续当主机用,更不要尝试扎破或者按压;温度高这件事则要单独看&#x…

2026/9/2 11:10:04 阅读更多 →
MT管理器授权流程与APK分析实战指南

MT管理器授权流程与APK分析实战指南

MT管理器是一款在安卓平台上非常知名的文件管理工具,很多开发者和玩机爱好者都接触过它。和普通文件管理器不同,它采用双窗口设计,支持 ZIP、APK、RAR 等压缩格式的查看与解压,还内置了文本编辑器、图片查看器、文件比对、脚本执行…

2026/9/2 11:10:04 阅读更多 →
金融AI的隐秘风险:模型稳定性与系统性防控实践

金融AI的隐秘风险:模型稳定性与系统性防控实践

最近一段时间,人工智能在金融领域的应用又一次被推到了聚光灯下。英格兰银行行长Andrew Bailey公开提醒:先进人工智能的发展正在给全球金融稳定带来潜在威胁。这个论断不是出于对技术的保守排斥,而是基于金融系统运行逻辑的冷静判断——当越来…

2026/9/2 11:10:04 阅读更多 →
WeChatMsg 教程:3 步把微信聊天记录导出成本地文件

WeChatMsg 教程:3 步把微信聊天记录导出成本地文件

WeChatMsg 教程:3 步把微信聊天记录导出成本地文件 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMs…

2026/9/2 11:09:04 阅读更多 →

日新闻

QEMU为什么能模拟不同CPU?从ISA、CPU模型到指令翻译讲起

QEMU为什么能模拟不同CPU?从ISA、CPU模型到指令翻译讲起

1. 引言:一个软件为何能“伪装”成不同CPUQEMU 是一款广为人知的开源模拟器,它既能在一台 x86 电脑上运行 ARM 系统,也能在 ARM 开发板上启动 x86 的 Linux 发行版。很多人第一次接触 QEMU 时都会好奇:一个纯软件程序,…

2026/9/2 0:00:30 阅读更多 →
单片机计算机毕设之基于 STM32 或 51 单片机的感知式智能垃圾桶硬件控制系统设计 基于 STM32 或 51 单片机的安全防护型智能垃圾桶装置设计(025005)

单片机计算机毕设之基于 STM32 或 51 单片机的感知式智能垃圾桶硬件控制系统设计 基于 STM32 或 51 单片机的安全防护型智能垃圾桶装置设计(025005)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:00:30 阅读更多 →
单片机计算机毕设之基于 ESP8266 的智能垃圾分类桶 APP 监控系统设计与实现 基于单片机的超声波满溢检测垃圾分类装置设计(025105)

单片机计算机毕设之基于 ESP8266 的智能垃圾分类桶 APP 监控系统设计与实现 基于单片机的超声波满溢检测垃圾分类装置设计(025105)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/9/2 0:00:30 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/1 19:44:48 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/1 18:13:19 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/2 1:01:37 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/2 1:06:24 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/2 1:01:13 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/2 2:01:56 阅读更多 →