沃罗诺伊图 (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官方的Voronoivoronoi_plot_2d

沃罗诺伊图 (Voronoi diagram)的更多相关文章

  1. 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)

    沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)是由俄国数学家格奥尔吉·沃罗诺伊建立的空间分割算法.灵感来源于笛卡尔用凸域分割空间的思想. ...

  2. 维诺图(Voronoi Diagram)分析与实现(转)

    一.问题描述1.Voronoi图的定义又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成. 2.Voronoi图的特点(1)每个V多边形内有一个生成元: ...

  3. Voronoi Diagram——维诺图

    Voronoi图定义   任意两点p 和q 之间的欧氏距离,记作 dist(p, q) .就平面情况而言,我们有           dist(p, q) =  (px-qx)2+ (py-qy)2 ...

  4. GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统

      [彩虹六号:围攻 ]使得丰富的“突破”成为可能的破坏系统 深奥的战术游戏的背景下,最新的程序化破坏技术[REALBLAST]!     进行演讲的是Ubisoft Montreal的Julien ...

  5. d3基本图形

                                             柱状图                                   散点图.气泡图               ...

  6. 充分利用 UE4 中的噪声

    转自:https://www.unrealengine.com/zh-CN/blog/getting-the-most-out-of-noise-in-ue4 UE4 推出基于材质的程序式噪声已经有一 ...

  7. BOOST Voronoi Visualizer

    BOOST Voronoi Visualizer eryar@163.com Abstract. The Voronoi extension of the Boost.Polygon library ...

  8. Visulalize Boost Voronoi in OpenSceneGraph

    Visulalize Boost Voronoi in OpenSceneGraph eryar@163.com Abstract. One of the important features of ...

  9. Visulalization Voronoi in OpenSceneGraph

    Visulalization Voronoi in OpenSceneGraph eryar@163.com Abstract. In mathematics a Voronoi diagram is ...

  10. 天气预报API(二):全球城市、景点代码列表(“旧编码”)

    说明 2016-12-10 补充 (后来)偶然发现中国天气网已经有城市ID列表的网页...还发现城市编码有两种,暂且称中国天气网这些编码为旧标准"旧编码"的特征是 9个字符长度; ...

随机推荐

  1. 2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] ;B:[1 2 3] [3 4 5]; C:[1 2 3] [3 4 5 6 7 8 9];D:[1 2 3] [3

    2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] :B:[1 2 3] [3 4 5]: C:[1 2 3] [3 4 5 6 7 8 9]:D:[1 2 3] [3 ...

  2. 2020-10-09:假如我能拿到别人的URL,然后篡改数据(金额)发送给系统,如何避免这种事情的发生?

    福哥答案2020-10-09:#福大大架构师每日一题# [此答案来自知乎:](https://www.zhihu.com/question/424764253) 这种敏感url一般都有安全机制的:1. ...

  3. Ubuntu下串口工具 PicoCOM 的使用和时间戳显示

    PICOCOM Ubuntu下的串口软件, 除了 CuteCOM, screen, MiniCOM 以外, 还有一个和 MiniCOM 很像的 PicoCOM. 最近在调试 CH340C 串口的过程中 ...

  4. 2023-05-18:有 n 名工人。 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] 。 现在我们想雇佣

    2023-05-18:有 n 名工人. 给定两个数组 quality 和 wage , 其中,quality[i] 表示第 i 名工人的工作质量,其最低期望工资为 wage[i] . 现在我们想雇佣 ...

  5. 洛谷P3368 【模板】树状数组 2-(区间修改,单点查询)

    题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 x: 求出某一个数的值. 输入格式 第一行包含两个整数 N.M,分别表示该数列数字的个数和操作的总个数. 第二行包含 N  ...

  6. antd 在webpack.config配置主题色

    虽然官方提供了craco-less 来 覆盖less-loader 提供的 less 变量,但自己也想试着修复config来配置一下 首先需要运行 yarn eject 来暴露webpack的配置 其 ...

  7. 记录一次ScrollViewer控件 经过大量文本数据卡顿的原因

    在 WPF 中,CanContentScroll 是 ScrollViewer 控件的一个附加属性,它控制滚动视图中的内容是否按项或像素来滚动. 当 CanContentScroll 设置为 fals ...

  8. 如何不使用图形来创建ACFS文件系统

    客户需求,提供在19c环境下,ACFS的命令行操作的具体步骤,便于在图形界面不可用场景使用. 当然,如果有图形可操作,还是推荐首选图形,避免复杂度以及不必要的错误. 其实之前有测试过11g环境下的AC ...

  9. golang依赖注入工具digo

    golang依赖注入工具 digo工具地址:https://github.com/werbenhu/digo 特性 使用注释中的注解 自动代码生成 自动检测循环依赖 编译时期依赖注入 自动初始化 支持 ...

  10. Docker 镜像命令

    Docker 镜像命令 1.Docker images--列出本地镜像 命令:docker images [OPTIONS] [REPOSITORY[:TAG]] 选项 -a :列出本地所有的镜像(含 ...