TracedPath是Manim动画库中的一个重要类, 用于追踪一个点随时间移动的路径. 它继承自VMobject类, 可以创建出平滑的轨迹效果, 适合用于展示物体运动轨迹, 数学函数图像等场景.
构造方法
TracedPath(traced_point_func, stroke_width=2, stroke_color=ManimColor('#FFFFFF'), dissipating_time=None, **kwargs)
- traced_point_func (Callable): 必需参数, 返回要追踪的点的函数. 通常是一个返回np.array或Point对象的函数.
- stroke_width (float): 轨迹线条的宽度, 默认值为2.
- stroke_color (ParsableManimColor | None): 轨迹线条的颜色, 默认为白色(FFFFFF).
- dissipating_time (float | None): 轨迹消散时间. 设置为None表示不消散, 数值表示轨迹在多少秒后消失.
示例: 追踪圆形运动轨迹
from manim import *
class TracedPathExample(Scene):
def construct(self):
# 创建一个红色圆形, 初始位置在左侧
circ = Circle(color=RED).shift(4 * LEFT)
# 创建一个红点, 位于圆形起点
dot = Dot(color=RED).move_to(circ.get_start())
# 将圆形和点组合在一起
rolling_circle = VGroup(circ, dot)
# 创建轨迹追踪, 追踪圆形起点的移动
trace = TracedPath(circ.get_start)
# 添加更新器使圆形旋转
rolling_circle.add_updater(lambda m: m.rotate(-0.3))
# 添加轨迹和圆形到场景
self.add(trace, rolling_circle)
# 动画: 圆形向右移动8个单位, 持续4秒
self.play(rolling_circle.animate.shift(8 * RIGHT), run_time=4, rate_func=linear)
TracedPathExample().render()
动画效果:
示例: 带消散效果的轨迹
from manim import *
class DissipatingPathExample(Scene):
def construct(self):
# 创建一个点, 初始位置在右侧2单位处
a = Dot(RIGHT * 2)
# 创建轨迹追踪, 设置0.5秒消散时间, 透明度变化
b = TracedPath(a.get_center, dissipating_time=0.5, stroke_opacity=[0, 1])
# 添加点和轨迹到场景
self.add(a, b)
# 动画: 点向左移动2单位, 路径呈π/4弧度
self.play(a.animate(path_arc=PI / 4).shift(LEFT * 2))
# 动画: 点再次向左移动2单位, 路径呈-π/4弧度
self.play(a.animate(path_arc=-PI / 4).shift(LEFT * 2))
self.wait()
DissipatingPathExample().render()
动画效果:
关注公众号: 算法铁金库 , 我整理了一套学习Manim的教程, 由浅入深, 适合萌新和有一定基础的同学.