manim边学边做--常用多边形
多边形是常见的几何结构,它的形状看似千变万化,其实都可以由几种常用的多边形组合而成。
本篇介绍manim中提供的几个绘制常用多边形的模块。
Triangle:等边三角形Square:正方形Rectangle:长方形RoundedRectangle:圆角的长方形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算是最简单的多边形了,它没有参数,
但是可以通过scale,rotate等方法了改变它的大小和角度。
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_xstep和grid_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边学边做--常用多边形的更多相关文章
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
学EE做硬件找工作不如学CS做软件,为什么会这样? 电子工程(EE)就业最好的方向居然是转计算机,也许让有的人觉得很不公平,EE也是很重要的学科,我们学习也很努力,为什么就业会不如CS?也有的人好奇, ...
- 牛腩学Kotlin做Android应用
牛腩学Kotlin做Android应用,蹭热度视频,边学边做, 01-kotlin插件安装及hello world 02-kotlin基础语法速览 哔哩哔哩观看地址:http://www.bilibi ...
- Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。
Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们. 这个是我将鸟哥书上的进行了一下整理的,希望不要涉及到版权问题. 1.显示日期的 ...
- php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习)
php实现记忆化递归--以斐波那契数列为例(还是以边学边做为主,注重练习) 一.总结 1.递归不优化的话,30层开外就有点吃力了 2.php因为定义变量的时候不用定义变量类型,所以数组里面的类型也是p ...
- html5-3 html5标签(热点地图如何实现)(边学边做)
html5-3 html5标签(热点地图如何实现)(边学边做) 一.总结 一句话总结:热点地图用绝对定位实现. 1.自定义列表怎么弄? dl 自定义列表dt 自定义标题dd 自定义列表内容 2. ...
- 第一份开发工作,边学边做android
我刚刚毕业,在培训学校学的Java web开发,虽然学的没有大学生那么丰富细致,没有他们理论基础扎实,但是这是我学习软件开发的唯一方式了. 从小学我学习就是倒数2.3等,所有人都认为我是个没法学习的孩 ...
- 一起学爬虫——PyQuery常用用法总结
什么是PyQuery PyQuery是一个类似于jQuery的解析网页工具,使用lxml操作xml和html文档,它的语法和jQuery很像.和XPATH,Beautiful Soup比起来,PyQu ...
- 边学边做,简单的 GraphQL 实例
项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...
- 重学VUE——vue 常用指令有哪些?
一.什么是指令? 在 vue 中,指令以 v- 开头,是一种特殊的自定义行间属性.指令属性的预期值是一个表达式,指令的职责就是:表达式的值改变时,相应地将某些行为应用到DOM上.只有v-for是一个类 ...
- LabVIEW Actor Framwork (2)________ 边学边做server&client
回顾下初始需求: 现在要做一个类似聊天的demo,一个server端,若干个client端:首先是server启动,通过server可以打开若干个client端,然后每个client可以独立给serv ...
随机推荐
- Spring面试题及答案
Spring 在ssm中起什么作用? Spring:轻量级框架 作用:Bean工厂,用来管理Bean的生命周期和框架集成. 两大核心: ①. IOC/DI(控制反转/依赖注入) :把dao依赖注入到s ...
- 洛谷P1365
WJMZBMR打osu! / Easy 题目背景 原 维护队列 参见 P1903 题目描述 某一天WJMZBMR在打osu~~~但是他太弱逼了,有些地方完全靠运气:( 我们来简化一下这个游戏的规则 有 ...
- [oeasy]python0120_英语的崛起_英文字符_小写字母的由来_不列颠帝国
各语言字符编码 回忆上次内容 罗马 承袭了 希腊的文化 学习了 希腊的字符 拥有 罗马帝国的战力 基督教文化的影响 添加图片注释,不超过 140 字(可选) 这个时候 不列颠 ...
- Langchain 与 LlamaIndex:LLM 应用开发框架的比较与使用建议
Langchain 和 Llamaindex 是两种广泛使用的主流 LLM 应用开发框架.两者有什么不同?我们该如何使用?以下我根据各类资料和相关文档做了初步选型. 一.Langchain 1. 适用 ...
- Sysbench 使用总结
Sysbench使用总结 实践环境 CentOS 7.8 Sysbench 1.0.20 下载地址:https://github.com/akopytov/sysbench/archive/refs/ ...
- 搭建lnmp环境-nginx(第一步)
建议: 本次lnmp采用yum形式安装,编译安装过于繁琐,操作不好还不如yum安装,所以不推荐. 全部安装在宿主机上,如果需要安装多个版本的软件才使用docker nginx无所谓版本了 刚安装好系统 ...
- 2023/4/22 SCRUM个人博客
1.我昨天的任务 学习如何使用QTdesign,并完善UI 2.遇到了什么困难 在QTable上无法理解前后端互通·的问题 3.我今天的任务 学习Qt知识QTableWidgetItem完善Pyqt5 ...
- (续)signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) —— 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程编程模式(信号与槽机制) —— python3.12版本下成功通过测试
前文: signal-slot:python版本的多进程通信的信号与槽机制(编程模式)的库(library) -- 强化学习ppo算法库sample-factory的多进程包装器,实现类似Qt的多进程 ...
- PIL 和 python-opencv 从内存字节码中读取图片并转为np.array格式
把某个RGB格式的图片以字节码的形式读入到内存中,然后使用PIL 和 CV2 来进行读写,并转成np.array 格式. 代码: from PIL import Image import cv2 im ...
- java多线程之ReentrantLock详解
1.背景 2.基本语法 public class Test01 { // 定义锁 static ReentrantLock reentrantLock = new ReentrantLock(); p ...