This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

\catchline

Pseudo-Triangle Visibility Graph: Characterization and Reconstruction

Sahar Mehrpour         Alireza Zarei Department of Mathematical Sciences, Sharif University of Technology
Abstract

The visibility graph of a simple polygon represents visibility relations between its vertices. Knowing the correct order of the vertices around the boundary of a polygon and its visibility graph, it is an open problem to locate the vertices in a plane in such a way that it will be consistent with this visibility graph. This problem has been solved for special cases when we know that the target polygon is a tower or a spiral. Knowing that a given visibility graph belongs to a simple polygon with at most three concave chains on its boundary, a pseuodo-triangle, we propose a linear time algorithm for reconstructing one of its corresponding polygons. Moreover, we introduce a set of necessary and sufficient properties for characterizing visibility graphs of pseudo-triangles and propose polynomial algorithms for checking these properties.

keywords:
Computational geometry; Visibility graph; Characterizing visibility graph; Polygon reconstruction; Pseudo-triangle.

1 Introduction

The visibility graph of a simple polygon 𝒫\mathcal{P} is a graph 𝒢(V,E)\mathcal{G}(V,E) where VV is the vertices of 𝒫\mathcal{P} and an edge (u,v)(u,v) exists in EE if and only if the line segment uvuv lies completely inside 𝒫\mathcal{P}, i.e they are visible from each other. Based on this definition, each pair of adjacent vertices on the boundary of the polygon are assumed to be visible from each other. This implies that we have always a Hamiltonian cycle in a visibility graph which determines the order of vertices on the boundary of the corresponding polygon.

Computing the visibility graph of a given simple polygon has many applications in computer graphics, computational geometry and robotics. There are several efficient polynomial time algorithms for this problem. Asano et al. [1] and Welzl [2] proposed 𝒪(n2)\mathcal{O}(n^{2}) time algorithms for computing the visibility graph of a simple polygon of nn vertices. This was then improved to 𝒪(m+nloglogn)\mathcal{O}(m+n\log\log n) by Hershberger[3] where mm is the number of edges in the visibility graph. The term nloglognn\log\log n is due to the time required for triangulating a simple polygon. Using the 𝒪(n)\mathcal{O}(n) time triangulation algorithm of Chazelle [4] reduces the time complexity of Hershberger’s result to 𝒪(m+n)\mathcal{O}(m+n) which is optimal.

This concept has been studied in reverse as well: Characterizing a visibility graph problem is to determine whether a give graph is isomorphic to the visibility graph of some simple polygon, and the reconstruction problem is to build such a simple polygon. Everett showed that these probleme are in PSPACE[5], and this is the only result known about the complexity of these problems. These problems have been solved only for special cases of spiral and tower polygons. These results are obtained by Everett and Corneil [6] for spiral polygons and by Colley et al. [7] for tower polygons. In spiral polygons there is at most one concave chain (Fig. 1a) and the boundary of a tower polygon is composed of two concave chains and a single edge (Fig. 1b).

Although there is a bit progress on this type of reconstruction problem, there have been plenty of studies on characterizing visibility graphs [8, 7, 9, 10, 6, 11]. In 1988, Ghosh introduced three necessary conditions for visibility graphs and conjectured their sufficiency[11]. In 1990, Everett proposed a counter-example graph disproving Ghosh’s conjecture[5]. She also refined Ghosh’s third necessary condition to a new stronger condition[12]. In 1992, Abello et al. built a graph satisfying Ghosh’s conditions and the stronger version of the third condition which was not the visibility graph of any simple polygon, disproving the sufficiency of these conditions[13]. In 1997, Ghosh added his fourth necessary condition and conjectured that this condition along with his first two conditions and the stronger version of the third condition are sufficient for a graph to be a visibility graph. This was also disproved by a counter-example from Streinu in 2005[14].

There are also several results about other versions of the visibility graph like point visibility graph[15, 16, 17], pseudo-polygon visibility[18, 19, 20, 21] and terrain visibility[22]. Excellent surveys on visibility graph results can be found in [23, 24, 25].

Refer to caption
Figure 1: (a) A Spiral polygon, (b) a tower polygon, and (c) a pseudo-triangle.

In this paper, we solve the reconstruction problem for pseudo-triangles. A pseudo-triangle is a simple polygon whose boundary is composed of three concave chains, called side-chains, where each pair shares one convex vertex (called a corner). Let 𝒫\mathcal{P} be a pseudo-triangle formed by the concave side-chains AB=[A,,B]AB=[A,\ldots,B], AC=[A,,C]AC=[A,\ldots,C], and BC=[B,,C]BC=[B,\ldots,C] where AA, BB, and CC are the corners (Fig. 1c). According to this notation, a concave side-chain joining corner vertices XX and YY is denoted by XYXY where XX and YY are in {A,B,C}\{A,B,C\}.

Let =<A,,C,,B,,A>\mathcal{H}=\ <A,\ldots,C,\ldots,B,\ldots,A> be the Hamiltonian cycle of the visibility graph of 𝒫\mathcal{P} which indicates the order of vertices on the boundary of 𝒫\mathcal{P}. Here, we use the same notation for a vertex on the boundary of 𝒫\mathcal{P} and its corresponding vertex in the visibility graph and \mathcal{H}. For a given pair of Hamiltonian cycle \mathcal{H} and visibility graph 𝒢(V,E)\mathcal{G}(V,E), we introduce a set of necessary properties on \mathcal{H} and 𝒢\mathcal{G} when this pair belongs to a pseudo-triangle and prove that these properties are sufficient as well.

Having these properties, we propose a linear-time algorithm for reconstructing a pseudo-triangle 𝒫=<A,,C,,B,,A>\mathcal{P}=<A,\ldots,C,\ldots,B,\ldots,A> with 𝒢(V,E)\mathcal{G}(V,E) as its visibility graph. Moreover, we propose algorithms for verifying the properties on a given pair of \mathcal{H} and 𝒢\mathcal{G}. These characterizing algorithms run in linear time in terms of the size of 𝒢\mathcal{G}. Therefore, in this paper we solve the characterizing and reconstructing problems for another class of polygons called pseudo-triangles.

Since a tower polygon is a special case of a pseudo-triangle, we use the tower reconstruction algorithm [7] as a sub-routine in our algorithm to build the initial part of the polygon.

Our motivation in solving this problem for pseudo-triangles is that every polygon can be partitioned into pseudo-triangles. Then, an idea for solving a general reconstruction problem is to handle these steps:

  • Recognize a pseudo-triangle decomposition for the target polygon from 𝒢(V,E)\mathcal{G}(V,E) and \mathcal{H}.

  • Reconstruct each pseudo-triangle separately.

  • Attach the reconstructed pseudo-triangles satisfying the pseudo-triangle decomposition and the visibility constraints.

In Section 2, we briefly describe the tower reconstruction algorithm [7] for reconstructing tower polygons which is used as a sub-routine in our algorithm. In Section 3, we introduce a set of necessary conditions(properties) of the visibility graph of pseudo-triangles and in Section 4, we prove sufficiency of these conditions by proposing a reconstruction algorithm. Finally, we analyze the running time of the reconstruction algorithm and the algorithms required to check the properties.

2 Reconstructing Tower Polygons

A strong ordering on a bipartite graph 𝒢(V,E)\mathcal{G}(V,E) with partitions UU and WW is a pair, <U<_{U} and <W<_{W}, of orderings on respectively (resp.) UU and WW such that if u<Uuu<_{U}u^{\prime}, w<Www<_{W}w^{\prime}, and there are edges (u,w)(u,w^{\prime}) and (u,w)(u^{\prime},w) in EE, the edges (u,w)(u,w) and (u,w)(u^{\prime},w^{\prime}) also exist in EE.

The following theorem by Colley et al. [7] indicates the main property of the visibility graph of a tower polygon and guarantees the existence of a tower polygon consistent with such a visibility graph.

Theorem 2.1.

[7] Removing the edges of the reflex chains from the visibility graph of a tower gives an isolated vertex plus a connected bipartite graph for which the ordering of the vertices in the partitions provides a strong ordering. Conversely, any connected bipartite graph with strong ordering belongs to a tower polygon. Furthermore, such a tower can be constructed in linear time in terms of the number of vertices.

Refer to caption
Figure 2: Constructing a tower polygon.

The outline of the reconstruction algorithm proposed by Colley et al. [7] is as follows. As input, it takes the corner vertex A=u0=v0A=u_{0}=v_{0} and a connected bipartite graph 𝒢(V,E)\mathcal{G}(V,E) with vertices partitioned into two independent sets AB={u1,,um}AB=\{u_{1},\ldots,u_{m}\} and AC={v1,,vn}AC=\{v_{1},\ldots,v_{n}\} having strong ordering.

In the first step, the position of the corner AA and the vertices u1u_{1} and v1v_{1} are determined as in Fig. 2. In a middle step, suppose that the positions of the vertices u0,,uj1u_{0},\ldots,u_{j-1} and v0,,vk1v_{0},\ldots,v_{k-1} have been determined and the directions of the half-lines from uj1u_{j-1} and vk1v_{k-1} which respectively contain uju_{j} and vkv_{k}, where (uj,vk)E(u_{j},v_{k})\in E, are also known. To complete such a middle step, position of uju_{j} and the half-line from uju_{j} which contains uj+1u_{j+1} (where uj+1u_{j+1} is visible from vkv_{k}) must be determined. For this purpose, uju_{j} is located somewhere on its containing half-line horizontally below the vertex vcv_{c} which vcv_{c} has the minimum index among vertices of ACAC which are visible from uj+1u_{j+1}. Then, the containing half-line of uj+1u_{j+1} will be the half-line on the supporting line of uju_{j} and sj+1s_{j+1} downward from uju_{j}. Here, sj+1s_{j+1} is a point on vc1vcv_{c-1}v_{c} with an ϵ\epsilon distance below sjs_{j}, when sjs_{j} lies on vc1vcv_{c-1}v_{c}. If sjs_{j} does not lie on vc1vcv_{c-1}v_{c}, then sj+1s_{j+1} is a point on vc1vcv_{c-1}v_{c} with an ϵ\epsilon distance below vc1v_{c-1}.

According to this construction, sjs_{j} will be the intersection of chain ACAC and the supporting line of uju_{j} and uj1u_{j-1}. Similarly, rjr_{j} will be the intersection of ABAB and the supporting line of vjv_{j} and vj1v_{j-1} (Fig. 2). We say “will” because we first fix position of sjs_{j} (resp. rjr_{j}) from which position of vertex uju_{j} (resp. vjv_{j} ) is determined. We will use this notation once again in Section 4.

3 Properties of Pseudo-Triangle Visibility Graphs

In this section, we describe a set of properties that a pair of \mathcal{H} and 𝒢\mathcal{G} must have to be the Hamiltonian cycle and visibility graph of a pseudo-triangle.

