manim边学边做--圆弧形
圆弧形可以算是一种特殊的圆形,它是圆形的一部分。manim中,单独为圆弧形状封装了几个模块:
Arc:通用的圆弧,根据半径和角度来绘制圆弧ArcBetweenPoints:根据两个点和角度来绘制圆弧AnnularSector:环形圆弧,相当于是圆环的一部分Sector:扇形,始终是1/4个圆环。
其中,ArcBetweenPoints和AnnularSector继承自Arc,Sector继承自AnnularSector。

圆弧系列的模块位于manim中的Mobject之下。
1. 主要参数
模块Arc的主要参数有:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| radius | float | 圆弧的半径 |
| start_angle | float | 圆弧开始的弧度 |
| angle | float | 圆弧的弧度 |
| num_components | int | 组成弧的片段,这个值越大,弧越圆滑 |
| arc_center | Point3D | 圆弧对应的圆心位置 |
圆弧的起点和终点是由start_angle和angle控制的,start_angle参数控制圆弧的起点,默认值是0(圆心右边为0度);angle参数是圆弧的弧度,start_angle + angle的值就是圆弧的终点,angle是逆时针计算的。
模块ArcBetweenPoints的主要参数有:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| start | Point3D | 圆弧的起点 |
| end | Point3D | 圆弧的终点 |
| angle | float | 圆弧的弧度 |
| raduis | float | 圆弧的半径 |
这个模块是根据两个点(start和end)来绘制圆弧,angle和raduis参数只能设置一个,用来控制圆弧的弧长。start和end固定时,angle越大,弧长越长;raduis越大,弧长越短。
模块AnnularSector的主要参数有:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| inner_radius | float | 环状弧形的内半径 |
| outer_radius | float | 环状弧形的外半径 |
| start_angle | float | 环状弧形开始的弧度 |
| angle | float | 环状弧形的弧度 |
inner_radius和outer_radius的差形成了一个环形;start_angle和angle的含义与模块Arc中的同名参数一样。
模块Sector的主要参数:
| 参数名称 | 类型 | 说明 |
|---|---|---|
| inner_radius | float | 环状弧形的内半径 |
| outer_radius | float | 环状弧形的外半径 |
Sector模块只有inner_radius和outer_radius两个参数,因为它默认为1/4个圆环。
2. 主要方法
这几个模块的作用主要是展示图形,所以方法不多,常用的有两个:
| 名称 | 说明 |
|---|---|
| get_arc_center | 获取弧形当前的圆心坐标 |
| move_arc_center_to | 设置弧形新的圆心坐标 |
3. 使用示例
下面分别针对4种圆弧形的模块的参数,演示一些示例。
3.1. 通用圆弧
通用的的圆弧Arc是最常用的,start_angle和angle设置圆弧的起点和弧度,arc_center设置圆弧的位置,radius控制圆弧的大小。
Arc(
arc_center=LEFT * 2,
angle=PI,
)
Arc(
radius=1.5,
arc_center=RIGHT,
angle=PI,
)
Arc(
start_angle=PI / 2,
angle=PI / 2,
arc_center=LEFT * 2 + DOWN * 2,
)
Arc(
start_angle=PI,
angle=PI * 3 / 2,
arc_center=RIGHT + DOWN * 1.5,
)

3.2. 根据两点生成圆弧
从固定的两点生成圆弧ArcBetweenPoints也是在制作动画时常用的方式,
参数start和end设置圆弧的起点和终点;angle和radius设置圆弧的弯曲程度,这两个参数只能使用一个,同时设置时只有radius生
ArcBetweenPoints(
start.get_center(),
end.get_center(),
radius=0.8,
)
ArcBetweenPoints(
start.get_center(),
end.get_center(),
radius=1.6,
)
ArcBetweenPoints(
start.get_center(),
end.get_center(),
angle=PI / 2,
)
ArcBetweenPoints(
start.get_center(),
end.get_center(),
angle=PI,
)
前两个示例用radius控制圆弧的度数,后两个示例用angle控制圆弧的度数。
3.3. 环形的圆弧
环形的圆弧AnnularSector可以理解成增加了厚度的圆弧。
它可以使用Arc的参数,不同之处在于它的半径有两个,一个是inner_radius,一个是outer_radius。
这两个半径之差就是环形的厚度。
AnnularSector(
inner_radius=0.5,
outer_radius=1.5,
angle=PI,
)
AnnularSector(
inner_radius=0.5,
outer_radius=0.8,
angle=PI,
)
AnnularSector(
start_angle=PI / 2,
angle=PI / 2,
inner_radius=0.5,
outer_radius=1.5,
)
AnnularSector(
start_angle=PI,
angle=PI * 3 / 2,
inner_radius=0.5,
outer_radius=0.8,
)

