of 16

isidr0
• Category

## Documents

• view

231

0

### Transcript of Updating Triangulations

• 8/9/2019 Updating Triangulations

1/16

Updating Triangulations.

(Insertions and Deletions of edges and vertices.)

Computational Geometry, 308-507 Term Project,Sergei Savchenko.

1. Introduction.

Given a set of points P={p1,p2,...,pn} in the plane, A triangulation of P, denoted T(P) , is

a graph with P as its nodes and edges connecting the nodes so that as many triangles as

possible are formed and the edges intersect only in the nodes (see Figure 1.0).

Figure 1.0.A triangulation of a set of points.

Triangulations occur very often in such diverse areas as cartography (approximation of

surfaces), computer graphics (shape representation), stress analysis (finite element

models) etc.

Although the problem of constructing a triangulation given a set of points or a simple

polygon has been paid considerable attention, at times, in various contexts, it is also

necessary to update existing triangulations by inserting or deleting some vertices or

2. Nodes.

In the vertex insertion problem we want to construct a T(P union {p}) where p is some

new point. Two cases are possible: If p is located outside the convex hull of P it can be

joined to all the visible nodes on the convex hull. To do that we construct the upper and

lower lines of support connecting the convex hull vertices with the point being inserted

and then interconnect all vertices on the inner part of convex path thus formed with the

point (see Figure 2.0 B).

http://www.cs.mcgill.ca/~savshttp://www.cs.mcgill.ca/~savshttp://www.cs.mcgill.ca/~savs
• 8/9/2019 Updating Triangulations

2/16

If p is located in the interior of the convex hull of P it must lie inside some triangle t of

T(P). In which case, it is, possible to connect p to the vertices of t obtaining a valid

triangulation (see Figure 2.0 A, point p).

Alternativelly, some inserted point p' may happen to overlay some edge. For this

particular problem such a degeneracy can be trivially handled by splitting the edge atthe inserted vertex and adding another new edge into every triangle the original edge