Any sub-sequence <vi,,vj><v_{i},\ldots,v_{j}> on the Hamiltonian cycle is called a chain and is denoted by [vi,,vj][v_{i},\ldots,v_{j}]. A vertex vav_{a} on a chain [vi,,vj][v_{i},\ldots,v_{j}] is a blocking vertex for the invisible pair (vi,vj)(v_{i},v_{j}) if there is no visible pair of vertices vlv_{l} in [vi,,va1][v_{i},\ldots,v_{a-1}] and vkv_{k} in [va+1,,vj][v_{a+1},\ldots,v_{j}]. Ghosh showed that for every invisible pair of vertices (u,v)(u,v) in a visibility graph, there is at least one blocking vertex in [u,,v][u,\ldots,v] or [v,,u][v,\ldots,u]. Furthermore, every vertex on the shortest Euclidean path between uu and vv(inside the corresponding polygon) is a blocking vertex for this pair [11]. Note that in a pseudo-triangle the shortest Euclidean path between two invisible vertices turns in only one direction (i.e. clockwise or counterclockwise).

Let ABAB, ACAC, and BCBC be the side-chains of a pseudo-triangle. The order of vertices in these chains is defined with respect to one of their corner vertices. For a vertex uu in chain XYXY, IndX(u)Ind^{X}(u) is equal to the number of vertices in chain [X,,u][X,\ldots,u] minus one. According to this definition, IndA(A)Ind^{A}(A) is zero and IndB(A)Ind^{B}(A) is k1k-1 where kk is the number of vertices in chain ABAB. Then, based on a given vertex indexing we refer to the previous and next vertices of a given vertex on a side-chain. For a vertex vv in chain XYXY with IndX(v)=iInd^{X}(v)=i, we use NX(v,j)N^{X}(v,j) to refer to the vertex uXYu\in XY with IndX(u)=i+jInd^{X}(u)=i+j. Similarly, PX(v,j)P^{X}(v,j) is the vertex uXYu\in XY with IndX(u)=ijInd^{X}(u)=i-j. For the sake of brevity, we use NX(v)N^{X}(v) instead of NX(v,1)N^{X}(v,1), and PX(v)P^{X}(v) instead of PX(v,1)P^{X}(v,1). Note that in this notation, jj can be a positive or negative natural number. For corner vertices which belong to two side-chains we use NN or PP notation only when the target chain is known from the context. For a vertex uu, FVX(u,XY)FV^{X}(u,XY) is a vertex on chain XYXY with minimum index that is visible from uu when the indices start from corner vertex XX. Similarly, LVX(u,XY)LV^{X}(u,XY) is a vertex on chain XYXY with maximum index that is visible from uu when the indices start from corner vertex XX. We have used FVFV and LVLV respectively as abbreviation for first visible and last visible. Fig. 3 depicts this notation.

Refer to caption
Figure 3: Notation used for vertices.
Lemma 3.1.

It is always possible to identify at least two corners of a pseudo-triangle 𝒫\mathcal{P} from its corresponding Hamiltonian cycle and visibility graph.

Proof 3.2.

Since a corner is a convex vertex, it cannot be a blocking vertex for its neighbors. Therefore, in the Hamiltonian cycle of a pseudo-triangle, there are at most three vertices whose adjacent vertices are visible pairs. By traversing the Hamiltonian cycle, these visible pairs, and the corresponding corners, can be identified.

Suppose that this method does not identify all three corners. Without loss of generality, assume that AA is an unidentified corner and its adjacent vertices on chains ABAB and ACAC are respectively uu and vv. This means that uu and vv do not see each other and there must be a blocking vertex for this invisible pair. Due to their concavity, this blocking vertex cannot belong to the chains ABAB and ACAC. Consider the shortest Euclidean path between uu and vv inside the pseudo-triangle(Fig. 4). It is clear that this path is composed of a subchain of BCBC, say [w,,w][w,\ldots,w^{\prime}], and two edges (u,w)(u,w) and (w,v)(w^{\prime},v) where IndB(w)IndB(w)Ind^{B}(w^{\prime})\geq Ind^{B}(w) and both edges (u,w)(u,w) and (w,v)(w^{\prime},v) belong to the visibility graph. The polygon formed by <u,,B,,w><u,\ldots,B,\ldots,w> is a tower polygon with base (u,w)(u,w) and corner BB. The corner of this tower is the isolated vertex obtained by removing the edges of its Hamiltonian cycle from its visibility graph. Therefore, the corner vertex BB is detectable. The same argument holds for the tower polygon formed by <w,,C,,v><w^{\prime},\ldots,C,\ldots,v> from which the corner CC can be identified. This means that if AA cannot be identified from the visibility graph, the other two corners will be detectable. ∎

Refer to caption
Figure 4: A pseudo-triangle with BB and CC as its detectable corners.

Consider a pseudo-triangle 𝒫\mathcal{P} with side-chains ABAB, ACAC, and BCBC, and 𝒢\mathcal{G} and \mathcal{H} as its visibility graph and Hamiltonian cycle, respectively. Assume that the method described in Lemma 3.1, identifies only two corners of 𝒫\mathcal{P}. Without loss of generality, assume that AA is the unidentified vertex. This means that there is a subchain on BCBC which blocks the visibility of adjacent vertices of AA on chains ABAB and ACAC. Then, there is no visibility edge between a vertex from ABAB and a vertex of ACAC. By removing the edges of the Hamiltonian cycle from the visibility graph, two isolated vertices BB and CC and a connected bipartite graph, with parts SS and TT, is obtained where SS consists of vertices of chains ABAB and ACAC except the isolated vertices BB and CC and TT consists of vertices of BCBC except BB and CC. By adding the isolated vertex BB to TT, and the boundary edge ee to this bipartite graph that connects BB to its adjacent vertex on ABAB, we will have a single isolated vertex CC and a bipartite graph with strong ordering. Then, according to Theorem 2.1 this bipartite graph corresponds to a tower polygon with base edge ee and 𝒢\mathcal{G} and \mathcal{H} as its visibility graph and Hamiltonian cycle, respectively. Fig. 5 shows how such a pseudo-triangle can be interpreted as a tower polygon.

Refer to caption
Figure 5: Interpreting a pseudo-triangle as a tower polygon: (a) initial pseudo-triangle, (b) equivalent tower polygon.

Therefore, we have the following property about the pair of \mathcal{H} and 𝒢\mathcal{G} of a pseudo-triangle.

Property 1

If \mathcal{H} and 𝒢\mathcal{G} are respectively the Hamiltonian cycle and visibility graph of a pseudo-triangle 𝒫\mathcal{P}, at least two corners of 𝒫\mathcal{P} can be identified. Furthermore, if only two corners are detectable, the given \mathcal{H} and 𝒢\mathcal{G} belong to a pseudo-triangle if and only if there is a tower polygon with \mathcal{H} and 𝒢\mathcal{G} as its Hamiltonian cycle and visibility graph, respectively.

From this property, we assume for the remainder of this section that the method described in the proof of Lemma 3.1 identifies all three corners. Because otherwise, we can use the tower polygon algorithm to decide whether the given pair of \mathcal{H} and 𝒢\mathcal{G} belong to a tower polygon( which is a special case pseudo-triangle) and obtain the answer.

An interval of a chain with endpoints pp and qq is the set of points on this chain connecting pp to qq. Note that in this definition, the endpoints of an interval are not necessarily vertices of the chain. For example, for points pp on edge (ui,ui+1)(u_{i},u_{i+1}) and qq on edge (uj,uj+1)(u_{j},u_{j+1}) of a chain ABAB where i<ji<j, the interval defined by pp and qq is the chain [p,ui+1,,uj,q][p,u_{i+1},\ldots,u_{j},q].

Property 2

Every non-corner vertex of a side-chain sees a single nonempty interval from anyone of the other side-chains.

Proof 3.3.

The inner angle of such a vertex is more than π\pi and its inner visibility region cannot be bounded by a single concave chain. Therefore, it will see some parts from any of the other side-chains. The continuity of these visible parts on each side-chain is proved by contradiction. Assume that a vertex uABu\in AB sees two disjoint intervals [vi,,vj][v_{i},\ldots,v_{j}] and [vk,,vl][v_{k},\ldots,v_{l}] from ACAC meaning that the interval (vj,,vk)(v_{j},\ldots,v_{k}) is not visible from uu. Consider an invisible point vv^{\prime} in (vj,,vk)(v_{j},\ldots,v_{k}). There must be a blocking vertex for the invisible pair (u,v)(u,v^{\prime}). This blocking vertex must lie on the third side-chain which will also blocks either the visibility of uu and vjv_{j} or uu and vkv_{k}. ∎

Property 3

(Fig. 6(a)) For any pair of side-chains ABAB and ACAC and a pair of vertices {u,v}\{u,v\} where uABu\in AB, vACv\in AC, vAv\neq A, and u=FVA(v,AB)u=FV^{A}(v,AB), we have (PA(v),u)E(P^{A}(v),u)\in E. In other words, the closest vertex to AA on ABAB which is visible to a vertex vACv\in AC, for vAv\neq A, is also visible from PA(v)P^{A}(v).

Proof 3.4.

Consider the subpolygon <u,PA(u),,A,,PA(v),v><u,P^{A}(u),\ldots,A,\ldots,P^{A}(v),v>. If we triangulate this polygon, there is no internal diagonal connected to vv which means that<u,v,PA(v)><u,v,P^{A}(v)> must be a triangle in any triangulation. Therefore, the edge (u,PA(v))(u,P^{A}(v)) is a diagonal and this edge must exist in the visibility graph. ∎

Refer to caption
Figure 6: (a) Property 3: PA(v)P^{A}(v) and FVA(v,AB)FV^{A}(v,AB) see each other, (b) Corollary 3.5: FVA(v,AB)FV^{A}(v^{\prime},AB) cannot be closer to AA than FVA(v,AB)FV^{A}(v,AB).
Corollary 3.5.

(Fig. 6(b)) For any pair of side-chains ABAB and ACAC and a vertex vACv\in AC where vCv\neq C, if FVA(v,AB)=ujFV^{A}(v,AB)=u_{j} and FVA(NA(v),AB)=ukFV^{A}(N^{A}(v),AB)=u_{k}, then
IndA(uk)IndA(uj)Ind^{A}(u_{k})\geq Ind^{A}(u_{j}).

Corollary 3.6.

For any pair of side-chains ABAB and ACAC and a vertex vACv\in AC where vCv\neq C, if vv does not see any vertex from ABAB, then NA(v)N^{A}(v) does not see any vertex of ABAB as well.

Corollary 3.7.

(Fig. 7(a)) For any pair of side-chains ABAB and ACAC and a pair of vertices (u,v)(u,v) where uABu\in AB and vACv\in AC and k,l>0k,l>0, if both (PA(u,k),v)(P^{A}(u,k),v) and (u,PA(v,l))(u,P^{A}(v,l)) exist in EE, then (PA(u,k),PA(v,l))E(P^{A}(u,k),P^{A}(v,l))\in E.

Proof 3.8.

