manim边学边做--弧形多边形
  6m3lfiEqOqHp 4天前 27 0

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

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

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

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

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

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)

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 4天前 0

暂无评论

推荐阅读
  np65ry6OHvjk   10天前   32   0   0 Python
6m3lfiEqOqHp