首页 > 其他分享 >manim边学边做--弧形多边形

manim边学边做--弧形多边形

时间:2024-09-15 16:36:10浏览次数:8  
标签:angle -- vertices radius 弧形 ArcPolygon 多边形 边学边 manim

弧形多边形是一种结合了圆弧多边形的图形,这类几何图形在设计中应用非常广泛。

比如在家居设计中,看看家里的沙发,餐桌和座椅等,它们的边角,靠背等地方都是弧形的设计,这种设计有效柔化了室内空间,使整体氛围更加和谐自然。

还有景观和建筑设计中,弧形多边形常被用于道路规划、花坛布局等,

特别是儿童游乐的区域,通过自由的弧线设计,不仅符合儿童活泼好动的天性,还能激发他们的想象力和创造力。

在艺术设计领域,弧形多边形用的就更多了,在图形、标志、海报等的创作中,弧形多边形独特的形状和视觉效果能够吸引观众的注意力,传达出设计者的意图和情感。

manim中提供了2个模块来构造弧形多边形:

  1. ArcPolygon:通过顶点和弧度来构造弧形多边形
  2. ArcPolygonFromArcs:通过圆弧来构造弧形多边形

这两个模块的主要区别在于构造弧形多边形的过程不同,一个是通过顶点,一个是通过圆弧,

最终构造出的弧形多边形并没有什么不同。

1. 主要参数

ArcPolygon的主要参数有:

参数名称 类型 说明
vertices Point3D 多边形的顶点列表
angle float 统一设置所有弧的弧度
radius float 统一设置所有弧的半径
arc_config list[dict] 分别设置每个弧的弧度

顶点vertices确定之后,angleradius设置每两个顶点之间弧的弯曲程度。

angleradius参数只能使用一个,同时使用的话,angle参数无效。

angleradius是统一设置多边形所有弧的弧度,arc_config可以设置每个弧拥有不同的弧度。

ArcPolygonFromArcs的参数比较简单。

参数名称 类型 说明
arcs Arc 弧形的集合

注意,如果参数传入的弧形列表arcs不能构成一个闭合的多边形,

那么,manim会自动把arcs中最后一个弧形的终点与第一个弧形的起点用直线连接起来,形成闭合的多边形。

这两个模块(ArcPolygonArcPolygonFromArcs)构造的弧形多边形没有区别,在制作动画时根据实际情况选用不同的模块。

如果有顶点信息,那么用ArcPolygon来构造多边形,如果有各个圆弧的信息,那么用ArcPolygonFromArcs来构造多边形。

2. 使用示例

2.1. 统一设置弧度

使用angle可以统一设置弧形多边形中每条边的弧度,弧度设置的越大,边的弯曲度越大。

vertices = [UR, UL, DL, DR]

ArcPolygon(*vertices, angle=0)
ArcPolygon(*vertices, angle=60 * DEGREES)
ArcPolygon(*vertices, angle=120 * DEGREES)

2.2. 统一设置半径

使用radius也可以设置弧形多边形中每条边的弯曲度,radius是指构成弧形的两个顶点所在圆的半径。

所以radius越大,边的弯曲度越小。

vertices = [UR, UL, DL, DR]

ArcPolygon(*vertices, radius=10)
ArcPolygon(*vertices, radius=1)
ArcPolygon(*vertices, radius=2)

2.3. 分别设置每个弧

参数angleradius是用来统一设置所有边的弯曲度的,

如果我们想给弧形多边形的每条边设置不同的弧度,就要使用arc_config参数。

vertices = [UR, UL, DL, DR]

arc_config = [
    {"angle": 30 * DEGREES},
    {"angle": 90 * DEGREES},
    {"radius": 2},
    {"radius": 5},
]

ArcPolygon(*vertices, arc_config)

通过arc_config不仅可以设置每个弧的弯曲度,也可以设置它们线的粗细,颜色等等属性。

2.4. 通过圆弧构造多边形

ArcPolygonFromArcs是通过一系列圆弧来构造多边形的,所以不需要angleradius这些参数了。

因为构造每个圆弧时已经设置好圆弧的弯曲度和相关属性了。

arc1 = ArcBetweenPoints(
    angle=PI / 6, # 30度
    color=BLUE,
)
arc2 = ArcBetweenPoints(
    angle=PI / 3, # 60度
    color=GREEN,
)
arc3 = ArcBetweenPoints(
    angle=PI / 2, # 90度
    color=YELLOW,
)
arc4 = ArcBetweenPoints(
    angle=2 * PI / 3, # 120度
    color=RED,
)

ArcPolygonFromArcs(arc1, arc2, arc3, arc4)

2.5. 缺失圆弧时的多边形

上面的示例中,使用ArcPolygonFromArcs构造多变形时,传入的4个圆弧合起来正好是闭合的。

如果传入的圆弧不是闭合的会怎么样呢?

