多边形是常见的几何结构,它的形状看似千变万化,其实都可以由几种常用的多边形组合而成。

本篇介绍manim中提供的几个绘制常用多边形的模块。

  1. Triangle:等边三角形
  2. Square:正方形
  3. Rectangle:长方形
  4. RoundedRectangle:圆角的长方形
  5. Star:没有相交线的正多边形,图形类似带尖角的星形

1. 主要参数

这几个模块中,Triangle最简单,它没有自己特有的参数。

Square有一个参数:

参数名称 类型 说明
side_length float 正方形边的长度

Rectangle略微复杂一些,它可以平均分块形成表格。

参数名称 类型 说明
height float 长方形的高度
width float 长方形的宽度
grid_xstep float 划分长方体后,每列的宽度
grid_ystep float 划分长方体后,每行的高度

RoundedRectangle继承自Rectangle,可以使用Rectangle的所有参数,

此外,它还一个自己特有的参数。

参数名称 类型 说明
corner_radius float list[float]

RoundedRectangle四个角的曲率可以统一设置,也可以设置成不同的曲率。

Star模块之所以是这个名称,是因为它绘制出的图形像小星星。

参数名称 类型 说明
n int 星形图形有多少个尖角
outer_radius float 图形的外接圆半径
inner_radius float 图形的内切圆半径
density int 图形尖角的密度,inner_radius为设置时才有效
start_angle float 顶点开始的角度

如果对这些属性的含义看不明白也不要紧,后面结合示例展示星形图形在不同参数下的区别,

就能看的更明白一些了。

2. 使用示例

2.1. 等边三角形和正方形

等边三角形Triangle算是最简单的多边形了,它没有参数,

但是可以通过scalerotate等方法了改变它的大小和角度。

Triangle()

# 放大1.5倍
Triangle().scale(1.5) # 旋转180度
Triangle().rotate(PI)

正方形Square也简单,它只有一个参数,设置正方形的边长。

Square(side_length=0.5)
Square(side_length=1)
Square(side_length=2)

上面代码的显示效果如下:

2.2. 长方形

长方形Rectangle除了可以设置宽度width和高度height,还可以对其进行分块。

所谓分块,就是通过grid_xstepgrid_ystep参数讲长方形分割为一个个更小的矩形。

每个小矩形的宽度为width / grid_xstep,高度为height / grid_ystep

Rectangle(width=2, height=1)
Rectangle(width=1, height=3) # 分割为2行3列的矩形
Rectangle(
width=3,
height=2,
grid_xstep=1,
grid_ystep=1,
)

2.3. 圆角长方形

圆角长方形RoundedRectangle长方形Rectangle的区别在于,它可以设置4个角的曲率。

Rectangle具有的参数,RoundedRectangle也可以使用,包括分块的参数。

# 4个角的曲率相同
RoundedRectangle(
corner_radius=0.4,
)
# 对角曲率相同
RoundedRectangle(
corner_radius=[0.2, 0.6],
) # 4个角曲率都不同
RoundedRectangle(
corner_radius=[0.1, 0.6, 0.3, 0.9],
)

2.4. 星形

星形多边形Star是一种特殊的凹多边形,因其独特的形状和对称性,常被用作装饰图案和设计元素。

Star模块可以通过参数尖角的个数以及尖角的密度。

Star(n=5)

# density越大,尖角看上去越密集
Star(n=9, density=2)
Star(n=9, density=4)

3. 附件

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

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

manim边学边做--常用多边形的更多相关文章

  1. 学EE做硬件找工作不如学CS做软件,为什么会这样?

    学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...

  2. 牛腩学Kotlin做Android应用

    牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...

  3. Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。

    Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...

  4. php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)

    php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...

  5. html5-3 html5标签(热点地图如何实现)(边学边做)

    html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl  自定义列表dt  自定义标题dd  自定义列表内容 2. ...

  6. 第一份开发工作,边学边做android

    我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...

  7. 一起学爬虫——PyQuery常用用法总结

    什么是PyQuery PyQuery是一个类似于jQuery的解析网页工具,使用lxml操作xml和html文档,它的语法和jQuery很像.和XPATH,Beautiful Soup比起来,PyQu ...

  8. 边学边做,简单的 GraphQL 实例

    项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...

  9. 重学VUE——vue 常用指令有哪些?

    一.什么是指令? 在 vue 中,指令以 v- 开头,是一种特殊的自定义行间属性.指令属性的预期值是一个表达式,指令的职责就是:表达式的值改变时,相应地将某些行为应用到DOM上.只有v-for是一个类 ...

  10. LabVIEW Actor Framwork (2)________ 边学边做server&client

    回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...

随机推荐

  1. 我跟你说@RefreshScope跟Spring事件监听一起用有坑!

    本文记录一下我在 Spring 自带的事件监听类添加 @RefreshScope 注解时遇到的坑,原本这两个东西单独使用是各自安好,但当大家将它们组合在一起时,会发现我们的事件监听代码被重复执行.希望 ...

  2. 可视化—gojs 超多超实用经验分享(二)

    想了想序号还是接上一篇分享的的序号接着写,如果在本文中没有获取需要的答案,可以移步去看看上一篇的分享.gojs 超多超实用经验分享(一) 目录 22. 指定线段连接到节点的某一个特定的接口上 23. ...

  3. [MAUI 项目实战] 笔记App:程序设计

    前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能iOS ...

  4. sqoop 从数据库导入数据到hdfs

    前提 配置hadoop配置文件 前提 启动hadoop 配置hive 改名进入sqoop/conf 增加环境变量 tar xf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz ...

  5. 我的编程经历,从天桥地摊Basic到西藏阿里的.Net AOT。(一,从井到Sharp)

    撇清一层歧义:标题中的阿里不是指阿里巴巴集团,喜马拉雅也不是指那个做音频频道的公司,文中所及内容以及我本人都与他们没有任何关联.依照地理正式名称:阿里指的是西藏西部阿里地区,喜马拉雅指的是青藏高原地球 ...

  6. 电脑时间不同步导致的上网报错:core/proxy/vmess/encoding: failed to read response header > websocket: close 1006 (abnormal closure): unexpected EOF

    报错内容: 2023/12/16 14:08:56 [Warning] [775541588] xxxxx.com/core/app/proxyman/outbound: failed to proc ...

  7. 升级JDK时涉及的工作任务

    JDK版本升级,通常引入新的语言特性.新的API,废弃一些API,从而导致一些不兼容的现象. 因此在升级产品使用的JDK版本时,通常有如下考虑: 新产品包括新建设的项目以及刚启动不久的项目,使用高版本 ...

  8. Linux系统内核的作用

      Linux系统内核在操作系统中扮演着至关重要的角色,其作用主要体现在以下几个方面: 进程管理:内核负责创建和销毁进程,这是操作系统对计算机上正在运行的程序进行管理的核心部分.内核通过调度器对进程进 ...

  9. JAVA for Cplex(更新版)

    一.Cplex的介绍 Cplex是一种专门用来求解大规模线性规划问题的求解工具.不仅仅是LP问题,对于二次规划 QP,二次有约束规划QCP,混合整数线性规划MIP问题,甚至Network Flow问题 ...

  10. 【牛客刷题】BM50 两数之和

    本题的链接:BM50 两数之和 最初拿到这个题目首先想到的就是两个指针,然后向后遍历,于是写出来的代码也简明易懂: package main /** * * @param numbers int整型一 ...