Overlay Stitch Meshing
A competitive algorithm for no-large-angle triangulation Don Sheehy Joint work with Gary Miller and Todd Phillips To appear at ICALP 2007
The Problem Input: A Planar Straight Line Graph
The Problem Input: A Planar Straight Line Graph Output: A Conforming Triangulation
The Problem Input: A Planar Straight Line Graph Output: A Conforming Triangulation
Why would you want to do that?
 
 
 
 
 
What went wrong?
What if you don’t know the function? ? ?
2 Definitions of Quality 1. No Large Angles [Babuska, Aziz 1976]
2 Definitions of Quality 1. No Large Angles [Babuska, Aziz 1976] 2. No Small Angles
No Small Angles
No Small Angles You may have heard of these before. Delaunay Refinement Sparse Voronoi Refinement Quadtree
Paying for the spread L s Spread = L/s
Paying for the spread Optimal No-Large-Angle Triangulation
Paying for the spread What if we don’t allow small angles?
Paying for the spread O(L/s)  triangles! What if we don’t allow small angles?
Paying for the spread O(L/s)  triangles! What if we don’t allow small angles? Fact: For inputs with  NO edges ,  no-small-angle meshing algorithms produce output with  O(n log L/s)  size and angles between 30 o  and 120 o
What to do? Small input angles can force even smaller ouput angles. [Shewchuk ’02]
No Large Angles
Polygons with Holes [Bern, Mitchell, Ruppert 95] –  - All triangles are nonobtuse.  - Output has O(n) triangles.
Polygons with Holes [Bern, Mitchell, Ruppert 95] –  - All triangles are nonobtuse.  - Output has O(n) triangles. Does not work for arbitrary PSLGs
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Paterson’s Example Requires   (n 2 ) points. O(n) points O(n) lines
Propagating  Paths
Propagating  Paths
Propagating  Paths First introduced by Mitchell [93] Later Improved by Tan [96] Worst Case Optimal Size O(n 2 ) Angle bounds: 132 o
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing) Results: Angles bounded by 170 o   O(log L/s) competitive size
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing)
The OSM Algorithm (Overlay Stitch Meshing) An Overlay Edge is  kept  if 1. It does not intersect the input, OR 2. It forms a  good  intersection with the input. at least 30 o
Angle Guarantees
Angle Guarantees
Angle Guarantees We want to show that angles at  stitch  vertices are bounded by 170 o
Angle Guarantees An Overlay Triangle
Angle Guarantees An Overlay Triangle An Overlay Edge
Angle Guarantees An Overlay Triangle An Overlay Edge Gap Ball
Angle Guarantees A Good Intersection
Angle Guarantees A Bad Intersection
Angle Guarantees A Bad Intersection
Angle Guarantees A Bad Intersection How Bad can it be?
Angle Guarantees How Bad can it be? About 10 o About 170 o
Angle Guarantees How Bad can it be? About 10 o Theorem: If any input edge makes a  good  intersection with an overlay edge then any other intersection on that edge is  not too bad . About 170 o
Size Bounds
Size Bounds How big is the resulting triangulation?
Size Bounds How big is the resulting triangulation? Goal: log(L/s)-competitive with optimal
Local Feature Size lfs(x) = distance to second nearest input vertex. x lfs(x) Note: lfs is defined on the whole plane before we do any meshing.
Ruppert’s Idea r c r =   (lfs(c)) area(  ) =   (lfs(c) 2 ) # of triangles =   ( ss  1/lfs(x,y) 2  dxdy)
Ruppert’s Idea r c r =   (lfs(c)) area(  ) =   (lfs(c) 2 ) # of triangles =   ( ss  1/lfs(x,y) 2  dxdy) dy dx This represents a   (dxdy/lfs(x,y) 2 )  fraction of the triangle.
Ruppert’s Idea r c r =   (lfs(c)) area(  ) =   (lfs(c) 2 ) # of triangles =   ( ss  lfs(x,y) -2  dxdy) Caveat : Only Works for meshes  with bounded  smallest  angle.
Extending  Ruppert’s Idea An input edge  e  intersecting  the overlay mesh # of triangles along  e  =   ( s z 2  e  lfs(z) -1  dz) # of triangles =   ( ss  lfs(x,y) -2  dxdy)
Extending  Ruppert’s Idea Now we can compute the size of our output mesh.  We just need to compute these integrals. # of triangles along  e  =   ( s z 2  e  lfs(z) -1  dz) # of triangles =   ( ss  lfs(x,y) -2  dxdy)
Output Size Stitch Vertices Added =   ( s z 2  E  lfs(z) -1  dz) Overlay Mesh Size  =   ( ss  lfs(x,y) -2  dxdy) O(n log L/s) O(log L/s) £  |OPT| We’ll Prove this now
What can we say about the  optimal  no-large-angle triangulation?
Competitive Analysis Warm-up 90 o
Competitive Analysis Warm-up ? o
Competitive Analysis Warm-up
Competitive Analysis Warm-up
Competitive Analysis Warm-up Suppose we have a triangulation with all angles at least 170 o . the optimal
Competitive Analysis Warm-up Suppose we have a triangulation with all angles at least 170 o . the optimal Every input edge is covered by empty lenses.
Competitive Analysis This is what we have to integrate over. We show that in each lens, we put O(log (L/s)) points on the edge. In other words: s e’  1/lfs(z) dz = O(log (L/s)) e’
Competitive Analysis e’ s z 2  e’  1/lfs(z) dz = O(log (L/s))
Competitive Analysis s z 2  e’  1/lfs(z) dz = O(log (L/s)) e’ 1 st  trick:  lfs  ¸  s everywhere 2 nd  trick: lfs  ¸  ct  for  t 2  [0, l /2] t s z 2  e’  1/lfs(z) dz  ·  2 s 0 s  1/s + 2 s s l /2  1/x dx  = O(1) +  O(log  l /s) = O(log L/s) Parametrize e’ as [0,  l ]
Conclusions
Conclusion A new algorithm for no-large-angle triangulation. The output has bounded degree triangles. The first log-competitive analysis for such an algorithm. We used some of the high school calculus you thought you forgot.
Where to go from here? 3D? Better angle bounds? Leverage lower bound technology for constant competitive algorithm.
Thank you.

Overlay Stitch Meshing