ArcPolygonFromArcs会自动将不闭合部分用直线相连,

也就是前一个圆弧的终点和下一个圆弧的起点用直线相连,最终构成一个闭合的多边形。

arc1 = ArcBetweenPoints(
    angle=PI / 6, # 30度
    color=BLUE,
)
arc3 = ArcBetweenPoints(
    angle=PI / 2, # 90度
    color=YELLOW,
)

ArcPolygonFromArcs(arc1, arc3)

缺失的部分就是上面白色直线连接的部分。

3. 附件

文中完整的代码放在网盘中了(arc_polygon.py),

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

标签:angle,--,vertices,radius,弧形,ArcPolygon,多边形,边学边,manim
From: https://www.cnblogs.com/wang_yb/p/18415355

相关文章

  • 帝国cms默认密码怎么改回来
    要将帝国CMS的默认密码改回,可以通过数据库直接修改密码。以下是一些步骤来指导你如何操作:对于帝国CMS5.0及更低版本登录数据库:使用数据库管理工具(如phpMyAdmin或Navicat)登录管理帝国CMS数据库。查找用户表:在数据库中找到名为phome_enewsuser的表,该表存储了用户相关......
  • 帝国cms手机端设置在哪里
    在帝国CMS中设置手机端的相关配置,可以按照以下步骤进行:登录后台:打开帝国CMS的后台管理界面,输入用户名和密码登录。进入系统设置:在后台管理界面中,找到“系统设置”菜单项。进入手机版设置:在“系统设置”菜单中,找到“手机版设置”选项,并点击进入。开启手机版:......
  • 帝国cms和织梦哪个好
    帝国CMS和织梦CMS都是基于PHP语言的内容管理系统(CMS),各自具有一定的优势和劣势。选择哪一个更适合你,取决于你的具体需求、技术水平以及对未来的规划。下面是两者的比较,帮助你做出决策:织梦CMS(DEDECMS)优点用户友好度:织梦CMS以其简洁的后台界面和易于使用的特性受到许多用户的......
  • Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux
    Ubuntu22.04.5LTS(JammyJellyfish)-现代化的企业与开源LinuxUbuntu22.04.5发布,配备Linux内核6.8请访问原文链接:https://sysin.org/blog/ubuntu-2204/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCanonical发布了Ubuntu22.04.5LTS,作为Ubuntu22.0......
  • DEDECMS怎么调用当前文档中TAG标签
    在DEDECMS中调用当前文档中的TAG标签,可以通过在模板文件中使用特定的标签来实现。以下是具体的步骤和示例代码:步骤1:打开模板文件找到你想要显示TAG标签的模板文件,例如文章详情页的模板文件。步骤2:添加调用TAG标签的代码在模板文件中,使用{dede:field}标签来调用当前文档......
  • 【USB3.0协议学习】Topic1·USB3.0Hub的一些机制
    一、USB3.0Hub的单播(非广播)机制Hub通过解析下行packetheader中的RouteString字段识别packet要传递的终点,其中4'b0000代表hub本身,4'b0001-4'b1111分别代表hub的各downstreamport,由于USB3.0规定HostController最多级联5级hub,所以每个packetheader中的RouteString字段共有4x5......
  • 记一次nginx布署spring cloud项目后,jar包运行正常,但访问静态资源报404的问题。
    1、我们知道springcloud,是通过注册中心来注册所有的应用,这里面也包括网关gateway的注册:2、这里面我们运行了consoleapplication应用,这样里面就有一个Instance。3、测试静态资源的访问:4、consoleapplication结构:5、访问单个模块里的资源是正常的,但是上了服务器,nginx布......
  • CPU 是如何执行程序的
    CPU是如何执行程序的中央处理器(CPU)是计算机的“大脑”,负责处理所有程序的指令。它通过执行一系列机器语言指令来完成计算和控制任务。本文将深入介绍CPU如何从内存中获取指令、解码并执行它们的过程。一、CPU的基本构成在了解CPU如何执行程序之前,首先需要理解CPU的主要组成部......
  • JAVA基础之六-Stream(流)简介
    我在别的篇幅已经说过:流这个东西偶尔可以用用,但我个人最大的学习动力(目前)仅仅是为了有助于阅读spring越发繁复的源码 本文主要介绍Stream接口(包括主要的方法)和相关的几个主要接口:Predicate、Consumer、Supplier还有Collector接口,Collectors工具类。由于网上已经有太多的文章......
  • 语言 题解
    语言题解本题其实没有什么好说的,主要是提供一种强大的,神秘的,诡异的,跑得飞快的,逆天的,唐诗的双\(\log\)做法首先考虑将答案分类,分成跨过这个语言的lca的和没跨过的对于没跨过的,可以发现就是对于每个点,求能扩展到的深度最低的节点,这个直接暴力做就是\(O(n)\)的,所以说我们直......