Lets denote PA(u,k)P^{A}(u,k) and PA(v,l)P^{A}(v,l) by uu^{\prime} and vv^{\prime}, respectively. Trivially, IndA(u)IndA(FVA(v,AB))Ind^{A}(u^{\prime})\geq Ind^{A}(FV^{A}(v,AB)). Applying Corollary 3.5 iteratively on chain [v,,v][v^{\prime},\ldots,v] implies that IndA(FVA(v,AB))IndA(FVA(v,AB))Ind^{A}(FV^{A}(v,AB))\geq Ind^{A}(FV^{A}(v^{\prime},AB)). This means that uu^{\prime} lies between two vertices FVA(v,AB)FV^{A}(v^{\prime},AB) and uu which are both visible from vv^{\prime}. Then, Property 2 implies that uu^{\prime} is also visible from vv^{\prime}.∎

Corollary 3.9.

(Fig. 7(b)) For any pair of side-chains ABAB and ACAC and a pair of vertices (u,v)(u,v) where uABu\in AB and vACv\in AC, if both (NA(u,k),NA(v,l))(N^{A}(u,k),N^{A}(v,l)) and (u,v)(u,v) exist in EE where l,k>0l,k>0, then at least one of the edges (NA(u),v)(N^{A}(u),v) or (u,NA(v))(u,N^{A}(v)) exists in EE.

Proof 3.10.

We prove this by induction on k+lk+l. For the induction base step, assume that k=l=1k=l=1. If vv is not visible from NA(u)N^{A}(u), NA(v)N^{A}(v) must be equal to FVA(NA(u),AB)FV^{A}(N^{A}(u),AB). Then, Property 3 implies that uu sees NA(v)N^{A}(v).

For the inductive step, assume that the corollary holds for all k+l<nk+l<n where n>2n>2. Lets denote NA(u,k)N^{A}(u,k) and NA(v,l)N^{A}(v,l) by uu^{\prime} and vv^{\prime}, respectively. If IndA(FVA(u,AB))IndA(v)Ind^{A}(FV^{A}(u^{\prime},AB))\geq Ind^{A}(v), vv sees both vertices uu and uu^{\prime} which according to Property 2 sees NA(u)N^{A}(u) as well. Otherwise, according to Property 3, FVA(u,AB)FV^{A}(u^{\prime},AB) is visible from PA(u)P^{A}(u^{\prime}). If PA(u)=uP^{A}(u^{\prime})=u, then uu sees vv and FVA(u,AB)FV^{A}(u^{\prime},AB) which is farther from AA than vv and means that uu and NA(v)N^{A}(v) see each other. Finally, when PA(u)uP^{A}(u^{\prime})\neq u we obtain a smaller version of the problem with parameters k1k-1 and ll which holds by induction.∎

Refer to caption
Figure 7: (a) Corollary 3.7: PA(u,2)P^{A}(u,2) and PA(v)P^{A}(v) must see each other, (b) Corollary 3.9: uu and NA(v)N^{A}(v) see each other, (c) Corollary 3.11: Visible vertices of ACAC from NA(u,k)N^{A}(u,k) are also visible to NA(u,k1)N^{A}(u,k-1).
Corollary 3.11.

(Fig. 7(c)) For any pair of side-chains ABAB and ACAC and a pair of vertices uABu\in AB and vACv\in AC, where (u,v)E(u,v)\in E and none of the edges (NA(u),v)(N^{A}(u),v) and (u,NA(v))(u,N^{A}(v)) exist in EE, all visible vertices of ACAC from NA(u,k)N^{A}(u,k) are also visible from NA(u,k1)N^{A}(u,k-1) (for any k>0k>0). This implies that LVA(NA(u,k),AC)LV^{A}(N^{A}(u,k),AC) must lie above vv.

Proof 3.12.

Any visible vertex vv^{\prime} must belong to [A,,PA(v)][A,\ldots,P^{A}(v)]. Otherwise, according to Corollary 3.9 either (NA(u),v)(N^{A}(u),v) or (u,NA(v))(u,N^{A}(v)) must exist. According to Corollary 3.5, FVA(u,AC)FV^{A}(u,AC) is closer to AA than FVA(NA(u,k),AC)FV^{A}(N^{A}(u,k),AC), and because of the continuity of the chain that is visible from uu (Property 2) , vv^{\prime} will be visible from uu. This implies that vv^{\prime} is visible from all vertices of the chain [u,,NA(u,k)][u,\ldots,N^{A}(u,k)]. ∎

For each pair of vertices uABu\in AB and vACv\in AC, the diagonal edge (u,v)(u,v) in the visibility graph of a pseudo-triangle specifies a tower formed by the boundary vertices <u,,A,,v><u,\ldots,A,\ldots,v>. The vertices of this tower satisfy the strong ordering defined earlier. This strong ordering can be derived from Property 2 and corollaries 3.7 and 3.9. Therefore, we do not specify this as a new property.

Property 4

For any pair of side-chains ABAB and ACAC and a pair of vertices uABu\in AB and vACv\in AC, where (u,v)E(u,v)\in E and none of the edges (NA(u),v)(N^{A}(u),v) and (u,NA(v))(u,N^{A}(v)) exist in EE,

  • a.

    (Fig. 8(a)) there is a nonempty subchain of the third side-chain BCBC which is visible from both uu and vv.

  • b.

    (Fig. 8(b)) let [w,,w][w,\ldots,w^{\prime}] be the maximum subchain of BCBC visible to both uu and vv where w=NB(w,l)w^{\prime}=N^{B}(w,l), l0l\geq 0. Then, ww^{\prime} is not closer to BB than LVB(NA(u),BC)LV^{B}(N^{A}(u),BC), or formally, IndB(w)IndB(LVB(NA(u),BC))Ind^{B}(w^{\prime})\geq Ind^{B}(LV^{B}(N^{A}(u),BC)).

  • c.

    (Fig. 8(b)) FVB(NA(v),BC)FV^{B}(N^{A}(v),BC) is not closer to BB than LVB(NA(u),BC)LV^{B}(N^{A}(u),BC), or formally, IndB(FVB(NA(v),BC))IndB(LVB(NA(u),BC))Ind^{B}(FV^{B}(N^{A}(v),BC))\geq Ind^{B}(LV^{B}(N^{A}(u),BC)).

Proof 3.13.

(a) Triangulating 𝒫\mathcal{P} using the edge (u,v)(u,v), the adjacent triangle of this edge in the opposite side of AA must have its third vertex on BCBC. This is due to the invisibility of (NA(u),v)(N^{A}(u),v) and (u,NA(v))(u,N^{A}(v)) pairs. Therefore, this chain contains at least one vertex. From Property 2 we know that the visible part of BCBC from any one of vertices uu and vv is continuous and the intersection of these parts will be continuous as well.

(b) From (a) we know that the subchain [w,,w][w,\ldots,w^{\prime}] is nonempty. For the sake of a contradiction, assume that w′′=LVB(NA(u),BC)w^{\prime\prime}=LV^{B}(N^{A}(u),BC) is farther from BB than ww^{\prime}. Then, the segments (w′′,NA(u))(w^{\prime\prime},N^{A}(u)) and (w,v)(w^{\prime},v) intersect each other inside the pseudo-triangle. Let pp be this intersection point. The subpolygon formed by the boundary vertices <u,NA(u),p,v><u,N^{A}(u),p,v> must be a convex polygon which completely lies inside the pseudo-triangle. Otherwise, ww^{\prime} will prevent NA(u)N^{A}(u) and w′′w^{\prime\prime} from seeing each other. So, the diagonal edge (NA(u),v)(N^{A}(u),v) must exist in EE which is a contradiction.

(c) Let vv^{\prime} be NA(v)N^{A}(v) and uu^{\prime} be NA(u)N^{A}(u). For the sake of contradiction, assume that FVB(v,BC)FV^{B}(v^{\prime},BC) is closer to BB than LVB(u,BC)LV^{B}(u^{\prime},BC). Then, the edges (v,FVB(v,BC))(v^{\prime},FV^{B}(v^{\prime},BC)) and (u,LVB(u,BC))(u^{\prime},LV^{B}(u^{\prime},BC)) intersect within the pseudo-triangle. Let pp be this intersection point. The subpolygon formed by the boundary vertices <u,v,v,p,u><u,v,v^{\prime},p,u^{\prime}> must be a convex polygon which completely lies inside the pseudo-triangle. Otherwise, FVB(v,BC)FV^{B}(v^{\prime},BC) will prevent uu^{\prime} and LVB(u,BC)LV^{B}(u^{\prime},BC) from seeing each other. So, all diagonal edges (u,v)(u,v^{\prime}), (u,v)(u^{\prime},v), and (u,v)(u^{\prime},v^{\prime}) must exist in EE which is a contradiction. ∎

Refer to caption
Figure 8: (a) Property 4(a): uu and vv must see common vertices on mWmW, (b) Property 4(b): ww^{\prime} is not closer to BB than LVB(NA(u),BC)LV^{B}(N^{A}(u),BC), Property 4(c): FVB(NA(v),BC)FV^{B}(N^{A}(v),BC) is not closer to BB than LVB(NA(u),BC)LV^{B}(N^{A}(u),BC).
Corollary 3.14.

For any side-chain BCBC, there exists at least one vertex wBCw\in BC that sees some vertices from both of the other side-chains. Furthermore, every vertex PB(w,k)P^{B}(w,k) where k>0k>0, sees at least one vertex from ABAB.

Proof 3.15.

If there is a pair of vertices uABu\in AB and vACv\in AC satisfying Property 4(a), the first part holds for the vertices of the subchain of the third side-chain BCBC which is visible from both uu and vv. If there is no such a pair of vertices, without loss of generality assume that BB sees some vertices of ACAC and v=LVA(B,AC)v=LV^{A}(B,AC). Trivially, the adjacent vertex of BB on side-chain BCBC sees both BABB\in AB and vACv\in AC. This can be obtained directly from Property 4(a) by imaginary cloning BB as two separate vertices on ABAB and ACAC. and adding new corner vertex BB as a point on the supporting line of BB and vv in the opposite side of vv.

Having a vertex satisfying the first part, the second part follows from Property 3. ∎

Property 5

(Fig. 9) For any side-chain BCBC and a vertex wBCw\in BC with distinct vertices u=FVA(w,AB)u=FV^{A}(w,AB) and v=FVA(w,AC)v=FV^{A}(w,AC), the vertices uu and vv are visible from each other.

Proof 3.16.

Let 𝒫\mathcal{P}^{\prime} be the subpolygon with <A,,u,w,v,,A><A,\ldots,u,w,v,\ldots,A> as its boundary vertices. The vertex ww does not see any other vertex of 𝒫\mathcal{P}^{\prime} which means that the diagonal uvuv must be used to triangulate 𝒫\mathcal{P}^{\prime}. This means that uu and vv must be visible from each other. ∎

Refer to caption
Figure 9: Property 5: FVA(w,AB)FV^{A}(w,AB) and FVA(w,AC)FV^{A}(w,AC) must see each other.
Property 6

(Fig. 10) For any side-chain BCBC, let uu and vv be respectively the closest vertices on ABAB and ACAC to AA which are visible from some vertex (not necessarily the same) of BCBC. Then, there exists a nonempty subchain [w,,w][w,\ldots,w^{\prime}] in BCBC , w=NB(w,l)w^{\prime}=N^{B}(w,l) and l0l\geq 0, that either all vertices of this subchain are visible from both uu and vv, or, (w,w)(w,w^{\prime}) is an edge of BCBC and ww sees vv and ww^{\prime} sees uu.

