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 ...
随机推荐
- 我跟你说@RefreshScope跟Spring事件监听一起用有坑!
本文记录一下我在 Spring 自带的事件监听类添加 @RefreshScope 注解时遇到的坑,原本这两个东西单独使用是各自安好,但当大家将它们组合在一起时,会发现我们的事件监听代码被重复执行.希望 ...
- 可视化—gojs 超多超实用经验分享(二)
想了想序号还是接上一篇分享的的序号接着写,如果在本文中没有获取需要的答案,可以移步去看看上一篇的分享.gojs 超多超实用经验分享(一) 目录 22. 指定线段连接到节点的某一个特定的接口上 23. ...
- [MAUI 项目实战] 笔记App:程序设计
前言 有人说现在记事类app这么多,市场这么卷,为什么还想做一个笔记类App? 一来,去年小孩刚出生,需要一个可以记录喂奶时间的app,发现市面上没有一款app能够在两步内简单记录一个时间,可能iOS ...
- sqoop 从数据库导入数据到hdfs
前提 配置hadoop配置文件 前提 启动hadoop 配置hive 改名进入sqoop/conf 增加环境变量 tar xf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz ...
- 我的编程经历,从天桥地摊Basic到西藏阿里的.Net AOT。(一,从井到Sharp)
撇清一层歧义:标题中的阿里不是指阿里巴巴集团,喜马拉雅也不是指那个做音频频道的公司,文中所及内容以及我本人都与他们没有任何关联.依照地理正式名称:阿里指的是西藏西部阿里地区,喜马拉雅指的是青藏高原地球 ...
- 电脑时间不同步导致的上网报错: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 ...
- 升级JDK时涉及的工作任务
JDK版本升级,通常引入新的语言特性.新的API,废弃一些API,从而导致一些不兼容的现象. 因此在升级产品使用的JDK版本时,通常有如下考虑: 新产品包括新建设的项目以及刚启动不久的项目,使用高版本 ...
- Linux系统内核的作用
Linux系统内核在操作系统中扮演着至关重要的角色,其作用主要体现在以下几个方面: 进程管理:内核负责创建和销毁进程,这是操作系统对计算机上正在运行的程序进行管理的核心部分.内核通过调度器对进程进 ...
- JAVA for Cplex(更新版)
一.Cplex的介绍 Cplex是一种专门用来求解大规模线性规划问题的求解工具.不仅仅是LP问题,对于二次规划 QP,二次有约束规划QCP,混合整数线性规划MIP问题,甚至Network Flow问题 ...
- 【牛客刷题】BM50 两数之和
本题的链接:BM50 两数之和 最初拿到这个题目首先想到的就是两个指针,然后向后遍历,于是写出来的代码也简明易懂: package main /** * * @param numbers int整型一 ...