Riemannian Delaunay Reﬁnement

36

It extends the isotropic farthest point seeding strategy of [?] w

242

metrics and domains with arbitrary boundaries.

243

Our anisotropic meshing algorithm proceeds by iteratively i

point si,j,k

⇥ S

to an already computed set of points S. In or

an anisotropic mesh with triangles of high quality with resp

metric, one inserts si,j,k

for a Delaunay triangle (xi, xj, xk

) w

circumradius to shortest edge ratio

⇥(si,j,k

) = d(si,j,k, xi

)

min(d(xi, xj

), d(xj, xk

), d(xk, xi

)),

which is a quantity computed for each triple point in parallel to

244

ing propagation. In the Euclidean domain, a triangle (xi, xj, xk

)

245

of ⇥(si,j,k

) is badly shaped since its smallest angle is close to 0 .

246

[?], this property extends to an anisotropic metric H(x) if angl

247

using the inner product deﬁned by H(x).

248

= circumradius

shortest edge

Fig. 7. Left: the vertex x3 encroaches the boundary curve ⇥1,2. Right: the vertex x3

does not encroach anymore because (x1, x2) is a Delaunay edge.

Table 2 details this algorithm. A bound ⇥⇥ on ⇥ enforces the reﬁnement to

reach some quality criterion, while a bound U⇥ enforces a uniform reﬁnement to

match some desired triangle density.

1. Initialization: set S with at least one point on each curve of , compute US with

a Fast Marching.

2. Boundary enforcement: while it exists ⇥i,j ⌃ encroached by some xk

⇤ S,

subdivide: S ⇥ S ⌃ argmax

x⇤⇤i,j

US (x). Update US with a local Fast Marching.

3. Triangulation enforcement: while it exists (xi, xj) ⇤ DS with xi or xj isolated,

insert w⇥ = argmax

w⇤Ci⇧Cj

d(xi, w).

4. Select point: s⇧ ⇥ argmin

s⇤ S ⌃⇥

⇤(s).

– If in S ⌃ {s⇧}, s⇧ encroaches some ⇥i,j ⌃ , subdivide: S ⇥ S ⌃ argmax

x⇤⇤i,j

US (x).

– Otherwise, add it: S ⇥ S ⌃ s⇧.

Update US with a local Fast Marching.

5. Stop: while ⇤(s⇧) > ⇤⇧ or US (s⇧) > U⇧, go back to 2.

x1

x3

s1,2,3

s1,2,3

x3

x2

x2

x1