首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

manim边学边做--圆弧形

编程知识
2024年08月20日 09:04

圆弧形可以算是一种特殊的圆形,它是圆形的一部分。
manim中,单独为圆弧形状封装了几个模块:

  1. Arc:通用的圆弧,根据半径和角度来绘制圆弧
  2. ArcBetweenPoints:根据两个点和角度来绘制圆弧
  3. AnnularSector:环形圆弧,相当于是圆环的一部分
  4. Sector:扇形,始终是1/4个圆环。

其中,ArcBetweenPointsAnnularSector继承自ArcSector继承自AnnularSector

image.png
圆弧系列的模块位于manim中的Mobject之下。

1. 主要参数

模块Arc的主要参数有:

参数名称 类型 说明
radius float 圆弧的半径
start_angle float 圆弧开始的弧度
angle float 圆弧的弧度
num_components int 组成弧的片段,这个值越大,弧越圆滑
arc_center Point3D 圆弧对应的圆心位置

圆弧的起点和终点是由start_angleangle控制的,
start_angle参数控制圆弧的起点,默认值是0(圆心右边为0度);
angle参数是圆弧的弧度,start_angle + angle的值就是圆弧的终点,
angle是逆时针计算的。
image.png

模块ArcBetweenPoints的主要参数有:

参数名称 类型 说明
start Point3D 圆弧的起点
end Point3D 圆弧的终点
angle float 圆弧的弧度
raduis float 圆弧的半径

这个模块是根据两个点(startend)来绘制圆弧,
angleraduis参数只能设置一个,用来控制圆弧的弧长。
startend固定时,angle越大,弧长越长;raduis越大,弧长越短。

模块AnnularSector的主要参数有:

参数名称 类型 说明
inner_radius float 环状弧形的内半径
outer_radius float 环状弧形的外半径
start_angle float 环状弧形开始的弧度
angle float 环状弧形的弧度

inner_radiusouter_radius的差形成了一个环形;
start_angleangle的含义与模块Arc中的同名参数一样。

模块Sector的主要参数:

参数名称 类型 说明
inner_radius float 环状弧形的内半径
outer_radius float 环状弧形的外半径

Sector模块只有inner_radiusouter_radius两个参数,因为它默认为1/4个圆环。

2. 主要方法

这几个模块的作用主要是展示图形,所以方法不多,常用的有两个:

名称 说明
get_arc_center 获取弧形当前的圆心坐标
move_arc_center_to 设置弧形新的圆心坐标

3. 使用示例

下面分别针对4种圆弧形的模块的参数,演示一些示例。

3.1. 通用圆弧

通用的的圆弧Arc是最常用的,start_angleangle设置圆弧的起点和弧度,
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,
)

out.gif

3.2. 根据两点生成圆弧

从固定的两点生成圆弧ArcBetweenPoints也是在制作动画时常用的方式,
参数startend设置圆弧的起点和终点;
angleradius设置圆弧的弯曲程度,这两个参数只能使用一个,同时设置时只有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控制圆弧的度数。
out.gif

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,
)

out.gif

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,
)

out.gif

4. 附件

文中完整的代码放在网盘中了(arc.py),
下载地址: 完整代码 (访问密码: 6872)

From:https://www.cnblogs.com/wang_yb/p/18368851
本文地址: http://www.shuzixingkong.net/article/1257
0评论
提交 加载更多评论
其他文章 RISC-V全志D1多媒体套件文章汇总
提示 此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/aw/d1/57 文章目录汇总 教程共计14章,下面是章节汇总: 第0章_RISC-V全志D1多媒体套件 第1章_快速启动 1_1 快速开始使用 1_2 学习路线 第2章_安装并配置
线上问题排查——接口长时间未响应
刚看到鱼皮的文章,一下午连续故障两次,谁把我们接口堵死了?!,想起之前刚进公司时遇到了一个类似问题 线上接口访问不通,超时等待,但是看后台日志是正常运行的,进服务器看监控,CPU 占用100%,经典面试题了 使用jsp -l 和 jstack <进程PID> > stack.txt
线上问题排查——接口长时间未响应
使用CyFES对配体运动轨迹进行数据透视
分子动力学模拟是一个以时间换空间的方法,那么在时间尺度上留下轨迹之后,如何把轨迹做一个静态的展现,正是数据透视所解决的问题。CyFES是一个开源的、基于GPU硬件加速的数据透视高性能计算工具,我们通过一个蛋白-配体相互作用的运动轨迹的示例,演示一下CyFES的基本使用方法。
使用CyFES对配体运动轨迹进行数据透视 使用CyFES对配体运动轨迹进行数据透视 使用CyFES对配体运动轨迹进行数据透视
DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024
Differentiable Model Scaling(DMS)以直接、完全可微的方式对宽度和深度进行建模,是一种高效且多功能的模型缩放方法。与先前的NAS方法相比具有三个优点:1)DMS在搜索方面效率高,易于使用。2)DMS实现了高性能,可与SOTA NAS方法相媲美。3)DMS是通用的,与各种
DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024 DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024 DMS:直接可微的网络搜索方法,最快仅需单卡10分钟 | ICML 2024
深入分析与解决方案:缓存与数据库双写不一致问题
总之,在选择是否使用缓存及其设计时,需要根据业务场景和数据一致性要求进行权衡。缓存应主要用于提升读操作性能,而对于写多读多且对一致性要求高的场景,可能需要依赖数据库本身的能力或采用其他策略来处理数据的一致性问题。
深入分析与解决方案:缓存与数据库双写不一致问题 深入分析与解决方案:缓存与数据库双写不一致问题 深入分析与解决方案:缓存与数据库双写不一致问题
Docker 容器中镜像导出/导入
目录【容器】镜像导出/导入导出导入带标签不带标签,后期修改【仓库】镜像导出/导入导出导入导入(完整命令) 创建一个简单的Docker镜像 利用docker ps -a命令查看要导出的镜像。 【容器】镜像导出/导入 导出 查看要导出的镜像 [root@localhost ~]# docker ps -
Docker 容器中镜像导出/导入 Docker 容器中镜像导出/导入 Docker 容器中镜像导出/导入
.NET 9 优化,抢先体验 C# 13 新特性
前言 微软即将在 2024年11月12日发布 .NET 9 的最终版本,而08月09日发布的.NET 9 Preview 7 是最终发布前的最后一个预览版。这个版本将与.NET Conf 2024一同亮相,并已与 Visual Studio 2022 17.12 预览版1一同发布,可以直接通过Vis
.NET 9 优化,抢先体验 C# 13 新特性 .NET 9 优化,抢先体验 C# 13 新特性
寻访中国100家.NET中大企业 —— 第二站:苏州行
一:事情起因 在.NET圈里混了十多年,相信有不少人知道我专注于玩 .NET高级调试,如今技术上的硬实力还是能够解决市面上的一些疑难杂症,但软实力却在另一个极端,如(人际交往,人情事故),所以就萌生了刻意训练的念头,便自我发起了这个活动 "寻访中国100家.NET中大企业"。 二
寻访中国100家.NET中大企业 —— 第二站:苏州行 寻访中国100家.NET中大企业 —— 第二站:苏州行 寻访中国100家.NET中大企业 —— 第二站:苏州行