manim边学边做--时针方向变换
今天介绍的两个动画类ClockwiseTransform
和CounterclockwiseTransform
,
用于将某一个元素按照时针方向变换为另一个对象。
ClockwiseTransform
:将一个对象以顺时针方向变换成另一个对象CounterclockwiseTransform
:将一个对象以逆时针方向变换成另一个对象
1. 动画概述
1.1. ClockwiseTransform
在数学动画中,当你需要展示一个图形顺时针旋转并逐渐演变成另一个图形的过程时,就可以使用ClockwiseTransform
。
例如,在讲解几何图形的变换、函数图像的演变等场景中,这个动画能够直观地展示顺时针的变换过程,帮助观众更好地理解图形之间的关系。
顺时针变换是该动画类最显著的特点,它会使源对象以顺时针方向逐渐转变为目标对象。
它的参数主要有:
参数名称 | 类型 | 说明 |
---|---|---|
mobject | Mobject | 起始的 Mobject |
target_mobject | Mobject | 目标 Mobject |
path_arc | float | 控制变换路径弧度的参数,用来确定对象在变换过程中所经过的顺时针弧线的弧度大小 |
1.2. CounterclockwiseTransform
CounterclockwiseTransform
与 ClockwiseTransform
类似,但它是将一个对象以逆时针方向变换成另一个对象。
在需要展示逆时针变换的场景中,如旋转木马的逆时针转动、几何图形的逆时针演变等,这个动画类就非常适用。
它的参数主要有:
参数名称 | 类型 | 说明 |
---|---|---|
mobject | Mobject | 起始的 Mobject |
target_mobject | Mobject | 目标 Mobject |
path_arc | float | 控制变换路径弧度的参数,用来确定对象在变换过程中所经过的逆时针弧线的弧度大小 |
2. 使用示例
这两个类使用起来比较简单,也没什么参数,下面通过几个示例演示它们在实际动画中的一些可能的使用场景。
2.1. 图形顺时针变换
这个示例实现了一个三角形顺时针变换为正方形的动画,直观展示了ClockwiseTransform
对单个图形的变换效果。
triangle = Triangle()
square = Square()
triangle.move_to(DOWN + LEFT * 2)
square.move_to(DOWN + RIGHT * 2)
self.add(triangle)
self.wait()
self.play(ClockwiseTransform(triangle, square))
2.2. 多个图形顺时针变换
这个示例创建了多个圆形,使其分别顺时针变换为正方形,展示了多个对象同时进行顺时针变换的场景。
circles = [
Circle(radius=0.5) for i in range(3)
]
squares = [
Square(side_length=1) for i in range(3)
]
circles[0].move_to(2 * LEFT + UP)
squares[0].move_to(2 * RIGHT + UP)
circles[1].move_to(2 * LEFT)
squares[1].move_to(2 * RIGHT)
circles[2].move_to(2 * LEFT + DOWN)
squares[2].move_to(2 * RIGHT + DOWN)
self.add(*circles)
self.wait()
animations = [ClockwiseTransform(circles[i], squares[i]) for i in range(3)]
self.play(*animations)
2.3. 图形逆时针变换
这个示例将五边形逆时针变换为八边形,体现了CounterclockwiseTransform
对单个图形的逆时针变换功能。
pentagon = RegularPolygon(n=5)
hexagon = RegularPolygon(n=8)
pentagon.move_to(UP + LEFT * 2)
hexagon.move_to(UP + RIGHT * 2)
self.add(pentagon)
self.wait()
self.play(CounterclockwiseTransform(pentagon, hexagon))
2.4. 多个图形逆时针变换
这个示例实现了多个三角形逆时针变换为菱形的动画,呈现了多个对象同时进行逆时针变换的效果。
triangles = [Triangle() for i in range(3)]
rhombuses = [RegularPolygon(n=4) for i in range(3)]
triangles[0].move_to(2 * LEFT + UP)
rhombuses[0].move_to(2 * RIGHT + UP)
triangles[1].move_to(2 * LEFT)
rhombuses[1].move_to(2 * RIGHT)
triangles[2].move_to(2 * LEFT + DOWN)
rhombuses[2].move_to(2 * RIGHT + DOWN)
self.add(*triangles)
self.wait()
animations = [
CounterclockwiseTransform(triangles[i], rhombuses[i]) for i in range(3)
]
self.play(*animations)
3. 附件
文中的代码只是关键部分的截取,完整的代码共享在网盘中(clock.py
),
下载地址: 完整代码 (访问密码: 6872)
manim边学边做--时针方向变换的更多相关文章
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- 牛腩学Kotlin做Android应用
牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...
- php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...
- html5-3 html5标签(热点地图如何实现)(边学边做)
html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl 自定义列表dt 自定义标题dd 自定义列表内容 2. ...
- 第一份开发工作,边学边做android
我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...
- 边学边做,简单的 GraphQL 实例
项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...
- LabVIEW Actor Framwork (2)________ 边学边做server&client
回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...
- STM32F103VET6 ADC采集64点做FFT变换
http://www.stmcu.org/module/forum/thread-598459-1-11.html http://bbs.21ic.com/icview-589756-1-1.html ...
- 牛腩学ASP.NET CORE做博客(视频)
牛腩学习ASP.NET CORE做的项目,边学边做. 目录: 01-dotnetcore网站部署到centos7系统上(时长 2:03:16) 02-前期准备及项目搭建 (时长:0:23:35) 03 ...
- 牛腩学用MUI做手机APP
斗鱼直播间直播学习撸码,最终目标是用MUI做一个手机APP(暂定android平台,攒钱买IPHONE 7SE!!!),直播内容含整个软件APP的制作过程(含后台接口的制作,放到自己买的阿里云服务器, ...
随机推荐
- python之发送邮件(smtplib)
我们在测试完成后,都会发一份邮件也就是我们的测试报告,那么既然要自动化,是不是也可以通过python帮助我们发送邮件?当然这么强大的python可以帮助你完成这个需求 SMTP SMTP(Simple ...
- Kafka 1.1.1 源码编译
下载源码 git clone -b 1.1.1 https://github.com/apache/kafka.git --depth=1 使用这样的方式下载主要是解决两个问题:其一,下载指定分支 ...
- 再用RNN神经网络架构设计生成式语言模型
上一篇:<用谷歌经典ML方法方法来设计生成式人工智能语言模型> 序言:市场上所谓的开源大语言模型并不完全开源,通常只提供权重和少量工具,而架构.训练数据集.训练方法及代码等关键内容并未公开 ...
- C#微信公众号开发
C#微信公众号开发 一> 准备 [开发文档] [微信公众号测试接口] 用自己的微信扫码登陆,然后就可以获取就有了appId 和 appsecret. 二>获取access_token 打开 ...
- vtkCellLocator IntersectWithLine 返回不是最近的交点
vtkCellLocator IntersectWithLine 有一个重载函数(下面),返回不是最近的交点,因为到交点的距离没有比较,就直接覆盖了.不知道原本是否就是这样.可以用其他重载代替. in ...
- flutter安装过程中 flutter doctor 出现错误 cmdline-tools component is missing
进入Android studio的settings添加tool工具
- python+playwright安装+使用vsocde运行代码
python虚拟环境 1.安装python,环境配置 2.修改pip镜像源 3.新增虚拟环境 注意路径,例子的路径是在python的目录下生成一个venv文件夹 进入venv文件夹,使用virtual ...
- Vue2 面试题 (2023-09-22更新)
基础 Vue2.0 兼容 ie 哪个版本? 不支持 ie8,部分兼容 ie9,完全兼容 ie10 因为 vue 的响应式原理是基于 es5 的 Object.defineProperty 这个方法不支 ...
- 安卓导出已安装app的apk
安卓导出已安装应用APK 有时候想看看别人的APK里面的资源文件或者是逆向,首先就得先搞到APK文件 两种方法获取手机上已安装应用的APK文件 通过adb命令 首先把目标手机连接上电脑 在终端输入 a ...
- Excel 真的很强大之 Excel DDE 攻击
https://pentestlab.blog/2018/01/16/microsoft-office-dde-attacks/ =cmd|'/c calc.exe'!A1 =MSEXCEL|'\.. ...