平面点云三角化边数与点的关系

欢迎关注更多精彩
关注我,学习常用算法与数据结构,一题多解,降维打击。

点云三角化定义

原文
在这里插入图片描述
说人话:
一个二维平面点集P三角化结果是一个满足以下条件的三角形集合:
1 所有三角形的并集刚好是P的凸包。
2 所有三角形顶集的并集正好是P。
3 对于三角化中任意两个三角形,要么有一个公共点(在P中),要么有一条公共边,否则完全不相接。

下图是一个三角化
在这里插入图片描述

根据上述定义可出三角化的一些基本性质:
1 三角化的外壳是一个凸包。
2 三角化中所有边没有相交(定义3可以保证)
3 三角化结果是一个平面图(planar graph)

三角化边数与点数的关系

在这里插入图片描述
引理:对于一个有n个点的二维点集P的任意三角化,正好有3n-h-3条边,h是P的凸包边界的边数。

在这里插入图片描述
以上图为例,点数一共是n=10, 凸包上边数h = 6, 总边数 e = 21
满足 e= 3*10-6-3

面的数量

对上述用例,如果只计算三角面12个面。

如果是一般的面,那么是13个面(外面的无限面也算一个)。

可以理解为一开始什么都没有的时候,是一个无限大的平面,计数为1。

当在平面上加入点并进行三角剖分时,总面数就是三角面数再加1。

最外围的无限面的边就是凸包的边。

在这里插入图片描述
上图中由橙色线转成的红色虚线区域就是一个往外无限扩张的无限面。与内部三角面一起组成了整个平面。

这种形式的划分以下称为大平面划分。

证明

设T是根据P三角化对大平面的划分。

设E为划分T的所有边集合,F为划分T的面集合(包含外围的无限面)。

在半边数据结构中,一条边是被两个面共享。

接下来我们用不同方式表示半边的数量,计算出边与面的关系,再结合欧拉公式证明命题。

半边集合 J = { ( e , f ) ∈ E × F , e 是某一条边 , f 是某个面 } 半边集合 J = \{(e,f)\in E \times F, e是某一条边, f是某个面\} 半边集合J={(e,f)E×F,e是某一条边,f是某个面}

一条边会被与该边相接的两个面共享,生成2个半边,那么 |J| = 2*|E|.

同时,从面的角度来计算半边,一个三角面会有3个半边(一共有|F|-1个三角面),最外边无限半边数量就是凸包边数(h)。

那么 |J| = 3*(|F|-1)+h。

组合一下就是 2*|E| = 3*(|F|-1)+h。

又根据欧拉公式有 3n - 3|E| + 3|F| = 6。

结合一下,得到|E|=3n -h -3。

命题得证。


本人码农,希望通过自己的分享,让大家更容易学懂计算机知识。创作不易,帮忙点击公众号的链接。

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值