文章目录
参考资料
[1] 原文
[2] 滚球法Github链接
[3] BPA PDF
[4] 文中提到的空洞填补论文(A Volumetric Method for BuildingComplex Modcls from Range Images)
相关问题
1.选择种子点(seed)时要确保三个顶点的法向相同(constitently oriented)
2.滚球法可改变半径并多次使用
相关参数
Lists: 数据点 σ i \sigma_i σi、法向量 n i n_i ni
front: 已连接边缘链表(Linked Lists of edges)的集合,初始组成为单闭合回路(single loop)
ps: front使用链表保存的原因:球沿着边缘旋转时,front将改变其拓扑结构
两种情况:
(1)遇到新数据:使用拓扑运算符 j o i n join join
(2)遇到以前使用过的数据点,使用拓扑运算符 g l u e glue glue
以上两个拓扑运算符能保证front在任意时刻都是链表结构
原理介绍
1.基本概念
1.1 顶点表示
每条边 e i j e_{ij} eij由两个端点 ( σ i , σ j ) (\sigma_i,\sigma_j) (σi,σj)表示,相对顶点(opposite vertex) σ o \sigma_o σo,连接此三个顶点的球的中心为 c i j o c_{ijo} cijo,半径为 ρ \rho ρ
球旋转操作:
添加三角形的连接操作(去除边 e i j e_{ij} eij并添加两条新边 e i k e_{ik} eik、 e k j e_{kj} ekj):
1.2 边表示
沿着front的同一个闭合回路连接前一条边(previous dege)和后一条边(next edge)
每条边有三种状态:
1. a c t i v e active active:用于旋转
2. b o u n d a r y boundary boundary:不能旋转的边
3. f r o z e n frozen frozen
将所有信息与edge一起保存,可以使得旋转球的过程变得简单
1.3 数据结构
1.3.1 元素
b a l l _ p i v o t 和 f i n d _ s e e d _