Proof 3.17.

It is simple to show that (u,v)E(u,v)\in E. Assume that there is no vertex on BCBC that sees both vertices uu and vv. Then, we first show that there is a pair of vertices ww and w=NB(w,l)w^{\prime}=N^{B}(w,l) where ww sees vv and ww^{\prime} sees uu. Let ww be FVC(v,BC)FV^{C}(v,BC) and ww^{\prime} be FVB(u,BC)FV^{B}(u,BC). Trivially, www\neq w^{\prime} and ww is closer to BB than ww^{\prime} (otherwise, uu and vv will be visible to both ww and ww^{\prime}). To complete the proof, it is enough to show that w=NB(w)w^{\prime}=N^{B}(w). This is done by showing that any vertex w′′w^{\prime\prime} between ww and ww^{\prime} on BCBC must see at least one of the vertices uu and vv which contradicts the definition of ww and ww^{\prime}.

Assume that there is a vertex w′′w^{\prime\prime} between ww and ww^{\prime} and it sees neither uu nor vv. In the tower polygon formed by boundary <u,,B,,w′′,w><u,\ldots,B,\ldots,w^{\prime\prime},w^{\prime}>, the blocking vertex for the invisible pair (w′′,u)(w^{\prime\prime},u) must lie on ABAB. Similarly, in the tower formed by boundary <w,w′′,,C,,v><w,w^{\prime\prime},\ldots,C,\ldots,v>, the blocking vertex for the invisible pair (w′′,v)(w^{\prime\prime},v) must lie on ACAC. Therefore, at least one of the side-chains ABAB and ACAC must be convex which is a contradiction. So, w′′w^{\prime\prime} must see at least one of the vertices uu and vv. ∎

Refer to caption Refer to caption
Figure 10: Different cases of Property 6.
Corollary 3.18.

(Fig. 11) If ww and ww^{\prime} satisfy the conditions of Property 6, then for k>0k>0:

  • ui=FVA(PB(w,k),AB)u_{i}=FV^{A}(P^{B}(w^{\prime},k),AB) is not closer to AA than
    uj=FVA(P(w,k1),AB)u_{j}=FV^{A}(P^{(}w^{\prime},k-1),AB).

  • If there are vertices vi=FVA(PB(w,k),AC)v_{i}=FV^{A}(P^{B}(w,k),AC) and
    vj=FVA(PB(w,k1),AC)v_{j}=FV^{A}(P^{B}(w,k-1),AC), then viv_{i} is not closer to AA than vjv_{j}.

These mean that as we move from ww^{\prime} to ww the topmost visible vertices of ABAB and ACAC go down along these chains.

Proof 3.19.

For the sake of contradiction, assume that uiu_{i} is closer to AA than uju_{j}. The diagonal edge (w,FVA(w,AB))(w^{\prime},FV^{A}(w^{\prime},AB)) along with vertices <w,,B,,FVA(w,AB)><w^{\prime},\ldots,B,\ldots,FV^{A}(w^{\prime},AB)> form a tower polygon which contains the vertices uiu_{i} and uju_{j}, and satisfies strong ordering. When both edges (PB(w,k),ui)(P^{B}(w^{\prime},k),u_{i}) and (PB(w,k1),uj)(P^{B}(w^{\prime},k-1),u_{j}) exist in the visibility graph, the edge (PB(w,k1),ui)(P^{B}(w^{\prime},k-1),u_{i}) must also exist in EE.

We prove the second part by contradiction. Let PB(w,l)P^{B}(w,l) be the closest vertex of BCBC to BB which sees at least one vertex from ACAC (l0l\geq 0). For lk>0l\geq k>0, assume that viv_{i} is closer to AA than vjv_{j}. Since FVA(w,AC)FV^{A}(w,AC) is not farther from AA than viv_{i}, Corollary 3.7 implies that viv_{i} sees ww. According to Property 2, viv_{i} is also visible from PB(w,k1)P^{B}(w,k-1) which is a contradiction. ∎

Refer to caption
Figure 11: Corollary 3.18: uiu_{i} (resp. viv_{i}) is not closer to AA than uju_{j} (resp. vjv_{j}).
Property 7

Let [wi,,wj][w_{i},\dots,w_{j}] be the subchain of BCBC satisfying Property 6 and for any vertex wBCw\in BC, u=FVA(w,AB)u=FV^{A}(w,AB) and v=FVA(w,AC)v=FV^{A}(w,AC) are the closest vertices to AA which are visible to ww. Then:

  • a

    If w[wi,,wj]w\in[w_{i},\dots,w_{j}], then at least one of the pairs (NA(u),PA(v))(N^{A}(u),P^{A}(v)) and
    (PA(u),NA(v))(P^{A}(u),N^{A}(v)) are invisible.

  • b

    If w[B,,wj]w\in[B,\dots,w_{j}] and (NA(u),PA(v))(N^{A}(u),P^{A}(v)) are invisible vertices, then this happens for all vertices in [B,,w][B,\ldots,w] and LVA(w,AC)LV^{A}(w,AC) is not farther from AA than LVA(NB(w),AC)LV^{A}(N^{B}(w),AC). This is symmetrically true when w[wi,,C]w\in[w_{i},\dots,C] and (PA(u),NA(v))(P^{A}(u),N^{A}(v)) are invisible vertices.

  • c

    If wBw\neq B is closer to BB than wiw_{i}, then (NA(u),PA(v))(N^{A}(u),P^{A}(v)) is an invisible pair. Symmetrically, (PA(u),NA(v))(P^{A}(u),N^{A}(v)) are invisible vertices when wCw\neq C is closer to CC than wjw_{j}.

Proof 3.20.

(a) Consider the subpolygon 𝒫\mathcal{P}^{\prime} with boundary <w,v,,A,,u><w,v,\ldots,A,\ldots,u>. The pairs (w,PA(v))(w,P^{A}(v)) and (w,PA(u))(w,P^{A}(u)) are invisible. These pairs share the same blocking vertex. If uu is the blocking vertex, then (NA(u),PA(v))(N^{A}(u),P^{A}(v)) is an invisible pair, and if vv is the blocking vertex, then the pair (PA(u),NA(v))(P^{A}(u),N^{A}(v)) is invisible.

(b) Assume that (NA(u),PA(v))(N^{A}(u),P^{A}(v)) are invisible from each other. This means that the visible vertices of ACAC from ww is bounded from above by vertices of ABAB. This will happen for all vertices in [B,,w][B,\ldots,w] as well. A similar argument holds when (PA(u),NA(v))(P^{A}(u),N^{A}(v)) is the invisible pair.

(c) It is clear that at least one of the vertices FVA(wi,AB)FV^{A}(w_{i},AB) and FVA(wi,AC)FV^{A}(w_{i},AC) is farther from AA than uu and vv. For the sake of a contradiction, assume that (NA(u),PA(v))(N^{A}(u),P^{A}(v)) is a visible pair. Then, in subpolygon 𝒫=<w,v,,A,,u>\mathcal{P}^{\prime}=<w,v,\ldots,A,\ldots,u>, vv must be the blocking vertex for the pairs (w,PA(v))(w,P^{A}(v)) and (w,PA(u))(w,P^{A}(u)). This vertex also blocks the pairs (NB(w),PA(u,i))(N^{B}(w),P^{A}(u,i)) and (NB(w,l),PA(v,j))(N^{B}(w,l),P^{A}(v,j)). But, for some l>0l>0 and ii and j0j\geq 0, NB(w,l)=wN^{B}(w,l)=w^{\prime}, PA(u,i)=FVA(w,AB)P^{A}(u,i)=FV^{A}(w^{\prime},AB), and PA(v,j)=FVA(wi,AC)P^{A}(v,j)=FV^{A}(w_{i},AC) which contradicts the definition of wiw_{i}. ∎

As mentioned earlier, Ghosh introduced four necessary conditions for a visibility graph of a simple polygon. It is simple to show that these conditions are derived from the properties described in this section which meas that these properties includes Ghosh’s conditions.

4 Pseudo-Triangle Reconstruction

In this section, 𝒢(V,E)\mathcal{G}(V,E) denotes the visibility graph of a pseudo-triangle 𝒫\mathcal{P} with ABAB, ACAC, and BCBC side-chains and the order of vertices on the boundary of 𝒫\mathcal{P} is specified by a Hamiltonian cycle =<A,,C,,B,,A>\mathcal{H}=<A,\ldots,C,\ldots,B,\ldots,A> in 𝒢\mathcal{G}. We assume that the inputs 𝒢\mathcal{G} and \mathcal{H} satisfy the properties 1 to 7. We propose an algorithm for reconstructing a pseudo-triangle corresponding to the given pair of 𝒢\mathcal{G} and \mathcal{H}.

In order to reconstruct the pseudo-triangle 𝒫\mathcal{P}, we divide 𝒫\mathcal{P} into four subpolygons 𝒳\mathcal{X}, 𝒴\mathcal{Y}, 𝒵\mathcal{Z}, and 𝒵\mathcal{Z}^{\prime} as shown in Fig. 12 and reconstruct each one separately. For the sake of brevity, ui=NA(A,i)u_{i}=N^{A}(A,i) on side-chain ABAB, vj=NA(A,j)v_{j}=N^{A}(A,j) on side-chain ACAC, and wk=NB(B,k)w_{k}=N^{B}(B,k) on side-chain BCBC where i,j,k0i,j,k\geq 0. We assume that ABAB and ACAC have respectively α+1\alpha+1 and δ+1\delta+1 vertices.

Refer to caption
Figure 12: The partitions of the initial polygon in reconstruction algorithm: the light-gray region is 𝒳\mathcal{X}, the dark-gray is 𝒴\mathcal{Y} and the white parts are 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime}.

The subpolygon 𝒳\mathcal{X} is formed by subchains [A,,uν][A,\ldots,u_{\nu}] and [A,,vμ][A,\ldots,v_{\mu}] and edge (uν,vμ)(u_{\nu},v_{\mu}) where LVA(uν,AC)=vμLV^{A}(u_{\nu},AC)=v_{\mu} and LVA(vμ,AB)=uνLV^{A}(v_{\mu},AB)=u_{\nu}. The vertices uνu_{\nu} and vμv_{\mu} are identified by walking alternatively on side-chains ABAB and ACAC from corner vertex AA towards BB and CC. As a step of this trace, assume that we are at vertices uiu_{i} and vjv_{j} and want to go one step further on ABAB. If uiu_{i} is the last vertex on ABAB or vjv_{j} does not see ui+1u_{i+1} we fix uiu_{i} as uνu_{\nu}. Otherwise, we go to ui+1u_{i+1} in this step. Walking on side-chain ACAC are done similarly. The subpolygon 𝒳\mathcal{X} is a tower polygon with strong ordering in its visibility graph. Note that uν+1u_{\nu+1} or vμ+1v_{\mu+1} exists only when the side-chain BCBC has more than one edge, otherwise, two identified adjacent corners uνu_{\nu} and vμv_{\mu} compose the base of a tower polygon which can be constructed by the tower reconstruction algorithm. So, we assume that BCBC has more than one edge.

