构建基本形状绘制大圆、互相垂直的直径以及基础半圆弧。移动水滴形状将复杂的阴影部分拆解通过动画展示其构成。图形变换核心难点通过旋转和平移将分散的弧形拼接成规则图形如小圆从而直观得出面积公式。二、核心实现步骤主要分为step01图形绘制与题目展示和step02动画变换与求解两步。1. 绘制基础几何图形我们需要绘制大圆、直径以及多个不同颜色的半圆弧。Manim 提供了丰富的基础图形类但绘制两点之间的特定圆弧需要用到ArcBetweenPoints。# 关键代码片段绘制两点之间的半圆弧 # 以 OA 为直径绘制半圆弧圆心为 OA 中点 E self.semicircle_oa ArcBetweenPoints( points[O], points[A], radius1, colorYELLOW, stroke_width2 )2. 构建自定义填充形状难点题目中的“水滴形”或特定阴影区域并非Manim的标准图形。我们需要利用VMobject向量图形对象通过拼接多个圆弧的点数组来自定义形状。这里用到了NumPy来合并点集并使用set_points方法设置形状轮廓# 关键代码片段自定义 VMobject 构建复杂填充形状 t_vm_a VMobject() t_vm_a.set_points( np.concatenate( [ self.semicircle_ae.get_points(), self.semicircle_eo.get_points(), self.semicircle_oa.get_points(), ] ) ) t_vm_a.set_fill(colorYELLOW, opacity0.5) # 设置填充颜色和透明度3. 动画变换逻辑为了展示面积的计算原理我们需要将阴影部分通过动画变换为规则图形。代码中使用了Rotate旋转和shift平移来模拟几何中的割补过程。# 关键代码片段动画变换展示 # 旋转某个部分 self.play(Rotate(vm_c, angle-PI / 2, about_pointpoints[O])) # 平移拼接 self.play(vm_c.animate.shift(LEFT * 2))三、重点 Manim 技术点解析通过这个项目我们可以掌握以下Manim的核心技术基础图形组件Circle绘制圆形。Line绘制直线如直径。ArcBetweenPoints重点用于绘制连接两点的圆弧非常适合处理几何题中的半圆结构。高级图形定制VMobject向量图形对象是所有 Manim 图形的基类用于自定义形状。set_points()/get_points()直接操作图形的顶点数据实现异构图形的拼接。VGroup将多个对象组合成一个组方便统一管理动画。动画与文本TransformFromCopy从一个对象复制并变换到另一个对象适合展示图形演变。MathTexText混排数学公式与普通文本展示题目和解题过程。ReplacementTransform平滑替换对象常用于公式推导的最终结果显示。四、效果预览通过上述代码我们最终实现了一个完整的动画流程动态绘制出复杂的几何图形。高亮显示阴影部分。通过旋转和平移动画将阴影部分重组为易于计算的圆形。最后动态显示计算公式与结果如 8π。