沃罗诺伊图 (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. Python 字典嵌套

    字典嵌套 含义:将一系列字典存储在列表中,或将列表作为值存储在字典中 在列表中嵌套字典.在字典中嵌套列表.在字典中嵌套字典 字典列表 创建多个字典,将字典存放在列表中 使用range()自动生成多个字 ...

  2. [python] Python类型提示总结

    Python3.5 版本引入了类型提示(Type Hints),它允许开发者在代码中显式地声明变量.函数.方法等的类型信息.这种类型声明不会影响 Python 解释器的运行,但可以让 IDE 和静态分 ...

  3. #Powerbi 理解VAR函数

    VAR意思即为变量,在编程语言中,变量是一个重要概念,DAX作为一种语言也有变量概念,利用VAR,我们可以缩短我们一些DAX语句的长度,更清晰的表达我们的度量值计算逻辑. 举例说明: 我们要计算一个产 ...

  4. 音视频八股文(3)--ffmpeg常见命令(2)

    07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 "test time ...

  5. Pycharm的Available Packages为空问题

    问题描述:可用软件包为空,Pycharm的Available Packages为空问题 打开软件包仓库设置画面 新建软件包仓库 输入软件包仓库 完成,可用软件包 Available Packages正 ...

  6. < Python全景系列-4 > 史上最全文件类型读写库大盘点!什么?还包括音频、视频?

    欢迎来到我们的系列博客<Python全景系列>!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语言! 本文系列第四篇,介绍史上 ...

  7. Vue+Element中Table懒加载,新增、删除操作后手动更新

    Vue+Element中Table懒加载,新增.删除操作后手动更新 今天开发一个自动分类管理系统中行业类型管理,使用table tree 进行节点懒加载,遇到的问题是:使用load 进行懒加载后在ta ...

  8. 代码随想录算法训练营Day28 回溯算法 | 491.递增子序列 46.全排列 47.全排列 II

    代码随想录算法训练营 491.递增子序列 题目链接:491.递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] ...

  9. 万字长文讲透 RocketMQ 4.X 消费逻辑

    RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪. 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有 ...

  10. OpenAI发布ChatGPT函数调用和API更新

    2023年6月13日,OpenAI针对开发者调用的API做了重大更新,包括更易操控的 API模型.函数调用功能.更长的上下文和更低的价格. 在今年早些时候发布gpt-3.5-turbo,gpt-4在短 ...