The subpolygon 𝒴\mathcal{Y} is identified as follows: Let [wi,,wj][w_{i},\ldots,w_{j}] be the maximum subchain of BCBC visible from both uνu_{\nu} and vμv_{\mu}. According to Property 4(a), this chain is nonempty and continuous. Let LVB(uν+1,BC)=wkLV^{B}(u_{\nu+1},BC)=w_{k} and FVB(vμ+1,BC)=wlFV^{B}(v_{\mu+1},BC)=w_{l}. From Property 4(b), kjk\leq j and lil\geq i and from Property 4(c), klk\leq l. We define MM and NN as max(k,i)\max(k,i) and min(l,j)\min(l,j), respectively. It is clear that chain [wM,,wN][w_{M},\ldots,w_{N}] contains at least one vertex. Then, 𝒴\mathcal{Y} is defined to be the polygon with <uν,wM,,wN,vμ><u_{\nu},w_{M},\ldots,w_{N},v_{\mu}> as its boundary.

The subpolygon 𝒵\mathcal{Z} is formed by subchains [uν,,B)][u_{\nu},\ldots,B)] and [B,,wM][B,\ldots,w_{M}] and edge (uν,wM)(u_{\nu},w_{M}). Similarly, subchains [vμ,,C][v_{\mu},\ldots,C] and [C,,wN][C,\ldots,w_{N}] and edge (vμ,wN)(v_{\mu},w_{N}) specify the subpolygon 𝒵\mathcal{Z}^{\prime}. It is clear that 𝒫\mathcal{P} is the union of 𝒳\mathcal{X}, 𝒴\mathcal{Y}, 𝒵\mathcal{Z}, and 𝒵\mathcal{Z}^{\prime}.

Our reconstruction algorithm first builds 𝒳\mathcal{X} using the tower reconstruction algorithm in such a way that vertices of ABAB lie to the left of vertices of ACAC. Then, we extend this polygon to build 𝒴\mathcal{Y} (Section 4.1) and build and attach 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime} parts to this polygon (Section 4.2) to complete the construction procedure.

4.1 Reconstructing 𝒴\mathcal{Y}

In this step, we build the subpolygon 𝒴=<uν,wM,,wN,vμ>\mathcal{Y}=<u_{\nu},w_{M},\ldots,w_{N},v_{\mu}>. We know the position of vertices uνu_{\nu} and vμv_{\mu} from the previous step, which are also on the boundary of 𝒴\mathcal{Y}. To locate positions of other vertices, we show that there are nonempty regions in which these vertices can be placed.

For any vertex wjw_{j} from 𝒴\mathcal{Y} which FVA(wj,AB)=uiFV^{A}(w_{j},AB)=u_{i} and FVA(wj,AC)=vlFV^{A}(w_{j},AC)=v_{l}, we define a region 𝒲i,lj\mathscr{W}^{j}_{i,l} from which each point sees all vertices in the subchains [ui,,uν][u_{i},\ldots,u_{\nu}] and [vl,,vμ][v_{l},\ldots,v_{\mu}]. Therefore, wjw_{j} can be placed in 𝒲i,lj\mathscr{W}^{j}_{i,l} satisfying the visibility constraints between wiw_{i} and vertices of 𝒳\mathcal{X}. We use 𝒲j\mathscr{W}^{j} instead of 𝒲i,lj\mathscr{W}^{j}_{i,l} whenever ii and ll indices are not important. The region 𝒲j\mathscr{W}^{j} is determined as follows: Since wjw_{j} sees uνu_{\nu} and vμv_{\mu}, the vertices uiu_{i} and vlv_{l} always exist and are well-defined. If uiu_{i} and vlv_{l} are identical, then i=l=0i=l=0 and the region 𝒲j=𝒲0,0j\mathscr{W}^{j}=\mathscr{W}^{j}_{0,0} is defined to be the part of the cone formed by the lines through (A,u1)(A,u_{1}) and (A,v1)(A,v_{1}) restricted to the underneath of the line through points uνu_{\nu} and vμv_{\mu}. Trivially, each point of 𝒲j\mathscr{W}^{j} sees all vertices uν,,A,,vμu_{\nu},\ldots,A,\ldots,v_{\mu}.

Let z(x,y)\mathcal{F}_{z}(x,y) be the ‘zz’ half-plane defined by the line through xx and yy where ‘zz’ is ‘b’ (bottom), ‘r’ (right), or ‘l’ (left). If uiu_{i} and vlv_{l} are distinct vertices, according to Property 7, at least one of the pairs (ui+1,vl1)(u_{i+1},v_{l-1}) and (ui1,vl+1)(u_{i-1},v_{l+1}) do not see each other. The invisible pair is determined by applying Corollary 3.18 and Property 7.

Assume that (ui+1,vl1)(u_{i+1},v_{l-1}) is the invisible pair. Then, 𝒲i,lj\mathscr{W}^{j}_{i,l} is defined to be r(si+1,ui)r(vl,ui)l(ui1,ui)l(vl1,ui)b(vμ,uν)\mathcal{F}_{r}(s_{i+1},u_{i})\bigcap\mathcal{F}_{r}(v_{l},u_{i})\bigcap\mathcal{F}_{l}(u_{i-1},u_{i})\bigcap\mathcal{F}_{l}(v_{l-1},u_{i})\bigcap\mathcal{F}_{b}(v_{\mu},u_{\nu})  (Fig. 13). As defined in Section 2, si+1s_{i+1}, uiu_{i} and ui+1u_{i+1} are collinear. We used r(si+1,ui)\mathcal{F}_{r}(s_{i+1},u_{i}) instead of r(ui+1,ui)\mathcal{F}_{r}(u_{i+1},u_{i}) here because at least for i=νi=\nu we do not know the position of ui+1u_{i+1} yet.

Any one of these half-planes forces some visibility constraints for wjw_{j}. b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu}) implies that wjw_{j} sees both unuu_{n}u and vμv_{\mu}; r(si+1,ui)\mathcal{F}_{r}(s_{i+1},u_{i}) implies that wjw_{j} sees all vertices <ui,,uν><u_{i},\ldots,u_{\nu}>; r(vl,ui)\mathcal{F}_{r}(v_{l},u_{i}) implies that wjw_{j} sees all vertices <vl,,vμ><v_{l},\ldots,v_{\mu}>; l(ui1,ui)\mathcal{F}_{l}(u_{i-1},u_{i}) prevents wjw_{j} from seeing vertices <A,,ui1><A,\ldots,u_{i-1}>; and l(vl1,ui)\mathcal{F}_{l}(v_{l-1},u_{i}) prevents wjw_{j} from seeing vertices <A,,vl1><A,\ldots,v_{l-1}>. Therefore, all points in this region satisfy the visibility constraints from wjw_{j} to vertices <uν,,A,,vμ><u_{\nu},\ldots,A,\ldots,v_{\mu}>.

ui+1u_{i+1}uiu_{i}ui1u_{i-1}vl1v_{l-1}vlv_{l}uνu_{\nu}vμv_{\mu}si+1s_{i+1}sis_{i}r(vl,ui)\mathcal{F}_{r}(v_{l},u_{i})r(si+1,ui)\mathcal{F}_{r}(s_{i+1},u_{i})l(ui1,ui)\mathcal{F}_{l}(u_{i-1},u_{i})l(vl1,ui)\mathcal{F}_{l}(v_{l-1},u_{i})b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu})
Figure 13: 𝒲i,lj\mathscr{W}^{j}_{i,l} is the shaded region.

Concavity of ABAB and ACAC implies that intersections r(si+1,ui)l(ui1,ui)\mathcal{F}_{r}(s_{i+1},u_{i})\bigcap\mathcal{F}_{l}(u_{i-1},u_{i}) and r(vl,ui)l(vl1,ui)\mathcal{F}_{r}(v_{l},u_{i})\bigcap\mathcal{F}_{l}(v_{l-1},u_{i}) are not empty. Therefore, 𝒲i,lj\mathscr{W}^{j}_{i,l} will be empty only when r(si+1,ui)l(vl1,ui)\mathcal{F}_{r}(s_{i+1},u_{i})\bigcap\mathcal{F}_{l}(v_{l-1},u_{i}) is empty or r(vl,ui)l(ui1,ui)\mathcal{F}_{r}(v_{l},u_{i})\bigcap\mathcal{F}_{l}(u_{i-1},u_{i}) is empty. The first case is impossible, because otherwise, ui+1u_{i+1} must be visible from vl1v_{l-1} which is in contradiction with invisibility assumption of (ui+1,vl1)(u_{i+1},v_{l-1}). The second case is also impossible, because then, the pair uiu_{i} and vlv_{l} must be invisible. But, according to Property 5, uiu_{i} and vlv_{l} must be visible from each other.

Therefore, the region r(si+1,ui)r(vl,ui)l(ui1,ui)l(vl1,ui)\mathcal{F}_{r}(s_{i+1},u_{i})\bigcap\mathcal{F}_{r}(v_{l},u_{i})\bigcap\mathcal{F}_{l}(u_{i-1},u_{i})\bigcap\mathcal{F}_{l}(v_{l-1},u_{i}) is nonempty and some part of this intersection lies in half-plane b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu}).

According to the above discussion, 𝒲j\mathscr{W}^{j} is defined by b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu}) and two half-planes of {r(si+1,ui),r(vl,ui),l(ui1,ui),l(vl1,ui)}\{\mathcal{F}_{r}(s_{i+1},u_{i}),\mathcal{F}_{r}(v_{l},u_{i}),\mathcal{F}_{l}(u_{i-1},u_{i}),\mathcal{F}_{l}(v_{l-1},u_{i})\}. The apex of 𝒲j\mathscr{W}^{j} is defined to be the intersection of the corresponding lines of these two half-planes which is uiu_{i}.

The above discussions was for the assumption that (ui+1,vl1)(u_{i+1},v_{l-1}) is the invisible pair. The description for the cases where (ui1,vl+1)(u_{i-1},v_{l+1}) is the invisible pair is symmetric: 𝒲i,lj\mathscr{W}^{j}_{i,l} is l(rl+1,vl)l(vl,ui)r(vl1,vl)r(ui1,vl)b(vμ,uν)\mathcal{F}_{l}(r_{l+1},v_{l})\bigcap\mathcal{F}_{l}(v_{l},u_{i})\bigcap\mathcal{F}_{r}(v_{l-1},v_{l})\bigcap\mathcal{F}_{r}(u_{i-1},v_{l})\bigcap\mathcal{F}_{b}(v_{\mu},u_{\nu}) and the apex of 𝒲j\mathscr{W}^{j} will be vlv_{l}.

If the apex of 𝒲j\mathscr{W}^{j} lies on ABAB, Property 7 implies that the apex of 𝒲j1\mathscr{W}^{j-1} will lie on ABAB as well. Furthermore, Corollary 3.18 implies that 𝒲j1\mathscr{W}^{j-1} is either completely coinciding 𝒲j\mathscr{W}^{j} or is completely on its left. Similarly, if the apex of 𝒲j\mathscr{W}^{j} lies on ACAC, then the apex of 𝒲j+1\mathscr{W}^{j+1} lies on ACAC as well, and 𝒲j+1\mathscr{W}^{j+1} is either coinciding 𝒲j\mathscr{W}^{j} or is completely on its right.

