首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

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

编程知识
2024年09月10日 14:21

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

本篇介绍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)

From:https://www.cnblogs.com/wang_yb/p/18406455
本文地址: http://shuzixingkong.net/article/1923
0评论
提交 加载更多评论
其他文章 RS485与ModbusRTU
前言 大家好!我是付工。 每次听到别人说RS485通信协议,就很想去纠正他。 今天跟大家聊聊关于RS485的那些事。 接口标准 首先明确一点,RS485不是通信协议,而是一种接口标准,它还有2个兄弟:RS232和RS422。 RS是Recommend Standard的缩写,对于串口通信,目前工业领
RS485与ModbusRTU RS485与ModbusRTU RS485与ModbusRTU
C++:使自定义类支持迭代器
概述 在 C++ 中,链表迭代器是一种用来遍历链表(如 std::list)元素的工具。链表是一种数据结构,其中每个元素(节点)包含一个数据值和一个指向下一个节点的指针。链表迭代器允许以类似于数组的方式访问链表中的元素,但不需要直接操作指针。 链表迭代器的作用 访问元素:链表迭代器使你能够顺序访问链
Activity启动模式
Activity启动模式 1. Activity启动模式介绍 1.1 任务栈 在Android开发中,任务栈(Task Stack)是一个非常重要的概念,主要用于管理应用程序中的Activity及其启动模式。它帮助开发者了解当用户在不同应用之间切换,或者应用内部不同Activity之间跳转时,系统如
Activity启动模式 Activity启动模式 Activity启动模式
剖析 Redis List 消息队列的三种消费线程模型
Redis 列表(List)是一种简单的字符串列表,它的底层实现是一个双向链表。 生产环境,很多公司都将 Redis 列表应用于轻量级消息队列 。这篇文章,我们聊聊如何使用 List 命令实现消息队列的功能以及剖析消费者线程模型 。 1 核心流程 生产者使用 LPUSH key
剖析 Redis List 消息队列的三种消费线程模型 剖析 Redis List 消息队列的三种消费线程模型 剖析 Redis List 消息队列的三种消费线程模型
Qml 实现瀑布流布局
最近在刷掘金的时候看到一篇关于瀑布流布局的文章,然鹅他们的实现都是前端的那套,就想着 Qml 有没有类似实现。 结果百度了一圈也没有( T_T Qml 凉了凉了 ),于是,我按照自己理解,简单实现了一个 Qml 版的瀑布流布局。
Qml 实现瀑布流布局 Qml 实现瀑布流布局 Qml 实现瀑布流布局
Go runtime 调度器精讲(一):Go 程序初始化
原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 本系列将介绍 Go runtime 调度器。要学好 Go 语言,runtime 运行时是绕不过去的,它相当于一层“操作系统”对我们的程序做“各种类型”的处理。其中,调度器作为运行时的核心,是必须要了解的内容。本系列会结合 Go plan9 汇编
Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(一):Go 程序初始化
以太坊Rollup方案之 arbitrum(1)
title: 以太坊Rollup方案之 arbitrum(1) author: ivhu date: 2024-09-10 20:56:05 categories: - 区块链 - 以太坊 tags: - 以太坊 - L2 - arbitrum description: 什么是Rollup? 以太坊
以太坊Rollup方案之 arbitrum(1) 以太坊Rollup方案之 arbitrum(1) 以太坊Rollup方案之 arbitrum(1)
不升级 POI 版本,如何生成符合新版标准的Excel 2007文件
开心一刻 记得小时候,家里丢了钱,是我拿的,可爸妈却一口咬定是弟弟拿的 爸爸把弟弟打的遍体鳞伤,弟弟气愤的斜视着我 我不敢直视弟弟,目光转向爸爸说到:爸爸,你看他,好像还不服 问题描述 项目基于 POI 4.1.2 生成 Excel 2007 文件,已经对接了很多客户,也稳定运行了好几年了;就在前两
不升级 POI 版本,如何生成符合新版标准的Excel 2007文件 不升级 POI 版本,如何生成符合新版标准的Excel 2007文件 不升级 POI 版本,如何生成符合新版标准的Excel 2007文件