数学动画工具横评:GeoGebra、Manim、Desmos与几何画板实战对比
做数学科普视频这一年多几乎每次直播和评论里都会被同一个问题刷屏你视频里那种函数图自己动起来、切线跟着变、公式一步步蹦出来的动画到底是用什么软件做的这个问题我在不同场合回答过几十遍但每次都要根据对方身份岔开讲老师、UP主、学生、家长需要的方案完全不一样。这次干脆把市面上的主流数学动画工具集中做一次横向评测把安装、操作、出图、渲染、踩坑这些环节全部跑一遍一次性说清楚。我实际测试的软件包括 GeoGebra、Manim、Desmos 和几何画板这四款在“数学动画”这件事上代表了完全不同的四条技术路线。为了公平对比我拿同一个教学案例——展示函数 y x² 在某一点的切线斜率变化——分别用四款软件各做了一遍完整流程从环境准备到导出视频全程记录。这篇文章不是参数表堆砌而是我真实操作后的体会适合给中学生做动态演示的数学老师、B站知识区创作者、考研和竞赛辅导讲师以及所有想把数学“画出来”的人参考。1. 评测对象与选型思路1.1 为什么是这四款软件市面上能画函数、能出动画、能做数学可视化的工具远不止四个但绝大多数要么太专业、要么太冷门。Mathematica 和 MATLAB 当然能做非常漂亮的数学动画可它们的定位是数学软件本身价格高、体积大、上手门槛也不低普通用户根本犯不上为做一个抛物线动画去装整个科学计算环境。Blender 的 3D 数学视频效果确实震撼但那是三维建模和特效的领域已经超出“数学教学动画”的讨论范畴。剩下广泛流行、大量真实用户在用、且长期维护的工具里就是 GeoGebra、Manim、Desmos、几何画板这四款最值得深聊。它们各自的理念差异非常明显GeoGebra 走的是“动态几何代数交互”路线鼠标拖拽就能生成动画Manim 是纯代码驱动的动画引擎3Blue1Brown 视频里的绝大部分效果都是它的功劳Desmos 走轻量级在线路线打开浏览器就能画函数动画几何画板是最经典的“尺规构造”思路老一辈数学老师对它感情最深。1.2 评测维度与打分权重我评测时不只看“做不做得出来”更关注“普通人用起来顺不顺手”。所以我把评测维度压到五个上手门槛从安装到出第一个效果的耗时、动画能力能做多复杂的效果、数学表达符号、公式、抽象概念能否直观呈现、输出质量视频分辨率、文件格式、后期可用性、生态与社区教程多不多、遇到问题能不能找到答案。这次实测用的案例选得很好它包含了数学动画里最常见的三个要素函数曲线、动点、动态切线。任何一个把这套流程跑通的人基本就掌握了这四款软件的核心用法。我建议你按照自己的身份先跳着看不必从头到尾读——老师重点看 GeoGebra 和几何画板UP主重点看 Manim学生和快速出图场景重点看 Desmos。2. 四款软件逐个拆解核心细节与实操要点2.1 GeoGebra教师群体的“六边形战士”GeoGebra 是我目前推荐给数学老师的首选它的全名叫Dynamic Mathematics for Everyone动态数学软件免费开源支持 Windows、macOS、Linux、iOS、Android而且有官方中文界面。它最大的特点是把几何、代数、表格、概率统计、3D 视图整合在同一个界面里你在代数区输入一个函数绘图区立刻出现曲线你在绘图区拖拽一个点代数区同步更新坐标——这种“数与形的实时同步”是很多传统软件做不到的。GeoGebra 做动画的核心机制是“滑动条”Slider也就是一个可以动态变化的参数。举个最基础的例子创建一个滑动条 a取值范围 -5 到 5然后在输入框写f(x) x^2 a拖动滑动条你会发现整个抛物线在上下移动。这就是 GeoGebra 动画的最小闭环。再配合“轨迹”和“序列”功能能做出很多复杂的迭代图案和动态几何演示。实操中最常用的三个命令切线(点, 函数)直接生成函数在某点的切线这是本次测试最省事的一步。序列(表达式, 变量, 起始值, 终止值)批量生成对象用来做迭代、铺点、网格都很方便。轨迹(点, 参数)追踪一个依赖参数运动的点显示它的完整移动路径。GeoGebra 的导出能力比多数人想象中强。它支持导出 PNG 图片、GIF 动画还可以直接嵌入网页或者导出为交互式 HTML 文件。但要注意内置的 GIF 导出参数比较简陋分辨率低、帧率也不稳想要拿去做成高质量视频建议用系统录屏或者 GeoGebra 导出多帧图片后自行合成。这点我在后面“踩坑记录”里会细说。2.2 Manim让数学动画拥有电影质感Manim 是Mathematical Animation Engine的缩写最初是 3Blue1BrownGrant Sanderson为制作他的数学视频而开发的 Python 库后来社区分化出几个分支目前最活跃的是社区版 ManimCommunity。它和他们几个完全不同你不在界面上拖拽任何东西而是用 Python 代码描述“要出现什么对象、执行什么动画、停留多长时间”然后把代码交给渲染引擎生成视频文件。听起来复杂实际也确实复杂但它的效果上限是四款软件里最高的。3Blue1Brown 那种“一个公式在屏幕中央由字母逐个拼出来、几何图形旋转合并、颜色渐变强调关键部分”的质感用其他三款软件都做不出来只有 Manim 能做。核心概念有三个MobjectMathematical Object所有数学对象的基类包括点、线、圆、函数图像、公式等。Animation描述 Mobject 如何变化常见的有Create、Transform、FadeIn、FadeOut、MoveTo、Rotate等。Scene一个场景是一个独立的视频片段里面编排多个 Mobject 和 Animation 的时序。Manim 还有两个非常强大的特性。第一个是MathTex它直接用 LaTeX 语法渲染公式你写一句MathTex(rf(x) \frac{1}{x})出来的就是排版规范的专业公式这一点是其他软件很难匹敌的。第二个是Updater更新器可以让一个对象跟随另一个对象动态变化例如让切线的角度随时跟随动点移动这正是实现“动态数学演示”的关键机制。Manim 的学习曲线是四款里最陡的。你要懂一点 Python 基础要会用命令行执行渲染还可能要处理 LaTeX 环境配置首次成功渲染出一个五秒动画少说也要一两个小时。但一旦你适应了代码思维它的效率和效果会让其他工具黯然失色。2.3 Desmos轻量到极致的函数可视化Desmos 是一款在线图形计算器打开网页就能用无需安装手机和平板上也能流畅运行。它最擅长的是函数可视化你输入y sin(x)图像立刻画出来输入y a sin(bx)系统自动提醒你为 a、b 创建滑动条然后你就可以拖动滑动条看波形变化。这个交互体验极其流畅也是很多数学老师上课时直接用浏览器演示的原因。Desmos 做动画的核心也是滑动条但它的交互逻辑做得比 GeoGebra 更轻。为参数添加滑动条点击滑动条的播放按钮参数自动按指定范围变化所有依赖该参数的图形都会同步更新。你还可以通过 Desmos 的“列表”功能一次性生成大量点或曲线比如输入(a, a^2)加上列表a[1,2,3,4,5]会直接出现五个点。如果要展示点和曲线的对应关系这种列表式写法非常直观。Desmos 最大的短板是导出能力弱。它本身没有“导出视频”的功能只有导出图片和分享链接。但你分享出去的链接是交互式的别人在浏览器里打开就能看到动态效果、滑动条、甚至自己拖拽参数这种可交互性反而是视频比不了的。如果非要录制视频就用操作系统自带的录屏工具顺着滑动条播放去录效果也还行。2.4 几何画板老牌经典如今还值不值得学几何画板Sketchpad是上世纪九十年代就流行的动态几何软件国内很多中学数学老师的电脑里至今仍装着它。它的核心思想是“尺规作图”构造中点、画垂线、作交点、构造圆与直线的切线全部基于几何关系而不是代数表达式。这种基于几何关系的构造方式在讲解“直线与圆位置关系”“三角形全等/相似”“动点轨迹”这类初中几何课题时有它独特的优势。但放到“数学动画视频制作”这个语境下几何画板的局限性也很明显函数图像支持不好交互界面老旧动画导出能力弱默认导出 AVI 的分辨率和帧率都很不理想直接拿来当视频素材基本不够用。而且它现在还是商业软件这些年更新幅度很小官方中文版还需要单独购买授权。我的态度很简单如果你已经在几何画板里积累了大量的课件资源继续用它没有毛病但如果你是零基础想学数学动画直接选 GeoGebra 就好两者在“动态几何教学”场景下有七八成重合度而 GeoGebra 免费、跨平台、函数功能更强整体价值高出一截。3. 同一道题的四种做法实操流程全记录3.1 用 GeoGebra 实现“抛物线切线动画”我用 GeoGebra 经典 6 桌面版做的操作步骤如下在绘图区上方的输入框里输入f(x) x^2回车后看到抛物线。创建一个滑动条a范围设为 -3 到 3增量 0.01。增量越小动画越平滑但滑动条手拖时也越难精准定位。在输入框输入A (a, f(a))绘图区出现一个依赖参数 a 的动点。拖动滑动条时点 A 沿抛物线移动。输入切线(A, f)GeoGebra 直接生成点 A 处的切线并自动用虚线样式显示。单击滑动条左侧的播放按钮点 A 自动来回运动切线也跟着不断改变斜率。为了把数值显式展示出来我再加了两步输入k 斜率(A, f)获得切线斜率然后用“文本”工具插入动态文本内容写“斜率 ”并关联 k 的数值。这样视频画面里既能看到切线变化也能看到斜率数字实时跳动教学效果非常直观。整个流程做完不到三分钟。GeoGebra 的交互反馈极快所有对象都实时联动这正是它在课堂演示场景下的绝对优势。导出方面我先用 GeoGebra 内置的导出图片功能截了几张关键帧做幻灯片用完整动画则用系统录屏工具直接把整个交互过程录成 MP4。3.2 用 Manim 实现同样的效果Manim 的做法是写一个 Python 脚本。我用的社区版manim核心代码如下from manim import * class TangentLine(Scene): def construct(self): # 坐标轴与函数曲线 axes Axes( x_range[-3, 3, 1], y_range[-1, 9, 1], x_length8, y_length5, axis_config{color: BLUE} ) graph axes.plot(lambda x: x**2, colorYELLOW) graph_label MathTex(yx^2).next_to(graph, LEFT).shift(UP) self.play(Create(axes), Create(graph), Write(graph_label)) self.wait(0.5) # 用 ValueTracker 控制切点横坐标 tracker ValueTracker(1) dot always_redraw( lambda: Dot( axes.coords_to_point(tracker.get_value(), tracker.get_value()**2), colorRED ) ) tangent always_redraw( lambda: axes.plot( lambda x: 2 * tracker.get_value() * x - tracker.get_value()**2, colorGREEN ) ) slope_text always_redraw( lambda: MathTex( fk {2 * tracker.get_value():.2f} ).to_corner(UL) ) self.play(FadeIn(dot), Write(tangent), Write(slope_text)) self.play(tracker.animate.set_value(-2), run_time4) self.play(tracker.animate.set_value(2), run_time4) self.wait(1)这里用到了always_redraw它相当于给对象绑定了一个“更新函数”只要 tracker 的值发生变化点、切线和斜率文本都会被重绘。tracker.animate.set_value(-2)则是一个动画让 tracker 的值在 4 秒内从 1 变化到 -2切点随之移动。命令行动画渲染是manim render -pql tangent.py TangentLine-p表示渲染完成后打开预览-q l表示低清模式调试阶段用速度快很多。跑通逻辑后再换成-qh渲染 1080p 高清视频。Manim 的渲染风格是深色背景、高对比配色出来的画面非常适合直接放进科普视频。Manim 做出来的效果在“精致感”上确实碾压其他三款但写代码、调试参数、等渲染的过程也确实漫长。这段 8 秒的小动画我前后调试了大概二十分钟最终渲染又花了两分钟比例要心里有数。3.3 用 Desmos 快速渲染Desmos 的操作可以用“秒”来计算。打开 desmos.com 图形计算器输入y x^2创建滑动条a范围 -3 到 3步长 0.01输入(a, a^2)生成动点输入y 2a(x - a) a^2生成切线点击滑动条的播放按钮动画立刻开始。如果想展示斜率值可以加一个文本不过 Desmos 的文本调用参数不像 GeoGebra 那么直观我通常直接靠图像的变化来讲或者后期加字幕。Desmos 的优势是零依赖任何一台有浏览器的设备都能打开学生还能通过分享链接自己拖拽滑动条玩。但它的短板也在这次测试里暴露得很彻底当我把滑动条速度调快录制时图像的刷新频率跟不上下一次录屏的帧率录出来的视频偶尔有几帧画面闪烁。解决办法是把滑动条速度调慢、后台浏览器窗口保持前台录制时不要做其他操作。3.4 用几何画板走一遍经典流程几何画板里画函数图像需要用“绘图—绘制新函数”菜单输入x^2得到抛物线。然后选中这条函数图像用“构造”菜单里的“函数图像上的点”取一个点。需要注意的是几何画板没有直接的“切线”命令需要先度量点的横坐标再用“绘图—绘制新函数”输入导函数2x画出一条导函数直线再用“构造—平行线”等方式手动描绘切线步骤明显更绕。这套操作也侧面说明了为什么我建议新用户直接放弃几何画板它擅长的是纯几何构造函数和解析几何的内容在 GeoGebra 里三两步就能完成的动作在几何画板里要做一系列手工映射。导出视频方面几何画板虽然能把动画存成 AVI但默认分辨率偏低画面细节丢失明显作为课堂教学演示可以放到视频平台做内容就差点意思。4. 踩坑记录与问题速查4.1 常见错误与排查思路四款软件我用下来几乎每一款都有几个不那么显眼但非常致命的坑。GeoGebra 的坑主要是中文翻译问题部分菜单命令翻译和实际含义对不上比如“滑动条”的英文是 Slider逻辑清楚但有些子菜单的翻译会误导新手建议中文界面配合官方英文文档对照查阅。Manim 的坑集中在环境配置社区版依赖ffmpeg、Pango、cairo等一堆底层组件Windows 下经常出现因为缺少 Pango 导致的启动失败这时候要靠错误日志定位具体缺哪个动态库。Desmos 几乎没有安装层面的坑但它的表达式语法和数学书写习惯有差异比如隐式乘法要写2\sin(x)而不建议写2sin(x)否则系统可能误判。几何画板的坑最突出的是授权问题网上很多“绿色版”“破解版”来源不明安装前要谨慎处理。我把常见问题整理成一个速查表软件常见问题原因与处理思路GeoGebra导出 GIF 分辨率低用系统录屏替代或用“导出多帧图片”后自行合成GeoGebra切线命令报错检查点是否真的有依赖函数先用文本命令切线(A, f)并确认 A 的坐标格式Manim中文文字变成方块中文字体未加载使用自定义字体参数或在 Text 对象中指定字体文件Manim渲染报缺少 Pango / cairo按平台安装底层依赖Windows 可使用 MSYS2 或 Docker 镜像Desmos视频录制时画面闪烁降低滑动条速度录屏前不要切换浏览器标签页Desmos表达式不识别使用学习过的数学函数名如\sin写作\sin或sin乘法用*几何画板函数切线操作繁琐改用 GeoGebra或用导函数画图配合构造线4.2 几个我实测有效的细节技巧Manim 的 MathTex 使用 LaTeX 语法如果你从来没学过 LaTeX不必害怕把最常用的十个结构记下来就够用分数\frac{分子}{分母}、根号\sqrt{}、上下标^和_、积分\int_{a}^{b}、求和\sum_{i1}^{n}、向量\vec{}、字母加粗\mathbf{}、希腊字母\alpha \beta \gamma、空格\quad和大括号\left( ... \right)。搞定这些数学公式的排版问题就解决了一大半。GeoGebra 里做“轨迹动画”有个隐藏技巧想要一个点沿曲线移动可以先创建一个点再把它“附着”到曲线上。方法是选中点后按快捷键“对象附着到路径”。如果只创建一个依赖坐标的点它只会呆在原地或者跟随坐标系变化但附着之后就能沿曲线滑行做解析几何的动态演示非常好用。Desmos 做“矩阵变换”动画的小技巧可以用列表一次性定义多个向量然后把变换矩阵作用于整个列表再用滑动条控制变换过程。比如线性代数里讲特征向量输入几个向量后用滑动条控制缩放因子整个向量的变化过程就活起来了。几何画板虽然整体过时但它的“显示/隐藏”按钮机制依然值得借鉴——你把一步动画拆成若干个状态然后用“操作类按钮”按顺序切换显示和隐藏。这种“分步演示”思路在 GeoGebra 里也可以复现用多个图层或条件显示来控制对象是否出现讲题的时候逐步放出比一次性展示所有内容效果好得多。5. 选型建议与我的工作流参考5.1 按身份和场景选评测做完之后我给自己总结了一套非常明确的选型标准按应用场景划分会更容易判断。中小学数学课堂演示首选 GeoGebra交互性强、免费、安装简单做“圆的切线”“二次函数图像与参数关系”“立体几何旋转体”这类内容都非常合适。如果学校电脑里装了正版几何画板且你已经有现成课件继续用也可以但新课件建议直接建在 GeoGebra 里。在线课程与录播课首选 GeoGebra 出画面 系统录屏操作直观摄像头和课件可以同屏展示。如果想更精致一点把 GeoGebra 的交互过程录下来后再放进剪辑软件加字幕和标注。知识科普视频 / B站或短视频平台Manim 是最终答案但建议先用 Desmos 或 GeoGebra 做“脚本探索”想想这个动画到底要展示什么逻辑再写 Manim 代码。Manim 写起来慢、渲染更慢不适合反复修改前期脚本越清楚后期返工越少。学生自学与作业展示Desmos 最合适。零成本、无安装、可分享链接做的过程本身就是理解函数的过程。我也见过不少大学生用 Desmos 做线性代数和微积分的作业展示图效果很好。动态几何专题尺规作图、平面几何几何画板的构造思路仍然有价值但在如今的环境下我更推荐 GeoGebra 默认视图里的“几何”模式它模拟了尺规作图流程又补充了代数和测量功能。5.2 多软件配合才是最优解四款软件各有不可替代的部分也有明显短板只迷信其中一个都是不划算的。我现在做数学视频的标准流程是先用 Desmos 快速验证函数特性和参数范围确认要展示的核心过程再用 GeoGebra 做课堂版的交互演示录制成基础素材最终成片阶段用 Manim 把关键环节做成“高光动画”——比如切线斜率变化、定积分的黎曼和逼近、泰勒展开的逐项叠加。这样既保证了成片质量也避免了 Manim 在裸奔状态下制作周期过长的问题。还有一个容易被忽略的点配色和节奏。数学动画的审美直接决定观众的观感Manim 默认的深色背景很好用GeoGebra 的浅色背景在课堂教学里清晰但录到视频里会显得有点“绿幕感”。如果你准备把 GeoGebra 画面放进视频建议手动把绘图区背景改成深色字体调成浅色这样和 Manim 素材混剪时视觉上更统一。我在实际使用中发现真正阻碍大多数人用好这些软件的从来不是功能不够而是“不知道哪个环节该用什么”。如果你只记住一条结论那我的建议是教学演示与交互优先开 GeoGebra视频成片与公式美学留给 Manim快速确认思路和分享链接直接 Desmos。这套工作流我实测下来是目前投入产出比最高的组合。