manim边做边学–动画轨迹

本篇介绍Manim中两个和动画轨迹相关的类,AnimatedBoundaryTracedPath

AnimatedBoundary聚焦于图形边界的动态呈现,能精准控制边界绘制的每一帧,助力我们清晰展示几何图形的搭建流程。

TracedPath则擅长实时追踪物体或点的运动轨迹,以直观且动态的方式呈现各类运动路径,为我们分析和展示复杂运动提供了强大支持 。

1. 动画概述

1.1. AnimatedBoundary

在讲解几何图形(如多边形、圆形等)的构造过程时,AnimatedBoundary可以逐帧展示图形边界的绘制,帮助我们理解图形是如何一步步形成的。

此外,当图形的边界随着某个参数或条件动态变化时,使用 AnimatedBoundary 也可以生动地呈现这种变化。

AnimatedBoundary动画的主要特点在于图形边界的绘制,它能够精确控制边界的出现顺序和方式。

这使得在展示几何图形的构建过程时,能够突出边界这一关键元素,更清楚地展示图形的轮廓是如何形成的。

它的参数主要有:

参数名称 类型 说明
vmobject VMobject 要应用动画边界的 VMobject
colors [Color] 颜色列表,用于指定边界颜色变化的序列
max_stroke_width int 最大描边宽度
cycle_rate float 颜色循环速率
back_and_forth bool 是否来回循环颜色变化
draw_rate_func func 用于控制绘制速率的函数
fade_rate_func func 用于控制淡出速率的函数

1.2. TracedPath

在物理学或数学中,当需要展示物体的运动轨迹时,TracedPath 是一个非常合适的工具。

例如,展示抛体运动、圆周运动等物体的运动路径时,能让我们直观地看到物体在空间中的运动轨迹。

此外,对于函数图像的绘制,也可使用 TracedPath 来模拟绘图过程,展示函数曲线是如何随着自变量的变化而逐步生成的。

这在演示函数的性质和图像绘制方法时非常有用,能够帮助学生更好地理解函数的变化规律。

TracedPath动画的主要特点是能够实时跟踪物体或点的运动轨迹,并将其以动画的形式呈现出来。

这种实时跟踪的特性使得动画更加真实、生动,能够准确地反映物体的运动状态。

它的参数主要有:

参数名称 类型 说明
traced_point_func func 要跟踪的函数,该函数应返回一个点的坐标
stroke_width float 轨迹的线条宽度
stroke_color Color 轨迹的颜色
dissipating_time float 路径消散所需的时间

dissipating_time参数为None时,表示路径轨迹不消散。

TracedPath还有一个方法:

名称 说明
update_path 用于更新轨迹路径的方法,通常在动画过程中被调用,以实时跟踪点的移动并更新轨迹

2. 使用示例

下面通过几个根据实际应用场景简化而来的示例来演示两个动画类的使用。

2.1. 多边形绘制

这个示例中,首先创建了一个矩形多边形,然后使用 AnimatedBoundary 为其添加边界动画,

颜色在蓝色绿色黄色 之间循环变化,循环速率为 3,突出展示多边形边界的绘制动画。

```python
polygon = Polygon(
    [-2, -1, 0],
    [2, -1, 0],
    [2, 1, 0],
    [-2, 1, 0],
)
boundary = AnimatedBoundary(
    polygon,
    colors=[BLUE, GREEN, YELLOW],
    cycle_rate=3,
)
self.add(polygon, boundary)
```

manim边做边学--动画轨迹

2.2. 动态更新圆形边界

先创建了一个圆形,其边界的颜色在红色黄色绿色 之间循环,循环速率为 2。

然后通过动画将圆形的半径放大 2 倍,展示了圆形边界在动态变化过程中的动画效果。

```python
circle = Circle(radius=1)
boundary = AnimatedBoundary(
    circle,
    colors=[RED, YELLOW, GREEN],
    cycle_rate=2,
)
self.add(circle, boundary)
self.play(circle.animate.scale(2), run_time=3)
```

manim边做边学--动画轨迹

2.3. 跟踪抛体运动轨迹

首先定义一个抛体运动的函数 move_path,再创建了一个点 Dot 和一个 TracedPath 对象来跟踪点的运动轨迹。

轨迹颜色为绿色 ,宽度为 3,展示了抛体运动的轨迹跟踪效果。

