approximate convex decomposition of polygons

23
Approximate Convex Decomposition of Polygons Jyh-Ming Lien Nancy M. Amato {neilien, amato}@cs.tamu.edu Parasol Lab.,Department of Computer Science Texas A&M University ACM Symposium on Computational Geometry 2 004[32]

Upload: xander-david

Post on 31-Dec-2015

56 views

Category:

Documents


11 download

DESCRIPTION

Approximate Convex Decomposition of Polygons. Jyh-Ming Lien Nancy M. Amato {neilien, amato}@cs.tamu.edu Parasol Lab.,Department of Computer Science Texas A&M University ACM Symposium on Computational Geometry 2004[32]. 多边形的凸剖分: 利用对角线 剖分为一组凸多边形. 凸剖分的意义: 凸物体更易于操作 很多算法对于凸的物体更加有效 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Approximate Convex Decomposition of Polygons

Approximate Convex Decomposition of Polygons

Jyh-Ming Lien Nancy M. Amato

{neilien, amato}@cs.tamu.edu

Parasol Lab.,Department of Computer Science

Texas A&M UniversityACM Symposium on Computational Geometry 2004[32]

Page 2: Approximate Convex Decomposition of Polygons

多边形的凸剖分:

利用对角线剖分为一组凸多边形

Page 3: Approximate Convex Decomposition of Polygons

凸剖分的意义:• 凸物体更易于操作• 很多算法对于凸的物体更加有效

应用领域:•计算机图形学•模型识别•Minkoski sum computation •Motion planning •Origami folding

Page 4: Approximate Convex Decomposition of Polygons

Nazca monkey

Page 5: Approximate Convex Decomposition of Polygons

多边形凸剖分局限性:• 计算量大,耗时• 剖分结果不理想,分块数太多且不易控制

多边形“近似”凸剖分:• 剖分结果:“近似”凸多边形• 类似的应用价值• 剖分块数显著减小,计算更加有效• 改善一些实际应用的结果

Page 6: Approximate Convex Decomposition of Polygons

已有工作可归类为:•输入多边形:简单多边形,带洞或不带洞•剖分方法:允许或不允许有 Steiner 点•输出的剖分结果:最小剖分数目或最短周长

带洞:无论哪种最优条件,都是 NP- 难不带洞:最小剖分数目:不允许 Steiner 点时 允许时 最短周长:不允许 Steiner 点时 允许时 :尚未有最优解 无最优要求时:本文结果:

2 2( min( , ))O n r r n3( )O n r

2 2( )O r n

2( )O nr

( )O nr

Page 7: Approximate Convex Decomposition of Polygons

本文的工作:

•对任意的简单多边形,带洞或不带洞

•提供一个机制,关注于关键特征进行处理

•给出不同近似水平上的近似凸剖分系列表示

Page 8: Approximate Convex Decomposition of Polygons

一些定义:concave(P) :

notch----- 凹顶点 bridge-------

pocket------

\PH P

\ PP H

CD ( ) { | ,concave( ) }i i iP C C P C 是 的剖分

Page 9: Approximate Convex Decomposition of Polygons

算法 Approx_CD(P, )

输入:多边形 P, 凹度容差输出: c=concave (P)

if c.value<

return P

else

{ }=Resolve(P, c.witness).

for i=1,2 do

Approx_CD( , ).

CD ( )P

iP

iP

Page 10: Approximate Convex Decomposition of Polygons

Resolve (P, r ) : 在凹顶点 r 处添加对角线使之不再凹。

r 在外边界上时, 取 r 处的角平分线;r 在洞的边界上时, 取外边界上离 r 最近的顶点, 连线

Page 11: Approximate Convex Decomposition of Polygons

度量凹度:• 面积比• 曲率

concave( ) max {concave( )}x PP x

Page 12: Approximate Convex Decomposition of Polygons

度量外边界的凹度:SL_Concavity: 直线距离

经剖分后凹度可能会增加 不能很好反映凹度

Page 13: Approximate Convex Decomposition of Polygons

