processing软件使用python_【教程/笔记】自动生成回旋图形 (Processing+Python)

前言

关键词: 回旋图形,泰森多边形(Voronoi),Processing,Python,生成艺术

由于专栏暂时不支持文章位置跳转,为方便大家阅读,可Crtl/Command + F搜索以下关键词跳转到对应位置。

0. 成品展示

1. Processing + Python

1.1 WHY

1.2 Hello World:第一次握手

2. 生成回旋子多边形

3. 多边形分割

3.1 泰森多边形 (Voronoi Diagram)

3.2 随机点坐标的生成和命名规则

3.3 泰森多边形裁剪

3.4 填充回旋子多边形 (完结)

3.5 Bonus: 递归泰森图

4. 读者作品

1.1 WHYp>

1.2 Hello World: 第一次握手

部署本地Python服务端

该项目Python后端开发使用的框架是FastAPI。在Python3.6+的环境下,需要安装fastapi和uvicorn两个框架。

接下来我们创建一个新文件,命名为“server.py”,并复制如下代码

在终端执行python server.py后,我们就能通过在浏览器中输入“127.0.0.1:5699”得到返回结果(图1-3)。

如果不成功,请不要灰心,我会在置顶评论中提供该项目源码。如果你对该项目有任何问题或建议,可以发送到评论区、私信或Issue。

为了灵活地控制子多边形的形态,我定义了以下4个参数:displacement_f: 子多边形节点相对于父多边形各边长度位移的比例

displacement: 子多边形在父多边形各边上位移的距离

min_area: 子多边形的最小面积

max_iter: 子多边形最多个数

动画演示(图2-1):

因此,我们需要在多边形顶点数量过多时删除一些顶点,幸运的是,Shapely库的simplify函数可以达到该目的: 移除掉多余的顶点后,我们能得到以下结果(图2-3)

3. 多边形分割

3.1 泰森多边形 (Voronoi Diagram)

本项目主要使用泰森法分割画板多边形。生活中,泰森多边形无处不在,王八壳、碎玻璃、石墙、哈密瓜皮、泥地甚至蜥蜴的皮肤上都有泰森多边形的特征(图3-2)。

根据上图(图3-3)我们可以大致推测出使用每个库构建泰森多边形的时间复杂度:Scipy

经过将近2个小时的debug,我终于发现了端倪:scipy.spatial.Voronoi会使用-1这个索引来表示处于无限远的顶点,但该索引下储存的点坐标毫无意义 – 该坐标的索引仅用于告诉scipy不要将无限远的顶点考虑到计算中。解决办法也很简单:在points中添加四个划定画板边界的点,且regions中不再考虑包含-1索引的多边形(图3-5)。

以上就是该项目制作的完整过程,欢迎补充。

3.5 Bonus: 递归泰森图

前面的方法中我们讲了如何根据给定的画板区域裁剪泰森多边形,那如果我们以泰森多边形的每个子多边形为画板,在其内部再次生成新的泰森多边形,如此往复呢将会得到下面的结果(图3-7、图3-8)

代码和制作思路我会近期投稿到新的专栏,请各位耐心等待。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214541 人正在系统学习中 相关资源:WPE封包软件- 络监控工具类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月25日
下一篇 2021年1月25日

相关推荐