【基础教程】Voronoi多边形和Delaunay三角剖分

 

泰森多边形法,美国气候学家A·H·Thiessen提出了一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形为泰森多边形。如图,其中虚线构成的多边形就是泰森多边形。泰森多边形每个顶点是每个三角形的外接圆圆心。泰森多边形也称为Voronoi图。

泰森多边形的特性:

1、每个泰森多边形内仅含有一个离散点数据;

2、泰森多边形内的点到相应离散点的距离最近;

3、位于泰森多边形边上的点到其两边的离散点的距离相等。

在泰森多边形的构建中,首先要将离散点构成三角网。这种三角网称为Delaunay三角网。

定义 Delaunay边:假设E中的一条边e(两个端点为a,b),e若满足下列条件,则称之为Delaunay边:存在一个圆经过a,b两点,圆内(注意是圆内,圆上最多三点共圆)不含点集V中任何其他的点,这一特性又称空圆特性。

定义 Delaunay三角剖分:如果点集V的一个三角剖分T只包含Delaunay边,那么该三角剖分称为Delaunay三角剖分。

要满足Delaunay三角剖分的定义,必须符合两个重要的准则:

1、空圆特性:Delaunay三角网是唯一的(任意四点不能共圆),在Delaunay三角形网中任一三角形的外接圆范围内不会有其它点存在。如下图所示:

2、最大化最小角特性:在散点集可能形成的三角剖分中,Delaunay三角剖分所形成的三角形的最小角最大。从这个意义上讲,Delaunay三角网是“最接近于规则化的“的三角网。具体的说是指在两个相邻的三角形构成凸四边形的对角线,在相互交换后,六个内角的最小角不再增大。

clear;clc;
m=100;x=rand(1,m);   % 生成随机点x坐标y=rand(1,m);   % 生成随机点y坐标figure(2);voronoi(x,y);   % 绘制voronoi多边形axis([0,1,0,1]);grid;[v,c]=voronoin([x;y]')   % v是所有的voronoi边的顶点坐标,c{i}就是第i个点周围的voronoi边的顶点下标for n=1:m    disp(['点(' num2str(x(n)) ',' num2str(y(n)) ')周围的voronoi边的顶点的坐标是:'])    disp([v(c{n},1),v(c{n},2)])endfor p=1:m    t=[v(c{p},1),v(c{p},2)];    [r,s]=size(t);    a=0;    for q=2:r        a1=1/2*(t(q-1,1)*t(q,2)-t(q,1)*t(q-1,2));   % S=1/2[(x1*y2-x2*y1)+(x2*y3-x3*y2)+...+(xn-1*yn-xn*yn-1)+(xn*y1-x1*yn)]        a=a+a1;    end    a=a+1/2*(t(r,1)*t(1,2)-t(1,1)*t(r,2));    disp(['点(' num2str(x(p)) ',' num2str(y(p)) ')周围的voronoi多边形的面积是:'])    aend

往期回顾>>>>>>

【优化求解】模拟退火遗传实现带时间窗的车辆路径规划问题

【优化算法】遗传算法求最短路径

【优化问题】遗传算法求最值

【基础教程】MATLAB导出高清晰图片

【优化问题】基于栅格地图——遗传算法的机器人最优路径规划

资源获取

公众号中回复“QQ”加入QQ群;回复“微信”加入微信群;回复“投稿”与大家分享智慧;回复“资源获取”免费下载该资源

发布了39 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_34763204/article/details/105444785