manim边学边做–旋转

本篇文章将深入探讨Manim库中的两种旋转动画类:RotateRotating,它们虽然名称相似,但在功能和应用场景上各有千秋。

Rotate类专注于对图形对象进行精确的旋转操作,它允许用户指定旋转的角度、轴心点等,非常适合于几何图形的演示、物理模拟以及机械运动的展示等场合。

相对而言,Rotating类则致力于创建一个持续旋转的效果,使对象围绕一个轴或点不断旋转,这在动态图标、天体运动模拟以及装饰性动态元素中尤为常见。

1. 动画概览

1.1. Rotate

Rotate动画类是Manim中用于旋转Mobject对象的工具。

通过设定旋转的角度、轴心等参数,Rotate能够实现精确的旋转效果。用户可以指定旋转的起始和终止角度,并调整旋转的速度,从而控制动画的播放速率。

以下是Rotate的主要参数:

参数名称 类型 说明
mobject Mobject 需要旋转的Mobject对象
angle float 旋转的角度,以弧度为单位
axis np.ndarray 旋转的轴向,通过向量定义
about_point [float] 旋转的中心点
about_edge [float] 使用边界框点的方向作为旋转中心

请注意,about_pointabout_edge不能同时使用,只有当about_pointNone时,about_edge才会生效。

1.2. Rotating

Rotating动画类则更注重于创建一个持续的旋转效果。

它使得Mobject对象能够围绕指定的轴或点持续旋转,通常用于创建动态的、循环的旋转场景。

用户可以设置旋转的方向(顺时针或逆时针),并且可以轻松地控制旋转的速度。

以下是Rotating的主要参数:

参数名称 类型 说明
mobject Mobject 需要旋转的Mobject对象
radians np.ndarray 旋转的弧度值
axis np.ndarray 旋转的轴向
about_point [float] 旋转的中心点
about_edge [float] 使用边界框点的方向作为旋转中心
rate_func func 速率函数,用于控制动画随时间的进展速度

1.3. 两种旋转的差异与联系

RotateRotating在功能上有明显的差异,同时也存在一定的联系。

在差异方面,Rotate专注于精确控制旋转,具有明确的起始和终止角度,适合于需要一次性、角度明确的旋转操作,例如将一个三角形旋转30度以展示特定的几何关系。

Rotating则允许Mobject对象持续旋转,没有终止角度的限制,适合于需要持续动态旋转的场景,如一个持续旋转的风车。

它们的联系在于,两者都用于实现旋转动画,并且都依赖于图形对象(Mobject)和旋转轴、旋转中心这些基本要素。

在一些复杂的动画场景中,两者还可以结合使用,例如先用Rotate将物体旋转到特定位置,再用Rotating使其在该位置持续旋转。

2. 使用示例

接下来,我们将通过几个示例来展示RotateRotating动画的使用。

2.1. Rotate 时钟指针旋转

在这个示例中,我们使用箭头线段来代表时钟指针,并通过Rotate动画,使其围绕原点从12点位置旋转到3点位置(即旋转90度,对应π/2弧度)。

这个简单的模拟展示了Rotate在模拟具有明确角度变化的场景中的应用。

d = Dot(color=BLUE)
c = Circle(color=YELLOW, radius=1)
self.add(d, c)
# 创建时钟指针(简单用线段表示)
hand = Arrow(ORIGIN, [0, 1, 0])
# 模拟时钟指针从 12 点位置旋转到 3 点位置
r_anim = Rotate(
    hand,
    angle=PI / 2,
    axis=IN,
    about_point=ORIGIN,
)
self.play(r_anim)

Rotate 时钟指针旋转

2.2. Rotating 风扇叶片旋转

在这个示例中,我们用两个矩形来表示风扇叶片,并使用Rotating动画类,使叶片围绕其中心,沿着垂直屏幕向外的轴持续旋转,一圈又一圈,

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

(0)
LomuLomu
上一篇 2024 年 12 月 26 日
下一篇 2024 年 12 月 26 日

相关推荐

  • Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?

    大家好,我是汤师爷~ 这篇聊聊 Bolt.new 和 Cursor 的对比。 Bolt.new 是一款基于 SaaS 的 AI 编码平台。它由 LLM 驱动的智能体作为底层,并结合 WebContainers 技术,让用户可以直接在浏览器中进行编码和运行。其主要优势包括: 支持前后端同时开发; 项目文件夹结构可视化; 环境自托管,自动安装依赖(如 Vite、…

    2025 年 1 月 16 日
    54200
  • 某滑块验证码识别思路(附完整代码)

    思路 验证码类型如下: 大概搜索了下,有两种主流思路:yolo目标检测算法和opencv模版匹配。很明显第二种成本远小于第一种,也不需要训练。 而且这种验证码有干扰(两个目标点),yolo一次还不能直接到位,还得进一步处理。我在搜索的时候还有用轮廓匹配做识别的,但是实测下来准确率很低,这里就不说了。 识别 背景预处理 先对图片做一些预处理,移除多余的干扰项,…

    2024 年 12 月 24 日
    42100
  • 【深度学习】Java DL4J基于 LSTM 构建新能源预测模型

    🧑 博主简介:CSDN博客专家 ,历代文学网 (PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学 ”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理…

    未分类 2025 年 1 月 10 日
    41900
  • 促销系统:促销活动、优惠券、优惠规则概念模型设计

    大家好,我是汤师爷~ 概念模型设计是促销系统开发的关键环节,我们需要基于之前的功能分析,将复杂的促销业务拆解成清晰的领域概念,这些概念之间的关系界定和边界划分,将直接决定系统的可维护性和扩展性。 促销系统核心概念模型 通过对促销业务的分析,我们可以抽象出促销系统的关键概念模型。 1、促销活动模型 促销活动模型对活动的各个要素和规则进行抽象,包含活动名称、描述…

    2025 年 1 月 13 日
    56700
  • 数据结构-8.Java. 七大排序算法(下篇)

    ![排序算法图解](https://pic.it1024doc.com/csdn/202412/e7a5ab870db2dde966e37f2c83a37ae4.jpeg) > 本文将深入探讨排序算法的核心概念,由于篇幅限制,我们将分两部分进行讨论。今日的主题是归并排序,以及快速排序的非递归实现技巧。 > 专栏:Java-**数据结构** > 如有疑问,请在…

    2024 年 12 月 27 日
    31000

发表回复

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

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

关注微信