Then, we can place the vertices wM,,wNw_{M},\ldots,w_{N} of 𝒴\mathcal{Y} on an arbitrary concave chain inside b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu}) in such a way that wj𝒲jw_{j}\in\mathscr{W}^{j}. This placement satisfies the visibility constraints for 𝒳\mathcal{X} and 𝒴\mathcal{Y}. However, to guarantee the reconstruction of 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime}, we define some constraints on this concave chain which is described in the rest of this section.

Let sis^{\prime}_{i} (i>νi>\nu) be the intersection of ACAC and the line through uiu_{i} and LVB(ui,BC)LV^{B}(u_{i},BC), rkr^{\prime}_{k} (k>μk>\mu) be the intersection of ABAB and the line through vkv_{k} and FVB(vk,BC)FV^{B}(v_{k},BC), tjt^{\prime}_{j} (j<Mj<M) be the intersection of ACAC and the line through wjw_{j} and wj+1w_{j+1}, and tjt^{\prime}_{j} (j>Nj>N) be the intersection of ABAB and the line through wjw_{j} and wj1w_{j-1} (see Fig. 14).

ui1u_{i-1}uiu_{i}wjw_{j}wj+1w_{j+1}LVB(ui,BC)LV^{B}(u_{i},BC)vk1v_{k-1}vkv_{k}wjw_{j^{\prime}}wj1w_{j^{\prime}-1}FVB(vk,BC)FV^{B}(v_{k},BC)sis^{\prime}_{i}sis_{i}rkr^{\prime}_{k}rkr_{k}tjt^{\prime}_{j}tjt^{\prime}_{j^{\prime}}
Figure 14: Points s()s_{(\cdot)}, s()s^{\prime}_{(\cdot)}, r()r_{(\cdot)}, r()r^{\prime}_{(\cdot)}, and t()t^{\prime}_{(\cdot)}.

Note that although we have not yet determined positions of vertices defining sis^{\prime}_{i}, rkr^{\prime}_{k}, and tjt^{\prime}_{j}, we determine their containing edges from the visibility information as follows: for i>νi>\nu, if uiu_{i} sees at least one vertex from ACAC, sis_{i} lies on the segment connecting PA(FVA(ui,AC))P^{A}(FV^{A}(u_{i},AC)) and FVA(ui,AC)FV^{A}(u_{i},AC) and sis^{\prime}_{i} lies on the segment connecting (LVA(ui,AC)(LV^{A}(u_{i},AC) and NA(LVA(ui,AC))N^{A}(LV^{A}(u_{i},AC)). On the other hand, if uiu_{i} sees no vertex from ACAC, then for kik\geq i, both sks_{k} and sks^{\prime}_{k} lie on the segment connecting PA(LVA(uj,AC))P^{A}(LV^{A}(u_{j},AC)) and LVA(uj,AC)LV^{A}(u_{j},AC) where uju_{j} has the highest index among the vertices of ABAB that see at least one vertex from ACAC. Corollary 3.11 implies that all these points lie on boundary edges of 𝒳\mathcal{X}, except when i=ν+1i=\nu+1 and wM1w_{M-1} is visible to both uνu_{\nu} and vμv_{\mu}, for which both sks_{k} and sks^{\prime}_{k} for kik\geq i lie on (vμ,vμ+1)(v_{\mu},v_{\mu+1}). The same situation happens for rlr_{l} and rlr^{\prime}_{l} when l>μl>\mu.

The containing edge of tjt^{\prime}_{j} for j<Mj<M is determined as follows: If wjw_{j} sees at least one vertex from ACAC, then tjt^{\prime}_{j} lies on the segment connecting LVA(wj,AC)LV^{A}(w_{j},AC) and NA(LVA(wj,AC))N^{A}(LV^{A}(w_{j},AC)), otherwise, it lies on the containing edge of sαs^{\prime}_{\alpha} (Note that according to our assumption at the beginning of Section 4, α\alpha and δ\delta are respectively the greatest indices of vertices uiu_{i} and vjv_{j} on ABAB and ACAC side-chains.). Similarly, for j>Nj>N, if wjw_{j} sees at least one vertex from ABAB, then tjt^{\prime}_{j} lies on the segment connecting LVA(wj,AB)LV^{A}(w_{j},AB) and NA(LVA(wj,AB))N^{A}(LV^{A}(w_{j},AB)), and otherwise, it lies on the containing edge of rδr^{\prime}_{\delta}. Property 7 implies that all these points lie on boundary edges of 𝒳\mathcal{X} or edges (vμ,vμ+1)(v_{\mu},v_{\mu+1}) and (uν,uν+1)(u_{\nu},u_{\nu+1}).

The containing edges of sαs^{\prime}_{\alpha} and rδr^{\prime}_{\delta} are respectively called “the floating edge in ACAC and “the floating edge in ABAB. We call these edges floating because we increase their length, and reposition their underneath vertices to enforce the concavity in building 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime}.

We define the vertices wMw_{M^{*}} and wNw_{N^{*}} as follows: If BCBC has two edges, then wMw_{M} and wNw_{N} are both equal to w1w_{1} (the middle vertex of BCBC), and wMw_{M^{*}} and wNw_{N^{*}} are also defined to be w1w_{1}. When BCBC has more than two edges, MM^{*} is defined to be MM when the apex of 𝒲M\mathscr{W}^{M} does not lie on a vertex of ACAC below its floating edge. Otherwise, MM^{*} is defined to be jj where jj is the maximum index for which the apex of 𝒲j\mathscr{W}^{j} lies above the floating edge of ACAC (this apex may lie on ABAB). If the index of IndA(FVA(wM,AB))Ind^{A}(FV^{A}(w_{M^{*}},AB)) is greater than ν\nu, the apex of 𝒲M\mathscr{W}^{M^{*}} is temporarily assumed to be uνu_{\nu} and 𝒲M\mathscr{W}^{M^{*}} is defined to lie between r(si+1,uν)\mathcal{F}_{r}(s_{i+1},u_{\nu}) and l(uν1,uν)\mathcal{F}_{l}(u_{\nu-1},u_{\nu}). The index NN^{*} is defined similarly. It is clear that at least one of the equalities wM=wMw_{M^{*}}=w_{M} or wN=wNw_{N^{*}}=w_{N} holds.

We use (x,y)\mathcal{R}(x,y) to denote the ray from xx towards yy. In addition, a(x,y)\mathcal{R}_{a}(x,y) denotes the ray from aa and parallel to (x,y)\mathcal{R}(x,y) (Fig. 15).

AAuuvvsαs_{\alpha}sαs^{\prime}_{\alpha}rδr_{\delta}rδr^{\prime}_{\delta}(sα,u)\mathcal{R}(s_{\alpha},u)sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u)(rδ,v)\mathcal{R}(r_{\delta},v)rδ(rδ,v)\mathcal{R}_{r^{\prime}_{\delta}}(r_{\delta},v)
Figure 15: The rays (sα,u)\mathcal{R}(s_{\alpha},u), sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u), (rδ,v)\mathcal{R}(r_{\delta},v), and rδ(rδ,v)\mathcal{R}_{r^{\prime}_{\delta}}(r_{\delta},v).

Despite our definition of the regions 𝒲i\mathscr{W}^{i} for all vertices wiBCw_{i}\in BC, we refine this definition for 𝒲N\mathscr{W}^{N^{*}} (resp. 𝒲M\mathscr{W}^{M^{*}}) when NNN^{*}\neq N (resp. MMM^{*}\neq M) or the floating edge of ACAC (resp. ABAB) lies under the line through uνu_{\nu} and vμv_{\mu}. At most one of the floating edges lies under (uν,vμ)\mathcal{R}(u_{\nu},v_{\mu}). Because otherwise, either vmuv_{m}u will see uν+1u_{\nu+1} or uνu_{\nu} will see vμ+1v_{\mu+1} which is in contradiction with the selection of uνu_{\nu} and vμv_{\mu}. Let vv be a point on vμ(rμ+1,vμ)\mathcal{R}_{v_{\mu}}(r_{\mu+1},v_{\mu}) when the floating edge of ACAC lies under (uν,vμ)\mathcal{R}(u_{\nu},v_{\mu}), or be vμv_{\mu} otherwise. Similarly, uu is defined to be either uνu_{\nu} or a point on uν(sν+1,uν)\mathcal{R}_{u_{\nu}}(s_{\nu+1},u_{\nu}). The regions 𝒲N\mathscr{W}^{N^{*}} and 𝒲M\mathscr{W}^{M^{*}} are restricted to lie under the line through uu and vv. Moreover, we know that at most one of the indices MM^{*} and NN^{*} is not equal to its corresponding index MM or NN. Without loss of generality, assume that NNN^{*}\neq N. Then, we additionally restrict the region 𝒲N\mathscr{W}^{N^{*}} as follows (this restriction is not applied when we reconstruct 𝒵\mathcal{Z} or 𝒵\mathcal{Z}^{\prime}). Let pp be a point inside the intersection of 𝒲N\mathscr{W}^{N} and b(u,v)\mathcal{F}_{b}(u,v) and with an arbitrary positive distance from (u,v)\mathcal{R}(u,v). We determine tNt^{\prime}_{N^{*}} on its edge and with ϵl\epsilon l distance above the lower endpoint of this edge where ϵ>0\epsilon>0 and ll is the number of vertices in ACAC and BCBC whose r()r^{\prime}_{(\cdot)}’s and t()t^{\prime}_{(\cdot)}’s lie on this edge. The region 𝒲N\mathscr{W}^{N^{*}} is restricted to lie under the line through tNt^{\prime}_{N^{*}} and pp (see Fig. 16).

Let sαs_{\alpha} be a point on its edge and with ϵk\epsilon k distance below the upper endpoint of this edge where ϵ>0\epsilon>0 and kk is the number of vertices in ABAB whose s()s_{(\cdot)}’s lie on this edge. Similarly, let sαs^{\prime}_{\alpha} be a point on its edge and with ϵm\epsilon m distance above the lower endpoint of this edge where ϵ>0\epsilon>0 and mm is the number of vertices in ABAB and BCBC whose s()s^{\prime}_{(\cdot)}’s and t()t^{\prime}_{(\cdot)}’s lie on this edge. The value of ϵ\epsilon is small enough such that sαs_{\alpha} lies above sαs^{\prime}_{\alpha}. The points rδr_{\delta} and rδr^{\prime}_{\delta} are defined similarly.

As shown in Fig. 15, let 𝒮\mathcal{S} (resp. 𝒯\mathcal{T}) be the strip defined by the supporting lines of (sα,u)\mathcal{R}(s_{\alpha},u) and sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) (resp. (rδ,v)\mathcal{R}(r_{\delta},v) and rδ(rδ,v)\mathcal{R}_{r^{\prime}_{\delta}}(r_{\delta},v)).

Lemma 4.1.