3.4. 扇形
扇形Sector是一种简化的AnnularSector,它固定为1/4个圆环。
Sector(
inner_radius=0.5,
outer_radius=1.5,
)
Sector(
inner_radius=0.5,
outer_radius=0.8,
)
Sector(
inner_radius=1,
outer_radius=1.5,
)
Sector(
inner_radius=0.3,
outer_radius=1.8,
)

4. 附件
文中完整的代码放在网盘中了(arc.py),
下载地址: 完整代码 (访问密码: 6872)
manim边学边做--圆弧形的更多相关文章
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- Android圆弧形ListView的实现
本文带大家来实现ListView的圆弧形的分布排列,原理非常easy,就是依据ListView的每个Item的高度来对每个item进行偏移. 首先自己定义一个LinearLayout,这是ListVi ...
- 牛腩学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 ...
- 牛腩学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的制作过程(含后台接口的制作,放到自己买的阿里云服务器, ...
随机推荐
- BI小班课程表:PowerBI、finebi、quickbi,每周开课
为了帮助更多BI的友友更好的接触BI,并应用于实践工作中,我决定将我这些年的工作经验和付费咨询的实际经验,拿出一部分基础并且实用的知识和方法整理成课程.其中 PowerBI十节课,计划20个小时: F ...
- [UG 二次开发 python] 导出BOM表(包含图片)
只导出最底层的零件,零件的属性已经设置好,零件的截图生成后,放在零件的同一个文件夹下 用到了 xlsxwriter # nx: threaded # 导出BOM表 __version__ = &quo ...
- 跟我一起学习和开发动态表单系统-后端用spring boot、mybatis实现方法(4)
## 动态表单系统:利用 Spring Boot 和 MyBatis 实现后端服务 在现代企业应用中,表单是数据收集和处理的核心部分.然而,传统的表单系统难以适应快速变化的需求.为了解决这个问题,我们 ...
- 傻瓜式Java操作MySQL数据库备份(使用mysqldump命令)
傻瓜式Java操作MySQL数据库备份(使用mysqldump命令) 注释都是由chatGPT生成,有什么问题可以评论交流 @Value("${backup.sql.database}&qu ...
- Mysql与Redis如何保证数据的一致性?
问题分析: 当MySQL中的数据发生更新时,就面临一个问题,如何确保MySQL与Redis数据的一致性,我们有两个选择: 先更新MySQL,后删除(或更新)Redis 先删除(或更新)Redis,后更 ...
- HTTP 和 HTTPS,为什么HTTPS安全?
HTTP协议通常承载与 TCP协议之上,在HTTP和TCP之间添加一个安全协议层(SSL或TSL),这个时候,就成了我们常说的HTTPS 默认HTTP的端口号为80,HTTPS的端口号为443 因为网 ...
- 免费CDN使用整理
免费CDN使用整理 最近在使用web优化的时候,需要用到cdn,遇到了一些问题,比如某些cdn在特定的条件下访问不同,整理一波免费的CDN,任君采撷 名称 国家 链接 测速 特色 UNPKG 国外 h ...
- 怎么用git命令将其他分支的提交记录提取到当前分支上
您可以使用 Git 命令 "cherry-pick" 将其他分支的提交记录提取到当前分支上.以下是使用 cherry-pick 命令的步骤:1. 切换到当前分支: `git che ...
- STL 算法 <algorithm>,
STL 算法部分主要由头文件 <algorithm>,<numeric>,<functional > 组成.要使用 STL 中的算法函数必须包含头文件 < a ...
- PyCharm配置Miniconda3
打开PyCharm,点击"File"(文件)菜单,选择"Settings"(设置) 选择python interpreter中的配置 选择add 选择Conda ...