```python
d = Dot().shift(LEFT * 2)
trace = TracedPath(
    d.get_center,
    stroke_color=GREEN,
    stroke_width=3,
)
self.add(d, trace)

def move_path(t):
    x = t
    y = 2 - 0.5 * t**2
    return np.array([x, y, 0])

f = ParametricFunction(
    move_path,
    t_range=(-3, 3),
)
self.play(MoveAlongPath(d, f), run_time=3)
```

manim边做边学--动画轨迹

2.4. 函数图像绘制过程

这个示例中,定义了一个正弦函数 move_path,再创建一个点沿着这个正弦函数图像运动,同时创建了一个 TracedPath 对象来跟踪函数图像的绘制过程。

轨迹颜色为紫色 ,宽度为 2,且设置轨迹在1秒后消失。

```python
d = Dot(color=BLUE).shift([-PI, 0, 0])
trace = TracedPath(
    d.get_center,
    stroke_color=PURPLE,
    stroke_width=2,
    dissipating_time=1,
)
self.add(d, trace)

def move_path(x):
    return np.array([x, np.sin(x), 0])

f = ParametricFunction(move_path, t_range=(-PI, PI))
self.play(MoveAlongPath(d, f), run_time=3)
```

manim边做边学--动画轨迹

3. 附件

文中的代码只是关键部分的截取,完整的代码共享在网盘中(trace.py),

下载地址: 完整代码 (访问密码: 6872)

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/5434.html

(0)
LomuLomu
上一篇 2025 年 1 月 6 日 下午7:17
下一篇 2025 年 1 月 6 日 下午8:19

相关推荐

  • 数据库设计原则与方法

    — title: 数据库设计原则与方法 date: 2024/12/8 updated: 2024/12/8 author: cmdragon excerpt: 数据库设计是确保数据库高效、可靠运行的关键步骤。良好的数据库设计不仅能提高数据的存取速度,还能维护数据的完整性和一致性。在本节中,我们将探讨一些基本的数据库设计原则,以及常用的数据库设计方法,帮…

    未分类 2024 年 12 月 24 日
    43200
  • 履约系统:应用层、领域层、集成关系设计

    大家好,我是汤师爷~ 在这篇文章中,我们一起探讨订单履约系统的应用架构设计。 应用架构设计 我们前面讨论了系统的核心概念模型和拆单逻辑。接下来,让我们从应用架构的角度,深入了解系统的各个层次。这包括应用层、领域层,以及与其他系统的集成关系。 应用层能力 应用层定义软件的应用功能,它负责接收用户请求,协调领域层能力来执行任务,并将结果返回给用户,核心模块包括:…

    2025 年 1 月 6 日
    47100
  • 从零开始的Python世界生活——语法基础先导篇(Python小白零基础光速入门上手)

    从零开始的Python世界生活——语法基础先导篇(Python小白零基础光速入门上手) 1. 准备阶段 1.1 下载并安装Python 1.1.1 下载步骤: 访问Python官方网站:点击这里下载Python 在页面上,选择适合你操作系统的Python版本(Windows、macOS或Linux)。 点击下载按钮,开始下载安装程序。 1.1.2 安装步骤:…

    未分类 2025 年 1 月 1 日
    67800
  • 【GreatSQL优化器-10】find_best_ref

    【GreatSQL优化器-10】find_best_ref 一、find_best_ref介绍 GreatSQL的优化器对于join的表需要根据行数和cost来确定最后哪张表先执行哪张表后执行,这里面就涉及到预估满足条件的表数据,在keyuse_array数组有值的情况下,会用find_best_ref函数来通过索引进行cost和rows的估计,并且会找出最…

    2025 年 1 月 12 日
    52700
  • 思维导图xmind如何安装?附安装包

    前言 大家好,我是小徐啊。我们在Java开发中,有时候是需要用到思维导图的,这可以帮助我们更好的理清思路,提高开发的效率。而说到思维导图,最有名的就是xmind了,它的功能十分强大,几乎是思维导图里面最强大的那一个。但是,默认只能使用初级功能,高级功能需要额外再开通,今天小徐就来介绍下如何安装xmind以及升级,让我们可以使用pro的功能。文末附获取方式。 …

    2025 年 1 月 13 日
    46700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信