SL_Concavity: 对于由 pocket 和 bridge 构成的简单多边形 ,对 上每个顶点 x 都找一条到边 的完全在 中的最短路径 ,它的长度即为 x 的凹度。

P

P( , )x

Page 14: Approximate Convex Decomposition of Polygons

把多边形 分为三部分 、 、 。对于 和 ,最短路径可在 和 处的 visibility tree 中找到,对于 ,可把其顶点分为两类 、 。 中顶点的最短路径必然过 中的顶点。

P P P P

P P

P( )V ( )V

( )V ( )V

Page 15: Approximate Convex Decomposition of Polygons

算法 SP_Concavity( , )

1. 把多边形 分为三部分 、 、 。2. 分别以 和 为根对 中顶点构造 visibility tree 和 。3. ,在 ( ) 中计算最短路径 。4. 由 和 计算 中的一个有序点集 。5. for ,do

for i<k<j do

。6. return {x , c} , 其中 x 是具有到 最远距离 c 的 中顶点。

P

P P P

T T

( )v P P T T ( , )v

T T ( )V P

( ), i jv v V i j 、

( , ) min{ ( , ) ( , ), ( , ) ( , )}k k i i k j jv v v v v v v

Page 16: Approximate Convex Decomposition of Polygons

算法复杂度 O (n) 。

多边形的凹度随剖分单调递减。

Page 17: Approximate Convex Decomposition of Polygons

Hybrid Concavity( H-Concavity)

SL_concavity: 简单,计算容易SP_concavity: 更加有效,且随剖分单调递减

考虑一个混合模式,兼具它们的优点。

Page 18: Approximate Convex Decomposition of Polygons

算法 H1-Concavity( , )

if , s.t. then

return SL-concavity and its witness.

else

return SP-concavity and its witness.

算法 H2-concavity( , )

1. SL-concavity and its witness {x , c}.

2. if then return {x , c}.

3. if , s.t. then

return {x , c}.

4. return SP-concavity and its witness.

0rn n

c 0rn n

Page 19: Approximate Convex Decomposition of Polygons

洞的凹度

精确求解 p 、 cw(p) 的复杂度近似求解:中轴线法 ( medial axis)

主轴线法 (principal axis)

dist( ,cw( )) dist( , ), ,p p x y x y 洞边界

2( )O n

dist( , ) dist( , ), i ix P x P

x l x k k l

Page 20: Approximate Convex Decomposition of Polygons

中轴线法对应于 SP_concavity主轴线法对应于 SL_concavity

对于每个洞 ,找到一对 和 , 以及离 最近的顶点 x,连接 。

concave( ) concave( ) dist( , ) dist( ,cw( ))i i i iP x x p p p

0concave( )P

iP ip cw( )ip ip

ip x

Page 21: Approximate Convex Decomposition of Polygons

总体算法的复杂度: 设多边形 P 具有 n 个顶点, r 个凹顶点, k 个洞,则 P 的近似分解的时间为 O(nr).

证: 求凸包, bridge, pocket 都是 O(n).

度量凹度, 求凹度最大点是 O(n) ( SL,SP,H1,H2).

resolve 子程序也是 O(n) ,所以每轮循环是 O(n).

由于每剖分一次,最多产生三个新顶点,设最终分解为 m 块,则循环次数为 m-1, 总的时间为: 2

2( 1)( ( 3) ( 3*( - 2))) ( 3* ) ( )

2

mO n n n m O nm O nm m

Page 22: Approximate Convex Decomposition of Polygons

有洞时,度量凹度需要 O(n) 时间,添加对角线需要 O(n) 时间, 每次处理一个洞最多产生 3 个新顶点,所以类似于前面,它需要 时间。 总的剖分时间为由于 m<=r+1, k<r, r<n,

2( )O nk k2 2 2 2( ) ( ) ( ( ) )O nm m O nk k O n m k m k

2 2 2( ( ) ) ( ) ( )O n m k m k O nr r O nr

Page 23: Approximate Convex Decomposition of Polygons

谢谢大家 !