翼度科技»论坛 编程开发 python 查看内容

manim边学边做--常用多边形

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
多边形是常见的几何结构,它的形状看似千变万化,其实都可以由几种常用的多边形组合而成。
本篇介绍manim中提供的几个绘制常用多边形的模块。

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

1. 主要参数

这几个模块中,Triangle最简单,它没有自己特有的参数。
Square有一个参数:
参数名称类型说明side_lengthfloat正方形边的长度Rectangle略微复杂一些,它可以平均分块形成表格。
参数名称类型说明heightfloat长方形的高度widthfloat长方形的宽度grid_xstepfloat划分长方体后,每列的宽度grid_ystepfloat划分长方体后,每行的高度RoundedRectangle继承自Rectangle,可以使用Rectangle的所有参数,
此外,它还一个自己特有的参数。
参数名称类型说明corner_radiusfloatlist[float]RoundedRectangle四个角的曲率可以统一设置,也可以设置成不同的曲率。
Star模块之所以是这个名称,是因为它绘制出的图形像小星星。
参数名称类型说明nint星形图形有多少个尖角outer_radiusfloat图形的外接圆半径inner_radiusfloat图形的内切圆半径densityint图形尖角的密度,inner_radius为设置时才有效start_anglefloat顶点开始的角度如果对这些属性的含义看不明白也不要紧,后面结合示例展示星形图形在不同参数下的区别,
就能看的更明白一些了。
2. 使用示例

2.1. 等边三角形和正方形

等边三角形Triangle算是最简单的多边形了,它没有参数,
但是可以通过scale,rotate等方法了改变它的大小和角度。
  1. Triangle()
  2. # 放大1.5倍
  3. Triangle().scale(1.5)
  4. # 旋转180度
  5. Triangle().rotate(PI)
复制代码
正方形Square也简单,它只有一个参数,设置正方形的边长。
  1. Square(side_length=0.5)
  2. Square(side_length=1)
  3. Square(side_length=2)
复制代码
上面代码的显示效果如下:

2.2. 长方形

长方形Rectangle除了可以设置宽度width和高度height,还可以对其进行分块。
所谓分块,就是通过grid_xstep和grid_ystep参数讲长方形分割为一个个更小的矩形。
每个小矩形的宽度为width / grid_xstep,高度为height / grid_ystep。
  1. Rectangle(width=2, height=1)
  2. Rectangle(width=1, height=3)
  3. # 分割为2行3列的矩形
  4. Rectangle(
  5.     width=3,
  6.     height=2,
  7.     grid_xstep=1,
  8.     grid_ystep=1,
  9. )
复制代码

2.3. 圆角长方形

圆角长方形RoundedRectangle和长方形Rectangle的区别在于,它可以设置4个角的曲率。
Rectangle具有的参数,RoundedRectangle也可以使用,包括分块的参数。
  1. # 4个角的曲率相同
  2. RoundedRectangle(
  3.     corner_radius=0.4,
  4. )
  5. # 对角曲率相同
  6. RoundedRectangle(
  7.     corner_radius=[0.2, 0.6],
  8. )
  9. # 4个角曲率都不同
  10. RoundedRectangle(
  11.     corner_radius=[0.1, 0.6, 0.3, 0.9],
  12. )
复制代码

2.4. 星形

星形多边形Star是一种特殊的凹多边形,因其独特的形状和对称性,常被用作装饰图案和设计元素。
Star模块可以通过参数尖角的个数以及尖角的密度。
  1. Star(n=5)
  2. # density越大,尖角看上去越密集
  3. Star(n=9, density=2)
  4. Star(n=9, density=4)
复制代码

3. 附件

文中完整的代码放在网盘中了(polygon01.py),
下载地址: 完整代码 (访问密码: 6872)

来源:https://www.cnblogs.com/wang_yb/p/18406455
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具