was a member of (see Figure 2.0 A, point p').

Figure 2.0. Inserting a vertex into a triangulation.

In the vertex deletion problem we must compute a triangulation of T(P-{p}) where p

belongs to P. Discarding an internal point p along with all edges originating in p leaves

astar-shaped hole (see the Appendix) which can be efficiently triangulated using the

three-coins algorithm (see Figure 2.1 A).

Note that we can easily create the list of the vertices on the boundary of the hole by

traversing the triangles of the triangulation (Assuming, of course that an efficient data-

structure which chains all triangles is used).

Figure 2.1 Deleting a vertex from a triangulation.

In another instance of the deletion problem we may have to remove a vertex on the

convex hull (see Figure 2.1 B). In this case, we don't normally obtain a star-shaped hole,

but some externaly visible boundary (all deleted triangles shared the same vertex andthus any edge on the boundary is visible from that vertex). It is sufficient to apply the

http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#star
• 8/9/2019 Updating Triangulations

3/16

three-coins algorithm to this boundary which will both compute the necessary fragment

for the convex hull of the entire triangulation and at the same time externally triangulate

all pockets (see Appendix).

The following applet demonstrates inserting and deleting vertices from triangulations

(click onto previously inserted vertex to delete it):

The source code is available.

3. Edges.

The edge insertion problem can be described as follows: Given a finite set

P={p1,p2,...,pn} and its triangulation T(P) we want to find another triangulation T'(P)

such that an edge exists between the specified pair of nodes. In other words, insert an

edge into the triangulation T(P). Or, with another problem, given the same input wewant to compute a triangulation T''(P) in which the specified two nodes are not joined

by the edge, that is, delete an edge from the triangulation T(P).

The following subsections discuss different cases of edge insertion/deletion.

3.1 Inserting an edge into a triangulation.

Depending which nodes are specified for edge insertion two different cases are possible:

Connect with an edge two nodes pi and pj in the case when both belong to the set

P (Insert an "open" edge).

Connect with an edge two nodes pi and pj in the case when both don't belong to

the set P (Insert a "closed" edge).

3.1.1 Inserting an open edge.

In the case when both nodes to be connected by an edge are already members of the set

P we first discard all other edges of the triangulation T(P)which are intersected by theedge we insert. This can be done in linear time and it produces two edge-visiblepolygons (see the Appendix). Note that these polygons can be constructed very

efficiently by traversing triangles in the triangulation (assuming that every triangle is

chained to its neighbors). These polygons are edge visible since they are formed of

triangles, all intersected by the same edge. Any point on the internal boundary must,

thus, be visible from this edge. Such regions can be efficiently triangulated by the three-

coins algorithm in linear time (see Figure 3.1).

http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/VApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/VApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#three
• 8/9/2019 Updating Triangulations

4/16

Figure 3.1. Inserting an open edge into a triangulation.

3.1.2 Inserting a closed edge.When the nodes to be connected by an edge don't belong to the set P, such a problem is

trivially reducible to the open edge problem by inserting the nodes first, updating the

triangulation T(P) accordingly and then invoking the open-edge insertion computation

described in the previous section (see Figure 3.2).

Figure 3.2. Inserting a closed edge into a triangulation.

3.2 Deleting an edge from a triangulation.

Similarly to the insertion problem, we can differentiate several cases of the edge

deletion problem:

Delete an edge along with its end-points: pi and pj (delete a "closed" edge).

Delete (if possible) the edge connecting some nodes pi ,pj but leave the end-

points in the set P (delete an "open" edge).

3.2.1 Deleting a closed edge.

• 8/9/2019 Updating Triangulations

5/16

Obviously, for the closed edge deletion problem all we have to do is to first delete one

of its end-points (see Section 2), triangulate the resulting star-shaped hole (or externaly-

visible region in the case of convex hull vertex), remove the other end-point and finish

by triangulating the second hole or region. As a result, we obtain a valid triangulation

T'(P) lacking both two deleted nodes and their connecting edge.

Although this computation takes linear time, we may do somewhat better by avoiding

triangulation of twostar-shaped holes (together resulting in application ofthree-coins

algorithm up to six times) and directly construct some edge-visible holes requiring only

four application of the triangulation algorithm.

Thus we start by extending the edge we want to delete, find its intersections with some

other edges on the boundary of the formed hole. Further, we insert these Steiner points

into the set, triangulate the formededge-visible polygons, remove the Steiner points and

obtain other edge visible polygons which can be trivially triangulated (see Figure 3.3).

Figure 3.3. Deleting a closed edge from a triangulation.

3.2.2 Deleting an open edge.

The open edge deletion problem requires, if possible, to produce an updated

triangulation T'(P) in which the two nodes pi,pj previously connected by an edge are no

longer connected.

Clearly, this may not always be possible (see Figure 3.4 A). Edge e cannot be deleted

from the triangulation T(P).

To delete an open edge we must find two other points from the set P, p'i and p'j whose

connecting line (a stabbing line) intersects the edge we want to delete. Insertion of an

edge p'i,pj necessarily deletes the edge pi,pj solving the open edge deletion problem.

One straightforward way of finding a stabbing line is by checking all pairs of points

from the set P to verify if any intersects the edge we want to delete. To speedup this

quadratic computation we can precompute the required information ( whether the edges

intersect ) in a square array, use it to fetch stabbing edges in unit time and make sure weadjust the array according to the triangulation updates.

http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/project.html#edge
• 8/9/2019 Updating Triangulations

6/16

Figure 3.4. Deleting an open edge from a triangulation.

The following applet demonstrates inserting and deleting edges from triangulations.

First mouse click selects one end point of an edge, marked by a blue square, the second

click specifies the other endpoint. The operation (deletion/insertion) is choosen based

on the context, except to differentiate between types of deletions which should be

preselected in the check-box.

The source code is available.

4. Appendix:

Three-coins algorithm.

The three-coins algorithm was proposed by J. Sklansky for finding a convex hull of a

simple polygon (for which task it is incorrect), and by Graham as a final step in finding

convex hull of a set of points (for which it does work).

Although this algorithm fails in finding a correct convex hull of a general simple

polygon, it does work for an important class of polygons, notably those which are

weakly externally visible. A polygon is called weakly externally visible if any point on

its border is directly visible from some point located at infinity.

This algorithm can be described as follows:

for n points of a polygon: k,k+1,...,k+n-1, starting with k=0 which

is assumed to be convex.

do

if (k,k+1,k+2) are counterclockwise triple and k+2=n then stop

else

if (k,k+1,k+2) are counterclockwise then move one point forward

else

begin

if k=n then move one point forward

else move one point backward

end

http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/EApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/EApplet.java
• 8/9/2019 Updating Triangulations

7/16

end

The algorithm proceeds by finding and closing with a lid each encountered pocket (see

Figure 4.1).

Figure 4.1 Applying the three-coins algorithm.

Paraphrasing, if the algorithm encounters a concave vertex it proceeds forward, when it

encounters a reflex vertex it cuts it and performs backtracking step.

Note that in the process of finding a lid each of the pockets has been externally

triangulated.

The suggested algorithm, however, assumes that no three vertices in the polygon are

collinear. In the presence of such degeneracies a modified version of the three-coins

algorithm should be used.

for n points of a polygon: v,k,k+1,...,k+n-2,u such that

uv is the visibility edge, and a stack S so that s is stack's top.

push v

push k

assign x=k+1

do

if x=v stop

if (s-1,s,x) are counterclockwise or 0 degree turn triple then

begin

push x

move x one point forwardendelsebegin

if (s-1,x,x+1) is a 180 degrees turn then

then add diagonal (s,x+1), move x one point forward

else add diagonal (s-1,x), pop stack

end

if s=v then

begin

push x

move x one point forward

end

end

Note that the presence of collinearities allows for two types of degenerate triangles to be

produced by the original, unmodified, version of the algorithm: those having 0 degrees

• 8/9/2019 Updating Triangulations

8/16

turn and 180 degrees turn. Whereas handling the former is easy enough by only a slight

modification, it is mostly the latter which causes the changes.

Triangulating edge-visible polygons.

A polygon is calledEdge-visible if there exists an edge so that any point inside the

polygon is visible from some point on this edge.

Since the three-coins algorithm was capable of externally triangulating the pockets

(which are edge visible polygons with respect to the lid) we can internally triangulate

any edge-visible polygon using the above algorithm in linear time (see Figure 4.2).

Figure 4.2 Triangulating an edge-visible polygon.

Triangulating star-shaped polygons

A polygon is calledStar-shapedif there exists some point so that any point inside the

polygon is visible from this point. The set of all such points is called theKernelof the

polygon.

If we are given a point in the kernel such polygons can be triangulated using a variation

of the three-coins algorithms. Notably we want to first insert an edge originating in

some vertex and passing through the kernel. This edge may intersect some other edge

on the other side at which place we will introduce a Steiner point. The resulting twoedge-visible polygons can be efficiently triangulated (the newly inserted visibility edge

passes through the kernel and hence all points in both halves are visible).

Afterwards, we remove the Steiner point and invoke the three-coins triangulation once

again to fill the formed hole which was edge visible since the removed point was

originally placed onto an edge (see Figure 4.3).

• 8/9/2019 Updating Triangulations

9/16

Figure 4.3 Triangulating a star-shaped polygon.

5. References.

[1] H.A. ElGindy, G.T. Toussaint, "Efficient algorithms for inserting and

deleting edges from triangulations."Proc. International Conference on

Foundations of Data Organisation, Kyoto University, 1985.

[2] G.T. Toussaint, D. Avis, "On a convex hull algorithm for polygons and its

application to triangulation problems,"Pattern Recognition, Vol. 15, 1982, pp.

32-29.

[3] A.A. Schone, J. van-Leeuwen, "Triangulating a star-shaped polygon,"Technical Report RUV-CS-80-3, University of Utrecht, April 1980.

[4] R.L. Graham, "An efficient algorithm for determining the convex hull of a

finite planar set,"Inform. Process. Lett. 1, pp. 132-133, 1972.

[5] J. Sklansky, "Measuring concavity on a rectangular mosaic,"IEEETransactions on Computing. C-21, pp. 1355-1364, 1972.

[6] P. Bose, G.T. Toussaint, "Growing a tree from its branches,"Journal of

Algorithms. 19, pp. 86-103, 1995.

5.6 Steiner Points and Steiner

Triangulation

In the context of a Delaunay Triangulation and other optimal

triangulations/tetrahedralizations Steiner points refer to points which are added to the

set of vertices of the inputPSLG/PLC . The name does not indicate a specific locationfor the added point. While refinement is quite naturally considered for mesh generation

mailto:[email protected]://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/triang_upd.tar.gzmailto:[email protected]://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Sergei/triang_upd.tar.gz
• 8/9/2019 Updating Triangulations

10/16

purposes, the addition of Steiner points to a Delaunay Triangulation is a powerful

concept in computational geometry which allows quite theoretical investigations. It

forms the basis for many provable optimal triangulation algorithms for various quality

criteria [16,15,134].

Figure 5.6: Steiner point insertion at the circumcenter, removal of non-Delaunay

elements, and triangulation of the resulting cavity.

One of the most important techniques is the insertion of a Steiner point at the

circumcenterof a badly shaped element. The element is not necessarily refined itself,

because its circumcenter might be located in an adjacent element. In a subsequent step

the Delaunay property is restored which ensures the destruction of the undesired

element because its circumsphere is not empty. The minimum distance between two

points cannot be reduced unproportionally. The circumsphere of a Delaunay element

contains no other points, hence the inserted circumcenter cannot lie arbitrarily close to

another point. This allows a proof of good grading. The refinement can be bounded by

disallowing the insertion of circumcenters for circumspheres smaller than a given limit.

Then, the insertion process must terminate, because it runs out of space.

http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#bern90http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#ber92http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#ruppertdisshttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#bern90http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#ber92http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#ruppertdiss
• 8/9/2019 Updating Triangulations

11/16

Figure 5.7: Delaunay Triangulation vs. quality improved Steiner Triangulation. The

original 130 triangles (94 points) were refined with 128 Steiner points resulting in 376

triangles.

For example in two dimensions a scheme can be devised to guarantee angles between

and as long as the length of the boundary edges is within a specified range

[28]. Figure5.6 shows an obtuse triangle which is removed by inserting its circumcenter

and restoration of the Delaunay property. An example triangulation is shown in Fig. 5.7.

The key idea is that a Steiner point at the circumcenter directly affects the shortest edge

to circumradius ratio quality measure (3.1).

Figure 5.8: The worst case element with a angle and minimum edge length . The

To see this it is assumed without loss of generality that the minimum distance between

two points of the input is . Steiner points are inserted as long as elements exist withcircumradius greater than . The restoration of the Delaunay property after each point

insertion is possible with flip operations. Hence, it can be guaranteed due to the

Delaunay property that the inserted points are also not closer than to any other point.

Simultaneously it is guaranteed that no circumradius is greater than . Termination is

guaranteed because each point defines a disk with radius equal to the minimum distance

in which no other points may be located. All such disks sooner or later cover the

entire available space and no more points can be inserted. The resulting edge length

ranges between the minimum distance and the maximum which is possible for the

maximum circumcircle with radius . Hence, the worst (minimal) quality is

http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew89http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinregrhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinregrhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#areaexahttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#areaexahttp://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#eq:q1http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew89http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinregrhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#areaexahttp://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#eq:q1
• 8/9/2019 Updating Triangulations

12/16

(Fig.5.8). Because of (3.7) the minimum angle is

.

Figure 5.9: A naive approach where the bisection of boundary edges and the insertion of

circumcenters runs into an endless loop. The small angle which causes the insertion of a

Steiner point at the center of the dotted circumcircle is shaded. A better solution can be

obtained and is shown in the bottom left corner.

An analysis which includes the boundary is more complex [135,29]. Certain restrictions

have to be applied to the edges and facets of . As already mentioned the edge lengths

must be within a certain range or the edges must form angles of e.g. no less than .Naturally, edges of the input can form a sharp angle which is forced into the

triangulation and which cannot be resolved. If a Steiner point lies outside of the domain

defined by , it cannot be inserted. Figure 5.9 shows an obtuse element of which the

longest edge is a boundary edge and the circumcenter is outside. An intuitive approach

to bisect the longest edge to destroy the obtuse angle combined with a minimum angle

criterion enforced through Steiner point insertion at circumcenters may run into an

endless loop (Fig. 5.9). Alternately the boundary edge is further bisected and a Steiner

point added at the circumcenter of the new element. The boundary edge can never be

flipped and the angle never improves. A solution is to check whether or not a Steiner

point candidate inflicts the smallest sphere criterion of a boundary edge. As can be seen

in Fig.5.9 the inserted circumcenters are always located inside of the smallest circle

passing through the two vertices of the boundary edge. In such cases the Steiner point

candidate should be discarded and the boundary edge should be instead refined itself.

Generally, a Steiner point insertion algorithm must stop the attempt to resolve bad

angles in impossible situations due to special constellations of the edges and facets of

, rather then to cause excessive refinement. Restrictions on are not acceptable for

practical implementations.

A detailed comparison of Steiner Triangulation algorithms is given in [162]. Depending

on how the boundary is handled different angle bounds can be achieved [135,28,29].

Often it is experienced that a theoretical minimum angle bound of e.g. can beincreased in practice up to . A Steiner Triangulation with circumcenters is just as

http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproofhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproofhttp://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#eq:edgeanglerelhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#rupperthttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew93http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#shewchukdisshttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#rupperthttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#rupperthttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew89http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew89http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew93http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproofhttp://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#eq:edgeanglerelhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#rupperthttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew93http://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node54.html#steinerproblemhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#shewchukdisshttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#rupperthttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew89http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew93
• 8/9/2019 Updating Triangulations

13/16

powerful in three dimensions to improve the shortest edge to circumradius quality

criterion [30,37]. However, as was pointed out in Section3.1 sliver elements are not

captured by and are not removed by inserting circumcenters as Steiner points. A

three-dimensional method which promises to avoid all badly shaped elements andwhich is based on a two-dimensional approach with Steiner points [16] is proposed in

[109].

Algorithmic Approach Comparison

aCute Triangle

Our software employs an advancing front

approach, inserts locally optimal Steiner

points, first near the boundary of the

domain.

The original Triangle software employed

Ruppert's circumcenter insertion

algorithm which is not an advancing front

approach.

Below you see an execution of each algorithm/software interrupted after certain number

of Steiner point insertion (specified). Desired smallest angle is 34 degrees. Bad triangles

are marked red. Initial triangulations are the same.

The Idea

http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew97http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew97http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#dey91http://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#sec:geoqualhttp://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#sec:geoqualhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#bern90http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#mitchell92http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#chew97http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#dey91http://www.iue.tuwien.ac.at/phd/fleischmann/node13.html#sec:geoqualhttp://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#bern90http://www.iue.tuwien.ac.at/phd/fleischmann/node74.html#mitchell92
• 8/9/2019 Updating Triangulations

14/16

Here, a brief discussion about the idea which helps us to generate premium quality

triangulations by using Delaunay refinement as the basis.

Locally Optimal Steiner Points

Given an ordered pair of points (p,q) in the input domain, consider the circle that goesthroughp and q, of radius |pq| / (2*sin(alpha)), whose center is on the right side of the

directed edgepq. The disk bounded by this circle is called thepetalofpq, denoted by

petal(pq). Based on this definition, we choose from four different types of points to

insert a Steiner point which can be simply shown as follows:

Find a pointx inside the (shaded disk) petal ofpq that is furthest away from all existing

vertices. Such a point can be on a Voronoi edge (top) or a Voronoi vertex (bottom).

Type I: on the dual ofpq. Type II: on a Voronoi edge other than the dual ofpq. Type

III: a circumcenter other than that ofpqr. Type IV: the circumcenter ofpqr. Note that

our approach nicely unifies the previously known Steiner point insertion techniques:circumcenter (Type V) of Chew and Ruppert, off-center (Type I) of Ungor, and sink

(Type III) of Edelsbrunner and Guoy together with a new one (Type II).

Unlike the previous Delaunay refinement methods, we use circumcenters less

frequently. This allows us to reach better minimum angle quality.

Algorithm

Compute the Delaunay triangulation of the input

while there exists a bad trianglepqrwith shortest edgepqinsert a pointx is inpetal(pq) of its shortest edgepq

• 8/9/2019 Updating Triangulations

15/16

that is furthest from all existing vertices

Refinement and Relocation

Relocating a free vertex of a bad trianglepqrto the intersection of the petals of the link

ofa = r.

Algorithm

Compute the Delaunay triangulation (DelTri) of the input

Let P denote the maintained point set

while there exists a bad trianglepqrin DelTri(P) with shortest edgepqrelocated := False

for each free vertex a of pqr

ifK = intersection of petal(xy), where xy is in link(a), is not empty set

and there exists a b in K such that all triangles of star(b) in the DelTri(P+{b}-{a})

are good

then

delete a; insert b; relocated:=True; break;

endfor

ifrelocated == False then

insert a point x is in petal(pq) of the bad triangle's shortest edge pq

that is furthest from all existing vertices

endwhile

Triangulations without Small and Large Angles

• 8/9/2019 Updating Triangulations

16/16

Feasible region slice is the intersection of [alpha, gamma]-crescent, alpha- wedge, and

gamma-slab. A pointx inside this region that is furthest away from all existing verticesis chosen as a refinement point (left). A bad trianglepqa is fixed by relocating one of its

vertices a into b which is a point in the intersection (shaded) of the [alpha, gamma]-slices of the edges on the link ofa (right).

Algorithm

Compute the Delaunay triangulation (DelTri) of the inputLet P denote the maintained point set

while there exists a bad trianglepqrin DelTri(P) with shortest edgepqrelocated := False

for each free vertex a of pqr

forevery edge xy on the link of a

Compute alpha-wedge(xy)

Compute gamma-slab(xy)

Compute [alpha, gamma]-crescent(xy)

Compute [alpha, gamma]-slice(xy)

endfor

ifK = intersection of [alpha, gamma]-slice(xy), where xy is in link(a), is not empty

set

and there exists a b in K such that all triangles of star(b) in the DelTri(P+{b}-{a})

are good

then

delete a; insert b; relocated:=True; break;

endfor

ifrelocated == False then

insert a point x is in [alpha, gamma]-slice(xy) of the bad triangle's shortest edge pq

that is furthest from all existing vertices

endwhile