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

本篇介绍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. boltdb一瞥

    boltdb 网上关于boltdb的文章有很多,特别是微信公众号上,例如: boltdb源码分析系列-事务-腾讯云开发者社区-腾讯云 (tencent.com) 这些文章都写的挺好,但不一定覆盖了我所 ...

  2. 【JavaScript】js中的浅拷贝与深拷贝与手写实现

    前言 什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式.‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型: 基本数据类型(6种) String.Number.Object ...

  3. 9. 嵌套的 CMake

    9. 嵌套的 CMake 如果项目很大,或者项目中有很多的源码目录,在通过 CMake 管理项目的时候如果只使用一个 CMakeLists.txt ,那么这个文件相对会比较复杂,有一种化繁为简的方式就 ...

  4. oeasy教您玩转vim - 23 - 配置文件

    配置文件 回忆上节课内容 我们上次找到配置文件的位置 ~/.vimrc 了解各种配置开关 修改配置文件并应用 这次想了解和配色方案相关的内容 colorscheme vi ~/.vimrc.old 中 ...

  5. oeasy教您玩转vim - 50 - # 命令行效率

    ​ 命令行效率 回忆上节课内容 总结 我们上次研究的是范围命令执行方法 批量控制缩进 :20,40> 批量执行普通模式下的命令 :4,10normal A; 直接切换到全屏命令模式 ex-mod ...

  6. AppiumDesktop控制手机和安卓模拟器

    前言: 本期内容 如何用AppiumDesktop连接安卓手机和安卓模拟器 AppiumDesktop基本参数的获取方法,及如何驱动安卓设备 AppiumDesktop在模拟登陆和爬虫中用到的基本功能 ...

  7. linux的一些常用端口

    hdfs:9870 yarn:8088 sparkMaster的端口是:8080 worker的端口是:8081 历史服务器的默认端口是: 18080

  8. 【Spring】使用SpringTest报错 java.lang.NoSuchMethodError

    完整报错信息: "C:\Program Files\Java\jdk1.8.0_301\bin\java.exe" -ea -Didea.test.cyclic.buffer.si ...

  9. 【Java】JDBC Part5.1 Hikari连接池补充

    Hikari Connection Pool Hikari 连接池 HikariCP 官方文档 https://github.com/brettwooldridge/HikariCP Maven依赖 ...

  10. 【SVN】提交失败报错

    SVN提交失败: 最后信息是提示 请输入日志消息,至少需要20个字符,提交终止 问题原因是: 提交的时候不要把提交信息换行来写,SVN只会读取第一行内容 如果消息没有问题还提交失败,可能是文件因为提交 ...