It is always possible to enlarge the floating edges of ACAC and ABAB and re-position the vertices which lie under the enlarged edges such that 𝒲M𝒮\mathscr{W}^{M^{*}}\bigcap\mathcal{S} and 𝒲N𝒯\mathscr{W}^{N^{*}}\bigcap\mathcal{T} are not empty and the new position of vertices of 𝒳\mathcal{X} satisfy their visibility relations in the visibility graph.

Proof 4.2.

Assume that the intersection of 𝒲M\mathscr{W}^{M^{*}} and 𝒮\mathcal{S} is empty. According to the definition of MM^{*}, the apex of 𝒲M\mathscr{W}^{M^{*}} either lies above the floating edge of ACAC or lies on ABAB. This implies that enlarging the floating edge of ACAC only affects half-plane b(vμ,uν)\mathcal{F}_{b}(v_{\mu},u_{\nu}) that defines up-side of 𝒲M\mathscr{W}^{M^{*}}. Then, we can enlarge the floating edge of ACAC in such a way that the lower defining ray of 𝒮\mathcal{S} and the upper defining half-plane of 𝒲M\mathscr{W}^{M^{*}} intersect inside 𝒲M\mathscr{W}^{M^{*}} which means that the intersection of 𝒲M\mathscr{W}^{M^{*}} and 𝒮\mathcal{S} is not empty. Moreover, when this intersection is not empty, this extension will just increase the intersection. On the other hand, enlarging this edge changes the position of vertices of 𝒳\mathcal{X} which lie under this edge. For these vertices, we have their corresponding points rr’s. By enlarging the floating edge of ACAC, the new positions will be computed according to their definition (for a vertex viv_{i} it must lie on the supporting line of rir_{i} and vi1v_{i-1}) to satisfy the visibility relations in the visibility graph reduced to vertices of 𝒳\mathcal{X}. To complete the proof, it is simple to see that extending the floating edge of ABAB will again increase the intersection of BCMBC^{M^{*}} and 𝒮\mathcal{S}.

The proof for wNw_{N^{*}} is analogously the same. ∎

(u,v)\mathcal{R}(u,v)(tN,p)\mathcal{R}(t^{\prime}_{N^{*}},p)uuvvtNt^{\prime}_{N^{*}}pp𝒲M\mathscr{W}^{M}𝒲N\mathscr{W}^{N}𝒲N\mathscr{W}^{N^{*}}
Figure 16: Restricting 𝒲N\mathscr{W}^{N^{*}}.

After locating the position of vertices in 𝒳\mathcal{X} (by possibly extending the floating edges), we place the vertices of 𝒴\mathcal{Y} as follows: If NNN^{*}\neq N, then we set pp as wNw_{N} and place wM=wMw_{M^{*}}=w_{M} inside the intersection of 𝒲M\mathscr{W}^{M} and 𝒮\mathcal{S} in such a way that both wMw_{M} and wNw_{N} be visible to uu and vv; neither wMw_{M} blocks the visibility of wNw_{N}, nor wNw_{N} blocks the visibility of wMw_{M}. When MMM^{*}\neq M, wMw_{M} and wNw_{N} are positioned analogously. Finally, if M=MM^{*}=M and N=NN^{*}=N, we select a point from 𝒮𝒲M\mathcal{S}\cap\mathscr{W}^{M} as wMw_{M} and a point from 𝒯𝒲N\mathcal{T}\cap\mathscr{W}^{N} as wNw_{N} again in such a way that both see uu and vv. Then, we put the vertices wM+1,,wN1w_{M+1},\ldots,w_{N-1} on a slightly concave chain from wMw_{M} to wNw_{N} in such a way that each wjw_{j} (MjNM\leq j\leq N) lies inside 𝒲j\mathscr{W}^{j} and sees uu and vv.

Based on the definition of 𝒲i\mathscr{W}^{i}’s regions and the specified positions of vertices inside these regions, this setting is compatible with the visibility graph restricted to the vertices of 𝒳\mathcal{X} and 𝒴\mathcal{Y}.

4.2 Reconstructing 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime}

In this step, we place the vertices of 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime} to complete the reconstruction procedure. As said before, 𝒵\mathcal{Z} (resp. 𝒵\mathcal{Z}^{\prime}) is a part of the target pseudo-triangle with <uν,uν+1,,B,,wM><u_{\nu},u_{\nu+1},\ldots,B,\ldots,w_{M}> (resp. <vμ,vμ+1,,C,,wN><v_{\mu},v_{\mu+1},\ldots,C,\ldots,w_{N}>) boundary vertices. Here, we only describe how to build 𝒵\mathcal{Z}. The construction of 𝒵\mathcal{Z}^{\prime} is symmetrically the same.

Location of a vertex ui𝒵u_{i}\in\mathcal{Z} is determined by the intersection point of the rays (si,ui1)\mathcal{R}(s_{i},u_{i-1}) and (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)) and location of a vertex wh𝒵w_{h}\in\mathcal{Z} is an arbitrary point on (th,wh+1)\mathcal{R}(t^{\prime}_{h},w_{h+1}) inside the region 𝒲h\mathscr{W}^{h}. Therefore, to construct 𝒵\mathcal{Z} we start from uν+1u_{\nu+1} and wM1w_{M-1}, and in each step we determine the position of one of the vertices and go forward to the next vertex. This is done by incrementally determining direction of the rays (si,ui1)\mathcal{R}(s_{i},u_{i-1}), (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)), and (th,wh+1)\mathcal{R}(t^{\prime}_{h},w_{h+1}) as well as 𝒲h\mathscr{W}^{h} regions.

Consider the edges of the pseudo-triangle on which the points sis_{i}, sis^{\prime}_{i}, rjr_{j}, rjr^{\prime}_{j}, and tlt^{\prime}_{l} for i>νi>\nu, j>μj>\mu, and l<Ml<M and l>Nl>N lie. Keep an upper point and a lower point for each edge. Initialize the upper point with the upper endpoint of that edge or the latest located s()s_{(\cdot)} or r()r_{(\cdot)} on this edge. Initialize the lower point with the lower endpoint of the edge. Position of each s()s_{(\cdot)}, r()r_{(\cdot)}, s()s^{\prime}_{(\cdot)}, r()r^{\prime}_{(\cdot)}, and t()t^{\prime}_{(\cdot)} is determined whenever we need the rays passing through them. We place the points s()s^{\prime}_{(\cdot)}, r()r^{\prime}_{(\cdot)}, and t()t^{\prime}_{(\cdot)}, with ϵ>0\epsilon>0 distance above the current lower point of their edges and place the points s()s_{(\cdot)} and r()r_{(\cdot)}, with ϵ>0\epsilon>0 distance below the upper point of their edges. Whenever a new s()s_{(\cdot)}, r()r_{(\cdot)}, s()s^{\prime}_{(\cdot)}, r()r^{\prime}_{(\cdot)}, or t()t^{\prime}_{(\cdot)} point is located on an edge, the upper or lower point of that edge is updated properly.

ui1u_{i-1}LVB(ui,BC)LV^{B}(u_{i},BC)sis^{\prime}_{i}sis_{i}uiu_{i}(si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC))(si,ui1)\mathcal{R}(s_{i},u_{i-1})
(a)
wjw_{j}wj+1w_{j+1}tjt^{\prime}_{j}(tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1})𝒲j\mathscr{W}^{j}
(b)
Figure 17: (a) Determining uiu_{i}, (b) Determining wjw_{j}.

More precisely, assume that we have already determined positions of vertices uν,uν+1,,ui1u_{\nu},u_{\nu+1},\ldots,u_{i-1} (i>νi>\nu) as well as the vertices wM,wM1,,wj+1w_{M},w_{M-1},\ldots,w_{j+1} (j<Mj<M). To determine position of one of the vertices uiu_{i} and wjw_{j} we do as follows: Let wkw_{k} be LVB(ui,BC)LV^{B}(u_{i},BC). If k<jk<j, then we have already located the position of wkw_{k}, and directions of the rays (si,ui1)\mathcal{R}(s_{i},u_{i-1}) and (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)) are known. We will show in Lemma 4.3 that these rays intersect. So, uiu_{i} is located on the intersection point of these rays (Fig. 17(a)). Otherwise, we must first determine position of wjw_{j} which lies on (tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1}) and inside 𝒲j\mathscr{W}^{j} (Fig. 17(b)). The position of wj+1w_{j+1} is already known and tj+1t^{\prime}_{j+1} is determined according to the above paragraph. From these two points the direction of (tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1}) is obtained. The region 𝒲j\mathscr{W}^{j} is determined as follows: Suppose that FVA(wj,AB)=ukFV^{A}(w_{j},AB)=u_{k} and FVA(wj,AC)=vlFV^{A}(w_{j},AC)=v_{l}. We define 𝒲j\mathscr{W}^{j} as in the previous section with the exception that it may be possible that only one of the vertices uku_{k} and vlv_{l} exists. By Corollary 3.14, for j<Mj<M, uju_{j} always exists. If wjw_{j} sees no vertex from ACAC, then it would see a part of the floating edge of ACAC. Hence, we consider the upper endpoint of this edge as vl1v_{l-1}. From properties 5 and 7 we know that 𝒲j\mathscr{W}^{j} is not empty and lies to the left of 𝒲j+1\mathscr{W}^{j+1}. Moreover, it will be shown in Lemma 4.3 that (tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1}) intersects sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u). Since sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) passes through all 𝒲()\mathscr{W}^{(\cdot)}, (tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1}) passes through 𝒲j\mathscr{W}^{j}. Therefore, we can determine the position of wjw_{j}.

Note that the definition of sis_{i}’s and tjt^{\prime}_{j}’s enforce the concavity of the vertices on ABAB and BCBC, respectively. According to the definition of (si,ui1)\mathcal{R}(s_{i},u_{i-1}) and (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)) for uiu_{i} and (tj,wj+1)\mathcal{R}(t^{\prime}_{j},w_{j+1}) and 𝒲j\mathscr{W}^{j} for wjw_{j}, in both cases (locating uiu_{i} or wjw_{j}), visibility of the newly located vertex is exactly the same as its visibility in the visibility graph (restricted to the vertices of 𝒳\mathcal{X}, 𝒴\mathcal{Y}, and the constructed part of 𝒵\mathcal{Z}). This means that at the end of this construction which vertices BB and CC are located the visibility graph of the constructed polygon is consistent with the input visibility graph.

Lemma 4.3.

The rays (si,ui1)\mathcal{R}(s_{i},u_{i-1}) and (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)) for i>νi>\nu are convergent inside 𝒮\mathcal{S}.

Proof 4.4.

