voronoi 圖 (泰森多邊形) Georgy Voronoi

這裏是維諾圖的解釋,由於我以前用的是egret寫的一個三國遊戲,對地圖進行維諾圖劃分勢力,因此用的文中最後一個Js的庫。在遊戲中引入了維諾圖。html

http://baike.baidu.com/view/6090879.htmjava

https://zh.wikipedia.org/wiki/%E6%B2%83%E7%BD%97%E8%AF%BA%E4%BC%8A%E5%9B%BEgit

http://baike.baidu.com/item/voronoigithub

又叫馮洛諾伊圖(Voronoi diagram) 泰森多邊形web

問題:給定平面中N個點,對於每一個點Pi,平面中距離Pi點比距離其它點更近的點的區域是什麼?即區域內的任意一點(x,y),距Pi比距離平面中的其它點都近。算法

平面繪製svg

在平面上,繪製沃羅諾伊圖的過程,只要將胞點連起來構成許多三角形,利用中垂線找外心,再將全部外心相連便可。ui

Delaunay三角剖分算法.net

點集的三角剖分(Triangulation),對數值分析(好比有限元分析)以及圖形學來講,都是極爲重要的一項預處理技術。尤爲是Delaunay三角剖分,因爲其獨特性,關於點集的不少種幾何圖都和Delaunay三角剖分相關,如Voronoi圖,EMST樹,Gabriel圖等。Delaunay三角剖分有最大化最小角,「最接近於規則化的「的三角網和惟一性(任意四點不能共圓)兩個特色。code

偶圖(bigraph)是有兩個相互獨立的位置圖和鏈接圖構成。偶圖的概念是由圖靈獎得到者Milner提出的,其目的爲普適計算提供統一的元模型。
若無向圖G = <V,E>的結點集V可以劃分爲兩個子集V1,V2,知足V1∩V2 = F(空集),且V1∪V2 = V(全集),使得G中任意一條邊的兩個端點,一個屬於V1,另外一個屬於V2,則稱G爲偶圖(Bipartite Graph)或二分圖(Bigraph)。V1和V2稱爲互補結點子集,偶圖也可記爲G = <V1,E,V2>

相關有用的博客

http://blog.sina.com.cn/s/blog_5c9288aa010144c7.html

http://www.csie.ntnu.edu.tw/~u91029/VoronoiDiagram.html

http://blog.sina.com.cn/s/blog_5fe823a50100dun6.html

http://www.tuicool.com/articles/YZV7ji

java 算法
http://www.cs.cornell.edu/Info/People/chew/Delaunay.html

c語言實現
http://blog.csdn.net/vernice/article/details/46558823

最靠譜
http://www.itdadao.com/articles/c15a224768p0.html
http://blog.csdn.net/k346k346/article/details/52244123

如何生成
http://blog.csdn.net/gdut2015go/article/details/48208983

生成維諾圖的兩種方式: 適量法,柵格生成法
http://blog.sina.com.cn/s/blog_a46817ff0101awtq.html
http://www.cppblog.com/eryar/archive/2014/04/30/206781.html

方法:
常見的有分治法、掃描線算法和Delaunay三角剖分算法。

  1. Delaunay 的三角分割法
    http://www.itdadao.com/articles/c15a224768p0.html

git hub上的一個生成方式 js
https://github.com/rjanicek/voronoi-map-js

https://github.com/gorhill/Javascript-Voronoi (我用這個實現了)