Manim 显示运动轨迹 TracedPath

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的教程, 由浅入深, 适合萌新和有一定基础的同学.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值