本动画通过二次函数 的图像,直观展示当动点沿曲线滑动时, 和 的几何意义及其变化规律。
核心思想
动画围绕两个核心概念展开:
- 变化量的几何意义: 为水平距离(红色), 为垂直距离(紫色)
- 非线性函数的特性:在二次函数上,相同的 在不同位置产生的 不同
动画结构
第一部分:基础建立
第二部分:动态可视化
第三部分:观察现象
视觉设计亮点
- 颜色编码:红色代表 ,紫色代表 ,与之前动画保持一致
完整代码
from utils import *
classv6(Scene):
defconstruct(self):
# 定义颜色常量
DX_COLOR = RED
DY_COLOR = PURPLE
# ============ 1. 坐标轴和函数图形 ============
ax, ax_x_label, ax_y_label = axes_func(x_range=(-5, 5), x_length=8,
y_range=(-1, 9), y_length=6)
f = f_func2(0.5) # 定义函数 f(x) = 0.5x²
gr = ax.plot(f, x_range=[-4.1, 4.1], stroke_width=4, color=BLUE)
gr_label = MathTex("y = x^2", color=BLUE).to_edge(UP, buff=1.2).shift(LEFT * 4.2)
# 滞后动画:依次淡入坐标轴、标签、函数图像
self.play(LaggedStart(FadeIn(ax), FadeIn(ax_x_label, ax_y_label),
Create(gr), FadeIn(gr_label), lag_ratio=0.2))
self.wait(2)
# ============ 2. 动态标记 Δx 和 Δy ============
x = ValueTracker(-4.1) # 第一个点的 x 坐标
dx = ValueTracker(0.6) # Δx 的值
# 两个动态点
dot_1 = always_redraw(lambda: dot_func(ax, f, x.get_value()))
dot_2 = always_redraw(lambda: dot_func(ax, f, x.get_value() + dx.get_value()))
# Δx 线段(红色)及其标签
delta_x_line = always_redraw(lambda: delta_x_line_func(
ax, f, x.get_value(), dx.get_value(), color=DX_COLOR))
delta_x_label = always_redraw(lambda: delta_x_label_func(
ax, f, x.get_value(), dx.get_value(), r"\Delta x", color=DX_COLOR))
# Δy 线段(紫色)及其标签
delta_y_line = always_redraw(lambda: delta_y_line_func(
ax, f, x.get_value(), dx.get_value(), color=DY_COLOR))
delta_y_label = always_redraw(lambda: delta_y_label_func(
ax, f, x.get_value(), dx.get_value(), r"\Delta y", color=DY_COLOR))
# 添加到场景
self.add(delta_y_line, delta_x_line, delta_y_label, delta_x_label, dot_1, dot_2)
# 点从左向右滑动,观察 Δx 和 Δy 的变化
self.play(x.animate.set_value(3.5), run_time=7)
self.wait(2)
# 淡出所有元素
self.play(FadeOut(*self.mobjects))
self.wait(2)
%manim -ql -v WARNING v6
文章首发:微信公众号:数与理 | 发布日期: 2026 年 3 月 27 日