Updating Triangulations
Transcript of Updating Triangulations

8/9/2019 Updating Triangulations
1/16
Updating Triangulations.
(Insertions and Deletions of edges and vertices.)
Computational Geometry, 308507 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
edges. Some strategies to do that are considered in this page.
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
astarshaped hole (see the Appendix) which can be efficiently triangulated using the
threecoins 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 starshaped 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/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#star 
8/9/2019 Updating Triangulations
3/16
threecoins 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 edgevisiblepolygons (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/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/VApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/VApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#appendixhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/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 openedge 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 endpoints: 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 endpoints (see Section 2), triangulate the resulting starshaped hole (or externaly
visible region in the case of convex hull vertex), remove the other endpoint 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 twostarshaped holes (together resulting in application ofthreecoins
algorithm up to six times) and directly construct some edgevisible 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 formededgevisible 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/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#starhttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#threehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/project.html#edgehttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/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 checkbox.
The source code is available.
4. Appendix:
Threecoins algorithm.
The threecoins 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+n1, 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
delete k+1, add diagonal (k,k+2)
if k=n then move one point forward
else move one point backward
end
http://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/97/Sergei/EApplet.javahttp://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/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 threecoins 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 threecoins
algorithm should be used.
for n points of a polygon: v,k,k+1,...,k+n2,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 (s1,s,x) are counterclockwise or 0 degree turn triple then
begin
push x
move x one point forwardendelsebegin
if (s1,x,x+1) is a 180 degrees turn then
then add diagonal (s,x+1), move x one point forward
else add diagonal (s1,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 edgevisible polygons.
A polygon is calledEdgevisible if there exists an edge so that any point inside the
polygon is visible from some point on this edge.
Since the threecoins algorithm was capable of externally triangulating the pockets
(which are edge visible polygons with respect to the lid) we can internally triangulate
any edgevisible polygon using the above algorithm in linear time (see Figure 4.2).
Figure 4.2 Triangulating an edgevisible polygon.
Triangulating starshaped polygons
A polygon is calledStarshapedif 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 threecoins 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 twoedgevisible 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 threecoins 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 starshaped 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.
3229.
[3] A.A. Schone, J. vanLeeuwen, "Triangulating a starshaped polygon,"Technical Report RUVCS803, 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. 132133, 1972.
[5] J. Sklansky, "Measuring concavity on a rectangular mosaic,"IEEETransactions on Computing. C21, pp. 13551364, 1972.
[6] P. Bose, G.T. Toussaint, "Growing a tree from its branches,"Journal of
Algorithms. 19, pp. 86103, 1995.
Last updated 12/28/97. Comments about the page?Download this page.
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/cgprojects/97/Sergei/triang_upd.tar.gzmailto:[email protected]://cgm.cs.mcgill.ca/~godfried/teaching/cgprojects/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 nonDelaunay
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
largest circumcircle has radius .
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
threedimensional method which promises to avoid all badly shaped elements andwhich is based on a twodimensional 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, offcenter (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
gammaslab. 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 alphawedge(xy)
Compute gammaslab(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