Updating Triangulations

of 16

Embed Size (px)

Transcript of Updating Triangulations

  • 8/9/2019 Updating Triangulations


    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

    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).

  • 8/9/2019 Updating Triangulations


    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

  • 8/9/2019 Updating Triangulations


    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).

  • 8/9/2019 Updating Triangulations


    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


    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.

  • 8/9/2019 Updating Triangulations


    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.


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


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



    delete k+1, add diagonal (k,k+2)

    if k=n then move one point forward

    else move one point backward


  • 8/9/2019 Updating Triangulations



    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


    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


    if x=v stop

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


    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


    if s=v then


    push x

    move x one point forward



    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


    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


    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


    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.


    [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.

    Last updated 12/28/97. Comments about the page?Download this page.

    5.6 Steiner Points and Steiner


    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


    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.

  • 8/9/2019 Updating Triangulations


    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


    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

  • 8/9/2019 Updating Triangulations


    (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

  • 8/9/2019 Updating Triangulations


    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


    Algorithmic Approach Comparison

    aCute Triangle

    Our software employs an advancing front

    approach, inserts locally optimal Steiner

    points, first near the boundary of the


    The original Triangle software employed

    Ruppert's circumcenter insertion

    algorithm which is not an advancing front


    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

  • 8/9/2019 Updating Triangulations


    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.


    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


    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.


    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


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


    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


    Triangulations without Small and Large Angles

  • 8/9/2019 Updating Triangulations


    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).


    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)


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


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

    are good


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


    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