Remember that 𝒮\mathcal{S} is the strip defined by the supporting lines of (sα,u)\mathcal{R}(s_{\alpha},u) and sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u). By Corollaries 3.5 and 3.11, we know that sis_{i} lies above the strip 𝒮\mathcal{S} and sis^{\prime}_{i} lies below this strip. Then, it is enough to show that for i>νi>\nu, (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)) crosses sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) and (si,ui1)\mathcal{R}(s_{i},u_{i-1}) crosses (sα,u)\mathcal{R}(s_{\alpha},u). We first prove that sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) intersects (si,LVB(ui,BC))\mathcal{R}(s^{\prime}_{i},LV^{B}(u_{i},BC)). Let LVB(ui,BC)=whLV^{B}(u_{i},BC)=w_{h}. For MhMM^{*}\leq h\leq M, it can be easily shown by induction that whw_{h} is located above (tM,wM)\mathcal{R}(t^{\prime}_{M^{*}},w_{M}). Moreover, it is simple to see that sis^{\prime}_{i} must lie below tMt^{\prime}_{M^{*}}. Then, knowing that (tM,wM)\mathcal{R}(t^{\prime}_{M^{*}},w_{M}) crosses sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) implies that (si,wh)\mathcal{R}(s^{\prime}_{i},w_{h}) intersects sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) as well. From the fact that wMw_{M^{*}} lies inside 𝒮\mathcal{S}, it can also be shown by induction that whw_{h} for h<Mh<M^{*} lies inside 𝒮\mathcal{S} which means that (si,wh)\mathcal{R}(s^{\prime}_{i},w_{h}) crosses sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u).

To complete the proof, we prove by induction on ii that (si,ui1)\mathcal{R}(s_{i},u_{i-1}) crosses (sα,u)\mathcal{R}(s_{\alpha},u). It is clear that sν+1s_{\nu+1} is located above sαs_{\alpha} which means that (sν+1,uν)\mathcal{R}(s_{\nu+1},u_{\nu}) intersects (sα,u)\mathcal{R}(s_{\alpha},u). From the previous paragraph we know that sα(sα,u)\mathcal{R}_{s^{\prime}_{\alpha}}(s_{\alpha},u) intersects (sν+1,LVB(uν+1,BC))\mathcal{R}(s^{\prime}_{\nu+1},LV^{B}(u_{\nu+1},BC)). Therefore, (sν+1,uν)\mathcal{R}(s_{\nu+1},u_{\nu}) and (sν+1,LVB(uν+1,BC))\mathcal{R}(s^{\prime}_{\nu+1},LV^{B}(u_{\nu+1},BC)) will intersect at a point within 𝒮\mathcal{S}. Since we put uν+1u_{\nu+1} at this intersection point, as the induction step, assume that ui1u_{i-1} lies inside 𝒮\mathcal{S} where i>ν+1i>\nu+1. Then, (si,ui1)\mathcal{R}(s_{i},u_{i-1}) intersects (sα,u)\mathcal{R}(s_{\alpha},u). ∎

5 Analysis

In previous sections, we proved several properties on the visibility graph of a pseudo-triangle and proposed an algorithm that constructs a pseudo-triangle for a given pair of visibility graph 𝒢(V,E)\mathcal{G}(V,E) and Hamiltonian cycle \mathcal{H} when this pair supports these properties. In this section, we analyze the time complexity of algorithms required to check these properties and the running time of the reconstruction algorithm.

To check Property 1, we need a linear time trace on vertices of 𝒢\mathcal{G} according to their order in \mathcal{H}. This is done in 𝒪(n)\mathcal{O}(n) time. If two corners are identified in this way, the existence of a tower polygon corresponding to the pair of 𝒢\mathcal{G} and \mathcal{H} can also be verified in linear time [7]. Property 2 can be verified in 𝒪(|E|)\mathcal{O}(|E|) by a simple trace of the edge list of the visibility graph. Precisely, for each vertex uABu\in AB we maintain the minimum index, maximum index, and number of vertices of the other side-chains ACAC and BCBC which are visible from uu. After finishing this trace, from these triple of parameters (minimum index, maximum index, number of visible vertices) the Property 2 is checked in 𝒪(n)\mathcal{O}(n) time. In order to verify the rest of the properties, it is required to know the visible subchains from each vertex. These subchains are obtained as by-products using the method proposed for checking Property 2. Having these subchains for each vertex, Property 3 can be verified in 𝒪(n)\mathcal{O}(n).

In Property 4, for each pair (AB,AC)(AB,AC) of side-chains, we must find all pairs of visible vertices (uAB,vAC)(u\in AB,v\in AC) such that (NA(u),v)(N^{A}(u),v) and (u,NA(v))(u,N^{A}(v)) are invisible. Having the visible subchains for each vertex, this check is done in constant time for each edge (u,v)E(u,v)\in E. Therefore, all pairs of vertices (uAB,vAC)(u\in AB,v\in AC) satisfying assumption of this property can be obtained in 𝒪(|E|)\mathcal{O}(|E|). Then, for each pair the three necessary conditions are checked in constant time using the maintained visible subchains of uu and vv vertices. Checking properties 56 and 7 can be done in 𝒪(n)\mathcal{O}(n) by simple trace on the side-chains. Therefore, all properties can be verified in 𝒪(|E|)\mathcal{O}(|E|).

To complete the analysis, we compute the running time of the reconstruction algorithm presented in Section 4. Assume that 𝒢\mathcal{G} satisfies all of the properties introduced in Section 3 and we know the visible subchains of each vertex according to their order in \mathcal{H}. The side-chains of the target pseudo-triangle are identified in linear time according to the algorithm described in the proof of Lemma 3.1. Reconstructing 𝒳\mathcal{X} is done using the tower reconstruction algorithm whose running time is linear in terms of the number of edges in the visibility graph reduced to 𝒳\mathcal{X}. To reconstruct 𝒴\mathcal{Y}, the algorithm needs to determine the floating edges of ABAB and ACAC which can be done in constant time. Computing the 𝒲\mathscr{W}-type regions (for each vertex wiBCw_{i}\in BC) and determining the vertices wNw_{N^{*}} and wMw_{M^{*}} needs 𝒪(n)\mathcal{O}(n) time. If the conditions of Lemma 4.1 are not satisfied, the floating edges of ABAB and ACAC must be extended which is done in 𝒪(1)\mathcal{O}(1): A lower bound for the increase in floating edges can be computed by using Thales’ theorem and trigonometric functions. Locating each vertex of 𝒴\mathcal{Y} is also done in constant time. Finally, placing each vertex of 𝒵\mathcal{Z} and 𝒵\mathcal{Z}^{\prime} takes constant time, as well. Therefore, the total running time of the algorithm is 𝒪(|E|)\mathcal{O}(|E|). We can combine all results as:

Theorem 5.1.

The visibility graph and the boundary vertices of a pseudo-triangle satisfy properties 1 to 7, and conversely, for any pair of graph 𝒢\mathcal{G} and Hamiltonian cycle \mathcal{H} satisfying these properties, there is a pseudo-triangle 𝒫\mathcal{P} whose visibility graph and boundary vertices are respectively isomorphic to 𝒢\mathcal{G} and \mathcal{H}. Checking these properties and reconstructing such a polygon can be done in 𝒪(|E|)\mathcal{O}(|E|).

6 Conclusion

In this paper, we considered properties of the visibility graph of a pseudo-triangle and obtained a set of necessary and sufficient conditions that such graphs must have. Then, we propose an algorithm to reconstruct a polygon from a given visibility graph which supports these properties. This characterizing and reconstructing problem, despite its long history, is still at the start of its way to be solved for all polygons.

References

  • [1] T. Asano, T. Asano, L. Guibas, J. Hershberger, H. Imai, Visibility of disjoint polygons, Algorithmica 1 (1986) 49–63.
  • [2] E. Welzl, Constructing the visibility graph for nn-line segments in o(n2)o(n^{2}) time, Information Processing Letters 20 (4) (1985) 167–171.
  • [3] J. Hershberger, Finding the visibility graph of a simple polygon in time proportional to its size, in: Third Annual Symposium on Computational Geometry, 1987, pp. 11–20.
  • [4] B. Chazelle, Triangulating a simple polygon in linear time, Discrete and Computational Geometry 6 (1991) 485–424.
  • [5] H. Everett, Visibility graph recognition, Ph.D. thesis, University of Toronto, Department of Computer Science (1990).
  • [6] H. Everett, D. G. Corneil, Recognizing visibility graphs of spiral polygons, Journal of Algorithms 11 (1) (1990) 1–26.
  • [7] P. Colley, A. Lubiw, J. Spinrad, Visibility graphs of towers, Computational Geometry 7 (1997) 161–172.
  • [8] J. Abello, O. Egecioglu, K. Kumar, Visibility graphs of staircase polygons and the weak Bruhat order, i: From visibility graphs to maximal chains, Discrete & Computational Geometry 14 (3) (1995) 331–358.
  • [9] C. R. Coullard, A. Lubiw, Distance visibility graphs, International Journal of Computational Geometry & Applications 2 (4) (1992) 349–362.
  • [10] H. ElGindy, Hierarchical decomposition of polygons with applications, Ph.D. thesis, McGill University, Department of Computer Science (1985).
  • [11] S. K. Ghosh, On recognizing and characterizing visibility graphs of simple polygons, in: SWAT, 1988, pp. 96–104.
  • [12] S. K. Ghosh, On recognizing and characterizing visibility graphs of simple polygons, Discrete & Computational Geometry 17 (2) (1997) 143–162.
  • [13] J. Abello, H. Lin, S. Pisupati, On visibility graphs of simple polygons, Congressus Numerantium (90) (1992) 119–128.
  • [14] I. Streinu, Non-stretchable pseudo-visibility graphs, Computational Geometry 31 (3) (2005) 195–206.
  • [15] J. Cardinal, U. Hoffmann, Recognition and Complexity of Point Visibility Graphs, in: 31st International Symposium on Computational Geometry (SoCG 2015), Vol. 34, 2015, pp. 171–185.
  • [16] S. K. Ghosh, B. Roy, Some results on point visibility graphs, in: In Algorithms and Computation (WALCOM), Vol. 8344 of Lecture Notes in Computer Science, 2014, pp. 163–175.
  • [17] J. Kara, A.Por, D. Wood, On the chromatic number of the visibility graph of a set of points in the plane, Discrete & Computational Geometry 34 (3) (2005) 497–506.
  • [18] M. Gibson, E. Krohn, Q. Wang, A characterization of visibility graphs for pseudo-polygons, in: In Algorithms – ESA, Vol. 9294 of Lecture Notes in Computer Science, 2015, pp. 607–618.
  • [19] J. O’Rourke, I. Streinu, Vertex-edge pseudo-visibility graphs: Characterization and recognition, in: In: Symposium on Computational Geometry, 1997, pp. 119–128.
  • [20] J. O’Rourke, I. Streinu, The vertex-edge visibility graph of a polygon, Computational Geometry 10 (2) (1998) 105–120.
  • [21] I. Streinu, Non-stretchable pseudo-visibility graphs, Computational Geometry 31 (3) (2005) 195–206.
  • [22] N. S. Bidokhti, On fully characterizing terrain visibility graphs (2012).
  • [23] S. Ghosh, P. Goswami, Unsolved problems in visibility graphs of points, segments and polygons, ACM Computing Surveys (CSUR) 46 (2) (2013) 22.
  • [24] S. K. Ghosh, Visibility algorithms in the plane, Cambridge University Press, 2007.
  • [25] J. O’Rourke, Computational geometry column 18, SIGACT News 24 (1993) 20–25.