沃罗诺伊图 (Voronoi diagram)
沃罗诺伊图 (Voronoi diagram)
Introduction: what is voronoi diagram?
沃罗诺伊图 (Voronoi diagram),取名自俄罗斯数学家乔治·沃罗诺伊(Georgy Voronoi)。这是一个自然界中经常出现的简单的数学震撼(笑),在科学技术领域也有许许多多的应用(图像处理、路径规划..好像是)
以上面的Voronoi diagram为例,图上有40个随机放置的核(nucleus),以及围住这些点的区域(Region).一眼之下,这些图好像杂乱无章,没有什么规律可寻。但是仔细观察可以发现,Region围住的点离各自的核最接近。
Voronoi diagram的特点是:每一个Region围住的点都是离各自Nucleus最近的点。 在图上随便找一个位置,你将会发现这个位置到所属Nucleus的直线距离不会大于到达其余任意一个Nucleus的直线距离。
绘制
现在我们有了Voronoi diagram的明确定义,可以开始绘制它了。然而我们不能直接入手去绘制图像本身,而应该先绘制核的德劳内三角剖分(Delaunay triangulation)。Delaunay triangulation是指用图上的点作为三角形的顶点构造一组三角形,使其满足没有任何一个顶点落在其它三角形的外接圆内
上图中有10个随机分布的黑点,黑色三角即为Delaunay triangulation,绿色点为外接圆的圆心。仔细比对可以发现确实没有任何一个顶点落在别的三角形的外接圆内捏。
那么Delaunay triangulaltion和Voronoi diagram有什么联系呢?我们看同一组随机点的Voronoi diagram和Delaunay triangulation长啥样
仔细观测..脑补右侧图中三角形的外接圆..会发现Voronoi diagram中所有线段交战都恰好对应于Delaunay triangulation外接圆的一个圆心!这就是为什么我们需要先绘制出Delaunay triangulation.
Python
...哇,Python就像是一个究极傻瓜相机
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi,voronoi_plot_2d
np.random.seed()
points=np.random.rand(40,2)
vor=Voronoi(points)
voronoi_plot_2d(vor,show_points=True,show_vertices=False,line_width=0.5)
plt.show()
就画好一个Voronoi diagram了。(具体可参照Scipy官方的Voronoi、voronoi_plot_2d)
沃罗诺伊图 (Voronoi diagram)的更多相关文章
- 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)
沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)是由俄国数学家格奥尔吉·沃罗诺伊建立的空间分割算法.灵感来源于笛卡尔用凸域分割空间的思想. ...
- 维诺图(Voronoi Diagram)分析与实现(转)
一.问题描述1.Voronoi图的定义又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成. 2.Voronoi图的特点(1)每个V多边形内有一个生成元: ...
- Voronoi Diagram——维诺图
Voronoi图定义 任意两点p 和q 之间的欧氏距离,记作 dist(p, q) .就平面情况而言,我们有 dist(p, q) = (px-qx)2+ (py-qy)2 ...
- GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统
[彩虹六号:围攻 ]使得丰富的“突破”成为可能的破坏系统 深奥的战术游戏的背景下,最新的程序化破坏技术[REALBLAST]! 进行演讲的是Ubisoft Montreal的Julien ...
- d3基本图形
柱状图 散点图.气泡图 ...
- 充分利用 UE4 中的噪声
转自:https://www.unrealengine.com/zh-CN/blog/getting-the-most-out-of-noise-in-ue4 UE4 推出基于材质的程序式噪声已经有一 ...
- BOOST Voronoi Visualizer
BOOST Voronoi Visualizer eryar@163.com Abstract. The Voronoi extension of the Boost.Polygon library ...
- Visulalize Boost Voronoi in OpenSceneGraph
Visulalize Boost Voronoi in OpenSceneGraph eryar@163.com Abstract. One of the important features of ...
- Visulalization Voronoi in OpenSceneGraph
Visulalization Voronoi in OpenSceneGraph eryar@163.com Abstract. In mathematics a Voronoi diagram is ...
- 天气预报API(二):全球城市、景点代码列表(“旧编码”)
说明 2016-12-10 补充 (后来)偶然发现中国天气网已经有城市ID列表的网页...还发现城市编码有两种,暂且称中国天气网这些编码为旧标准"旧编码"的特征是 9个字符长度; ...
随机推荐
- Python 项目:外星人入侵--第二部分
外星人入侵 6.驾驶飞船 玩家左右移动飞船,用户按左或右按键时作出响应. 6.1响应按键 当用户在按键时,在python中注册一个事件,事件都是通过方法pygame.event.get()获取的. 在 ...
- [C++提高编程] 1、模板
文章目录 1 模板 1.1 模板的概念 1.2 函数模板 1.2.1 函数模板语法 1.2.2 函数模板注意事项 1.2.3 函数模板案例 1.2.4 普通函数与函数模板的区别 1.2.5 普通函数与 ...
- 文心一言 VS chatgpt (1)-- 算法导论1.1
1.给出现实生活中需要排序的一个例子或者现实生活中需要计算凸壳的一个例子. 文心一言: 现实生活中需要排序的一个例子: 在一个商店里,顾客需要购买一些商品.他们需要按照价格从低到高排序,以便更容易地找 ...
- 2021-05-12:给定一个数组arr,只能对arr中的一个子数组排序, 但是想让arr整体都有序。返回满足这一设定的子数组中,最短的是多长?
2021-05-12:给定一个数组arr,只能对arr中的一个子数组排序, 但是想让arr整体都有序.返回满足这一设定的子数组中,最短的是多长? 福大大 答案2021-05-12: 从左往右遍历,缓存 ...
- LeetCode 双周赛 104(2023/05/13)流水的动态规划,铁打的结构化思考
本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 提问. 往期回顾:LeetCode 单周赛第 344 场 · 手写递归函数的通用套路 T1. 老人的数目(Easy) ...
- 避坑版-OpenSSH 用户名枚举漏洞(CVE-2018-15473)
介绍: OpenSSH 7.7前存在一个用户名枚举漏洞,通过该漏洞,攻击者可以判断某个用户名是否存在于目标主机中,在复现过程中遇到了很多坑,这里我就把遇到坑和解决方法告诉大家!!! 漏洞环境: 靶机: ...
- linux 系统安全和应用
目录 一.系统安全 二.账号安全 三.修改密码生效时间 四.强制下次登录成功时修改密码 五.历史命令 六.终端自动注销 七.wheel组 八.grub菜单密码 一.系统安全 原因:1.系统数据想要保护 ...
- macbook苹果m1芯片训练机器学习、深度学习模型,resnet101在mnist手写数字识别上做加速,torch.device("mps")
apple的m1芯片比以往cpu芯片在机器学习加速上听说有15倍的提升,也就是可以使用apple mac训练深度学习pytorch模型!!!惊呆了 安装apple m1芯片版本的pytorch 然后使 ...
- flex弹性布局模式下文字超出显示省略号
都知道flex弹性布局非常好用,会随分辨率不同,宽高自适,那怎么来设置在一定范围内的文字超出隐藏,显示省略号呢?其实也不难 看如下就是使用flex布局的 其实如上效果也同样离不开如下三句,只是用法不大 ...
- 文心一言 VS 讯飞星火 VS chatgpt (27)-- 算法导论5.1 2题
二.请描述 RANDOM(a,b)过程的一种实现,它只调用 RANDOM(0,1).作为a和b的函数,你的过程的期望运行时间是多少? 文心一言: 假设我们有一个伪随机数生成器,可以生成在[0,1)范围 ...