1.manim边学边做--三维图形的场景类
2.【manim动画教程】-- 安装
3.【manim动画教程】-- 基本图形
4.【manim动画教程】-- 坐标系
5.【manim动画教程】-- 文本样式
6.【manim动画教程】-- 文字和公式
7.【manim动画教程】-- 图形样式
8.【manim动画教程】--相机
9.【manim动画教程】--高级动画效果
10.【manim动画教程】--常用动画效果
11.【manim】之滚动字幕
12.【manim】之圆规动画
13.【manim】之目录动画
14.manim边学边做--DecimalNumber
15.manim边学边做--Integer
16.manim边学边做--Variable
17.manim边学边做--Title
18.manim边学边做--BulletedList
19.manim边学边做--SingleStringMathTex
20.manim边学边做--MathTex
21.manim边学边做--Tex
22.manim边学边做--Text
23.manim边学边做--Paragraph
24.manim边学边做--MarkupText
25.manim边学边做--Code
26.manim边学边做--Matrix
27.manim边学边做--Table
28.manim边学边做--点
29.manim边学边做--圆形类
30.manim边学边做--圆弧形
31.manim边学边做--直线类
32.manim边学边做--带箭头直线
33.manim边学边做--曲线类
34.manim边学边做--角度标记
35.manim边学边做--常用多边形
36.manim边学边做--通用多边形
37.manim边学边做--弧形多边形
38.manim边学边做--空心多边形
39.manim边学边做--图形间集合关系
40.manim边学边做--形状匹配
41.manim边学边做--无向图
42.manim边做边学--有向图
43.manim边做边学--数轴
44.manim边做边学--直角平面
45.manim边做边学--复数平面
46.manim边学边做--极坐标平面
47.manim边学边做--通用二维坐标系
48.manim边做边学--通用三维坐标系
49.manim边学边做--三维的点和线
50.manim边学边做--立方体和棱柱体
51.manim边做边学--圆锥
52.manim边做边学--球体
53.manim边做边学--圆环面
54.manim边做边学--圆柱体
55.manim边做边学--曲面
56.manim边做边学--多面体
57.manim边做边学--文字的创建与销毁
58.manim边做边学--图形的创建与销毁
59.manim边做边学--淡入淡出
60.manim边学边做--渐变生长
61.manim边学边做--突出显示
62.manim边学边做--旋转
63.manim边学边做--移动动画
64.manim边学边做--同伦变换
65.manim边学边做--改变动画速度
66.manim边做边学--动画轨迹
67.manim边做边学--动画组合
68.manim边做边学--动画更新
69.manim边做边学--动画联动
70.manim边做边学--缩放变换
71.manim边做边学--交替变换
72.manim边做边学--淡入淡出变换
73.manim边学边做--时针方向变换
74.manim边学边做--局部变换
75.manim边学边做--通用变换
76.manim边学边做--相机Camera简介
77.manim边学边做--标准相机
78.manim边学边做--场景Scene简介
79.manim边学边做--局部缩放的场景类
80.manim边学边做--向量相关的场景类
81.manim边学边做--线性变换的场景类
82.manim边学边做--移动相机的场景类
83.Manim实现线条发光效果
84.Manim:动画制作背后的魔法
85.manim 动画效果总结
86.manim变换效果总结
87.Manim动画渲染:从代码到屏幕的幕后故事
88.轻松掌握Manim的.animate语法:让动画编程更简单
89.
Manim实现图像变形特效
90.Manim实现旋转变色特效
91.manim边做边学--显函数图像
92.manim边做边学--隐函数图像
93.manim边做边学--参数化曲线
94.Manim中三种函数图像类的比较
95.掌握ChangeSpeed类:让数学动画速度随心而动!
在数学教学和科普领域,变形效果往往能起到事半功倍的作用,让抽象的数学概念变得生动形象。
这篇文章将通过三个典型场景,来看看如何超越默认效果的限制,制作出更专业的变形动画。
1. 几何体的形态跃迁
传统形状变化往往生硬,而通过组合Transform
与样式动画,我们可以创造更丰富的视觉效果:
class ShapeTransformation(Scene):
def construct(self):
# 创建带描边的起始图形
circle = Circle(radius=1, color=BLUE, stroke_width=8)
circle.set_fill(BLUE_E, opacity=0.5)
circle.shift(LEFT * 2)
# 准备目标图形并设置不同位置
square = Square(side_length=2, color=RED)
square.shift(RIGHT * 2 + UP)
# 同步执行形态变换和颜色渐变
self.play(
Transform(circle.copy(), square, path_arc=90 * DEGREES),
circle.animate.set_color(YELLOW).shift(RIGHT * 4 + DOWN),
run_time=3,
)
self.wait()
代码中,我们使用path_arc
参数让变形路径呈现优美的弧线运动;
并且颜色与位置变化与形态变形同步进行;
一个图形(圆形)同时转换成两个图形(一个圆形,一个正方形)。
2. 坐标系的魔法转换
数学场景转换需要兼顾坐标系和图形,ReplacementTransform
可以完美处理这种复合变换。
class CoordinateTransform(Scene):
def construct(self):
# 创建笛卡尔坐标系
cartesian = Axes(x_range=[-3,3], y_range=[-2,2])
graph1 = cartesian.plot(lambda x: np.sin(x), color=GREEN)
# 准备极坐标系
polar = PolarPlane(radius_max=2).scale(0.8)
graph2 = polar.plot(lambda t: 1+np.cos(3*t), color=YELLOW)
# 组合变换:坐标系与函数曲线同时替换
self.play(
ReplacementTransform(cartesian, polar),
ReplacementTransform(graph1, graph2),
run_time=2
)
# 增强效果:坐标轴颜色渐变
self.play(polar.animate.set_color(BLUE_C), run_time=1.5)
self.wait()
代码中核心功能在于:
- 同时替换坐标系和函数曲线保持场景一致性
- 使用scale调整坐标系比例确保平滑过渡
- 后期添加颜色动画强化视觉效果
3. 参数驱动的动态变化
下面通过UpdateFromAlphaFunc
实现参数连续变化效果,函数图像变化的过程中同步更新参数值显示。
并且在函数图像变化的过程中,通过颜色插值interpolate_color
函数,使得颜色随参数变化渐变(从绿色变成黄色)。
class ParameterTransformation(Scene):
def construct(self):
axes = Axes(
x_range=[-3 * PI, 3 * PI, PI],
y_range=[-3, 3, 1],
axis_config={"color": WHITE},
)
# 参数连续变化(动态展示a从1到2)
param_label = MathTex(r"y = a\sin(x)").to_edge(UP).shift(LEFT)
self.add(param_label, axes)
a_label = MathTex("a=")
a_value = DecimalNumber(1, num_decimal_places=1).next_to(a_label, RIGHT)
vg = VGroup(a_label, a_value).next_to(param_label, DOWN)
self.add(param_label, axes, vg)
# 创建可变的函数曲线
def update_func(mob, alpha):
a = interpolate(1, 2, alpha)
new_func = axes.plot(
lambda x: a * np.sin(x), color=interpolate_color(GREEN, YELLOW, alpha)
)
mob.become(new_func)
a_value.set_value(a)
dynamic_func = axes.plot(lambda x: 1 * np.sin(x), color=GREEN)
self.add(dynamic_func, a_value)
self.play(
UpdateFromAlphaFunc(dynamic_func, update_func, rate_func=linear, run_time=3)
)
self.wait()
显示效果如下:
4. 总结
使用Manim
的Transform
和ReplacementTransform
实现数学图形动态变形。
比如,圆变方、正弦函数振幅连续变化等等,结合颜色插值与参数数值同步更新,直观演示参数对图形的影响。
原创作者: wang_yb 转载于: https://www.cnblogs.com/wang_yb/p/18901822