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 ...
随机推荐
- Simple WPF: WPF自定义一个可以定义步长的SpinBox
最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园. 通过WPF的按钮.文本输入框实现了一个简单的SpinBox数字输入用户组件并可以通过数据绑定数值和步长.本文中介绍了通过Xaml代码 ...
- 转载 | win11右键菜单改为win10的bat命令(以及恢复方法bat)
原文来自这里:https://blog.51cto.com/knifeedge/5340751 版权归:IT利刃出鞘 本质上就是写入注册表. 一.右键菜单改回Win10(展开) 1. 新建文件:win ...
- 第八节 JMeter基础-高级登录【数据库数据驱动】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:获取数据库用户表中的数据进行登录接口测试.思路: 引用jar包[测试计划]. 设置数据库的连接信息,取变量名db1-- ...
- SQL Server 查询分析及优化方法
一.影响速度的因素 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) I/O吞吐量小,形成了瓶颈效应 没有创建计算列导致查询不优化 内存不足 网络速度慢 查询出的数据量过大(可以采 ...
- 01-初识springboot
目录 01,什么是springboot 02,如何使用springboot 01,什么是springboot springboot是一个基于spring框架开发出来的一个新的框架,目的是为了简化spr ...
- MFC BCG 一些记录
MFC: UpdateData (TRUE) // 更新值到控件 UpdateData (TRUE) // 更新控件到值DECLAREMESSAGEMAPBEGINMESSAGEMAP(d ...
- iframe嵌入svg图片动态更改文本样式并进行缩放等功能实现拓扑图
好久没更了,近期开发遇到的需求,抽空梳理一下~ 需求:实现一个复杂的拓扑图,图中元素的个数,以及各个参数内容是动态展示的. 于是让ui提供了对应的svg图片. 解决思路:使用iframe嵌入svg图片 ...
- WordPress基础之主题和插件安装
本篇文章学习WordPress如何安装主题.插件.同时推荐几个我常用的主题.插件及其设置方法. WordPress有海量的主题和插件,有付费的,也有免费的.每个主题都有自己的优缺点,当然,你可以在WP ...
- scratch源码下载 | 超大太空游戏【80MB】
按方向键或AWSD键控制角色移动,按空格键或X键攻击. 程序超级大,共80MB,耐心等待加载. 截图: 点击下载源码 更多源码访问:小虎鲸scratch资源站
- 【OracleDB】 10g 安装(Windows)
Win7系统环境建议右键[管理员身份运行] - 指明选择的安装目录在哪[只更换盘符即可,对官方默认的目录不更改] - 安装类型选择企业版 - 安装Oracle的同时创建数据库服务[数据库] - 口令即 ...