1: \documentclass[11pt]{article}
2: %\documentclass{llncs}
3: \usepackage{graphicx}
4: \usepackage{amsfonts}
5: \usepackage{amssymb}
6: \usepackage{url}
7:
8:
9: \newcommand{\hide}[1]{}
10: \newcommand\R{\mathbb{R}}
11: \newcommand{\squeezelist}{\setlength{\itemsep}{0pt}}
12: \newtheorem{theorem}{{\bf Theorem}}
13: \newtheorem{corollary}[theorem]{Corollary}
14: \newtheorem{lemma}[theorem]{Lemma}
15: \newcommand{\ABox}{
16: \raisebox{3pt}{\framebox[6pt]{\rule{6pt}{0pt}}}
17: }
18: \newenvironment{proof}{{\bf Proof:}}{\hfill\ABox}
19:
20: \topmargin 0in % LaTeX adds an inch
21: \headheight 0pt % no headers
22: \headsep 0in % no headers
23: \textheight 9in % i.e., bottom margin = 1in
24: \textwidth 6.5in
25: \oddsidemargin 0in % (8.5-textwidth)/2 = 1in
26: % LaTeX adds an inch
27:
28: \def\C{{\cal C}}
29:
30: %From Erik Demaine:
31: % Complex \xxx for making notes of things to do. Use \xxx{...} for general
32: % notes, and \xxx[who]{...} if you want to blame someone in particular.
33: % Puts text in brackets and in bold font, and normally adds a marginpar
34: % with the text `xxx'' so that it is easy to find. On the other hand, if
35: % the comment is in a minipage, figure, or caption, the xxx goes in the text,
36: % because marginpars are not possible in these situations.
37: {\makeatletter
38: \gdef\xxxmark{%
39: \expandafter\ifx\csname @mpargs\endcsname\relax % in minipage?
40: \expandafter\ifx\csname @captype\endcsname\relax % in figure/caption?
41: \marginpar{xxx}% not in a caption or minipage, can use marginpar
42: \else
43: xxx % notice trailing space
44: \fi
45: \else
46: xxx % notice trailing space
47: \fi}
48: \gdef\xxx{\@ifnextchar[\xxx@lab\xxx@nolab}
49: \long\gdef\xxx@lab[#1]#2{{\bf [\xxxmark #2 ---{\sc #1}]}}
50: \long\gdef\xxx@nolab#1{{\bf [\xxxmark #1]}}
51: % This turns them off:
52: %\long\gdef\xxx@lab[#1]#2{}\long\gdef\xxx@nolab#1{}%
53: \gdef\turnoffxxx{\long\gdef\xxx@lab[##1]##2{}\long\gdef\xxx@nolab##1{}}%
54: }
55:
56: \begin{document}
57:
58: \title{Grid Vertex-Unfolding Orthogonal Polyhedra
59: \thanks{This is a significant revision of the preliminary version that
60: appeared in~\protect\cite{dfo-gvuop-06}.}
61: %JOR: I moved the correction notification to Sec. 6.1.
62: %Proc. of
63: %the 23rd Int. Symposium on Theoretical Aspects of Computer Science,
64: %2006
65: %The preliminary version contains an
66: %incomplete description of the unfolding tree
67: %(section~\ref{sec:spanning.tree}).}
68: }
69:
70: %
71: %\titlerunning{Unfolding Orthogonal Polyhedra}
72: %
73: %\author{Mirela Damian\inst{1} \and Robin Flatland\inst{2} \and Joseph O'Rourke\inst{3}}
74: %
75: %\authorrunning{Mirela Damian et al.} % abbreviated author list (for running head)
76: %
77: %%%% modified list of authors for the TOC (add the affiliations)
78: %\tocauthor{Mirela Damian (Villanova University),
79: %Robin Flatland (Siena College),
80: %Joseph O'Rourke (Smith College)}
81: %
82: %\institute{Comput. Sci., Villanova University, Villanova,
83: % PA 19085, USA.\\
84: %%\email{mirela.damian@villanova.edu}
85: %\\ WWW home page:
86: %\texttt{http://www.csc.villanova.edu/~mdamian/}
87: %\and
88: %Comput. Sci., Siena College, Loudonville, NY 12211, USA.\\
89: %\email{flatland@siena.edu} %,\\ WWW home page:
90: %%\texttt{http://www.cs.siena.edu/~flatland/}
91: %\and
92: %Comput. Sci., Smith College, Northampton, MA 01063, USA.\\
93: %\email{orourke@cs.smith.edu}} %,\\ WWW home page:
94: %%\texttt{http://www.cs.smith.edu/~orourke/}}
95:
96: \author{
97: Mirela Damian%
98: \thanks{Dept. Comput. Sci., Villanova Univ., Villanova,
99: PA 19085, USA.
100: \protect\url{mirela.damian@villanova.edu}.}
101: \and
102: Robin Flatland%
103: \thanks{Dept. Comput. Sci., Siena College, Loudonville, NY 12211, USA.
104: \protect\url{flatland@siena.edu}.}
105: \and
106: Joseph O'Rourke%
107: \thanks{Dept. Comput. Sci., Smith College, Northampton, MA
108: 01063, USA.
109: \protect\url{orourke@cs.smith.edu}.
110: Supported by NSF
111: %Distinguished Teaching Scholars
112: award
113: DUE-0123154.}
114: }
115: %\date{}
116:
117: \maketitle % typeset the title of the contribution
118:
119: \begin{abstract}
120: An {\em edge-unfolding} of a polyhedron is produced by cutting along
121: edges and flattening the faces to a {\em net}, a connected planar
122: piece with no overlaps. A {\em grid unfolding} allows additional
123: cuts along grid edges induced by coordinate planes passing through
124: every vertex. A {\em vertex-unfolding} permits faces in the net to
125: be connected at single vertices, not necessarily along edges. We
126: show that any orthogonal polyhedra of genus zero has a grid
127: vertex-unfolding. (There are orthogonal polyhedra that cannot be
128: vertex-unfolded, so some type of ``gridding'' of the faces is
129: necessary.) For any orthogonal polyhedron $P$ with $n$ vertices, we
130: describe an algorithm that vertex-unfolds $P$ in $O(n^2)$ time.
131: Enroute to explaining this algorithm, we present a simpler
132: vertex-unfolding algorithm that requires a $3 \times 1$ refinement
133: of the vertex grid.
134: \end{abstract}
135:
136: \paragraph{Keywords:} vertex-unfolding, grid unfolding, orthogonal polyhedra,
137: genus-zero.
138:
139: \section{Introduction}
140: Two unfolding problems have remained unsolved for many
141: years~\cite{do-sfucg-05}: (1)~Can every convex polyhedron be
142: edge-unfolded? (2)~Can every polyhedron be unfolded? An
143: \emph{unfolding} of a 3D object is an isometric mapping of its
144: surface to a single, connected planar piece, the ``net'' for the
145: object, that avoids overlap. An \emph{edge-unfolding} achieves the
146: unfolding by cutting edges of a polyhedron, whereas a \emph{general
147: unfolding} places no restriction on the cuts.
148: %
149: A net representation of a polyhedron finds use in a variety of
150: applications~\cite{o-fucg-00} --- from flattening monkey
151: brains~\cite{ssw-nsgmm-89} to manufacturing from sheet
152: metal~\cite{w-mddsmp-97} to low-distortion texture
153: mapping~\cite{thcm-pm-04}.
154: %In manufacturing parts from sheet metal
155: %for example, a 3D part is approximated as a polyhedron and its
156: %surface is mapped to a collection of 2D flat patterns. Each pattern
157: %is cut from a sheet of metal and folded by a bending
158: %machine~\cite{gbkk-appsmbo-98}, and the resulting pieces assembled
159: %to form the final part.
160:
161: It is known that some nonconvex polyhedra cannot be unfolded without
162: overlap with cuts along edges. However, no example is known of a
163: nonconvex polyhedron that cannot be unfolded with unrestricted cuts.
164: Advances on these difficult problems have been made by specializing
165: the class of polyhedra, or easing the stringency of the unfolding
166: criteria. On one hand, it was established
167: in~\cite{bddloorw-uscop-98} that certain subclasses of
168: \emph{orthogonal polyhedra} --- those whose faces meet at angles
169: that are multiples of $90^\circ$ --- have an unfolding. In
170: particular, the class of \emph{orthostacks}, stacks of extruded
171: orthogonal polygons, was proven to have an unfolding (but not an
172: edge-unfolding). On the other hand, loosening the criteria of what
173: constitutes a net to permit connection through points/vertices, the
174: so-called \emph{vertex-unfoldings}, led to an algorithm to
175: vertex-unfold any triangulated manifold~\cite{deeho-vusm-03} (and
176: indeed, any simplicial manifold in higher dimensions).
177: A vertex unfolding maps the surface to a single, connected piece $P$
178: in the plane, but $P$ may have ``cut vertices'' whose removal
179: disconnect $P$.
180:
181: A second loosening of the criteria is the notion of grid unfoldings,
182: which are especially natural for orthogonal polyhedra. A \emph{grid
183: unfolding} adds edges to the surface by intersecting the polyhedron
184: with planes parallel to Cartesian coordinate planes through every
185: vertex. The two approaches were recently married
186: in~\cite{dil-gvuo-04}, which established that any orthostack may be
187: grid vertex-unfolded. For orthogonal polyhedra, a grid unfolding is
188: a natural median between edge-unfoldings and unrestricted
189: unfoldings.
190:
191: Our main result is that any orthogonal polyhedron, without shape
192: restriction except that its surface be homeomorphic to a sphere, has
193: a grid vertex-unfolding. We present an algorithm that grid
194: vertex-unfolds any orthogonal polyhedron with $n$ vertices in
195: $O(n^2)$ time. We also present, along the way, a simpler algorithm
196: for $3 \times 1$ \emph{refinement} unfolding, a weakening of grid
197: unfolding that we define below. We believe that the techniques in
198: our algorithms may help show that all orthogonal polyhedra can be
199: grid edge-unfolded.
200:
201: \section{Definitions}
202: \label{sec:defs}
203: A $k_1 \times k_2$ \emph{refinement} of a surface~\cite{do-op04-05}
204: partitions each face into a $k_1 \times k_2$ grid of faces. We will
205: consider refinements of grid unfoldings, with the convention that a
206: $1 \times 1$ refinement is an unrefined grid unfolding.
207:
208: We distinguish between a \emph{strict net}, in which the net
209: boundary does not self-touch, and a \emph{net} for which the
210: boundary may touch, but no interior points overlap. The latter
211: corresponds to the physical model of cutting out the net from a
212: sheet of paper, with perhaps some cuts representing \emph{edge
213: overlap}, and this is the model we use in this paper.
214: %
215: We also insist as part of the definition of a vertex-unfolding,
216: again keeping in spirit with the physical model, that the unfolding
217: ``path'' never self-crosses on the surface in the following sense.
218: If $(A,B,C,D)$ are four faces incident in that cyclic order to a
219: common vertex $v$, then the net does not include both the
220: connections $AvC$ and $BvD$.\footnote{
221: This was not part of the original definition in~\cite{deeho-vusm-03} but was
222: achieved by those unfoldings.
223: }
224:
225: We use the following notation to describe the six type of faces of
226: an orthogonal polyhedron, depending on the direction in which the
227: outward normal points: {\em front}: $-y$; {\em back}: $+y$; {\em
228: left}: $-x$; {\em right}: $+x$; {\em bottom}: $-z$; {\em top}: $+z$.
229: We take the $z$-axis to define the vertical direction;
230: \emph{vertical} faces are parallel to the $xz$-plane. Directions
231: clockwise (cw), and counterclockwise (ccw) are defined from the
232: perspective of a viewer positioned at $y = -\infty$. We distinguish
233: between an original vertex of the polyhedron, which we call a
234: \emph{corner vertex} or just a \emph{vertex}, and a
235: \emph{gridpoint}, a vertex of the grid (which might be an original
236: vertex). A {\em gridedge} is an edge segment with both endpoint
237: gridpoints, and a {\em gridface} is a face of the grid bounded by
238: gridedges.
239:
240: Let $O$ be a solid orthogonal polyhedron with the surface
241: homeomorphic to a sphere (i.e, genus zero). Let $Y_i$ be the plane
242: $y=y_i$ orthogonal to the $y$-axis. Let $Y_0, Y_1, \ldots, Y_i,
243: \ldots$ be a finite sequence of parallel planes passing through
244: every vertex of $O$, with $y_0 < y_1 < \cdots < y_i < \cdots$. We
245: define \emph{layer $i$} to be the portion of $O$ between planes
246: $Y_i$ and $Y_{i+1}$. Observe that a layer may include a collection
247: of disjoint connected components of $O$; we call each such component
248: a {\em slab}. A surface piece that surrounds a slab is called a {\em
249: band}. Referring to Fig.~\ref{fig:defs}a, layer $0$, $1$ and $2$
250: each contain one slab (with outer bands $A$, $B$ and $D$,
251: respectively). Note that each slab is bounded by an outer (surface)
252: band, but it may also contain inner bands, bounding holes. Outer
253: bands are called \emph{protrusions} and inner bands are called
254: \emph{dents} ($C$ in Fig.~\ref{fig:defs}a). In other words, band $A$
255: is a \emph{protrusion} if a traversal of the rim of $A$ in $Y_i$,
256: ccw from the viewpoint of $y=-\infty$, has the interior of $O$ to
257: the left of $A$, and a \emph{dent} if this traversal has the
258: interior of $O$ to the right.
259:
260: For fixed $i$, define $P = \partial O \cap Y_i$ as the portion of
261: the surface of $O$ lying in plane $Y_i$. $P^+$ is the portion of $P$
262: with normal in the direction $+y$ (composed of back faces), and
263: $P^-$ the portion with normal in the direction $-y$ (composed of
264: front faces). By convention, band points in $P$ that are not
265: incident to either front or back faces (e.g., when one band aligns
266: with another), belong to both $P^+$ and $P^-$. Thus $P = P^+ \cup
267: P^-$.
268: %Note that it may be that $P^+$ and $P^-$ are not disjoint,
269: %they can share points (but not edges).
270:
271: For a band $A$, Let $R_i(A) = A \cap Y_i$ be the polygon in $Y_i$
272: determined by the rim of band $A$, and $r_i(A)$ the closed region of
273: $Y_i$ whose boundary is $R_i(A)$. For any two bands $A$ and $B$, let
274: $r_i(AB) = r_i(A) \cap r_i (B)$ and let $R_i(AB)$ be the boundary of
275: $r_i(AB)$.
276:
277: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
278: \begin{figure}[htbp]
279: \centering
280: \begin{tabular}{c@{\hspace{0.2\linewidth}}c}
281: \includegraphics[width=0.36\linewidth]{Figures/defs.1.eps} &
282: \raisebox{2em}{\includegraphics[width=0.08\linewidth]{Figures/defs.2.eps}}
283: \end{tabular}
284: \caption{Definitions. (a) Shaded connected pieces are bands; $A$,
285: $B$ and $D$ are protrusions; $C$ is a dent; $r_2(CB)$ coincides with
286: the back face of $C$; $R_2(DB)$ is marked in dashed lines. (b) The
287: adjacency structure of bands is a tree. \label{fig:defs} }
288: \end{figure}
289: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
290:
291: \section{Dents vs. Protrusions}
292: We observe that dents may be treated exactly the same as protrusions
293: with respect to unfolding, because an unfolding of a $2$-manifold to
294: another surface (in our case, a plane) depends only on the intrinsic
295: geometry of the surface, and not on how it is embedded in $\R^3$.
296: Note that we are only concerned with the final unfolded ``flat
297: state''~\cite{do-sfucg-05}, and not with possible intersections
298: during a continuous sequence of partially unfolded intermediate
299: states. Our unfolding algorithm relies solely on the amount of
300: surface material surrounding each point: the cyclic ordering of the
301: faces incident to a vertex, and the pair of faces sharing an edge.
302: All these local relationships remain unchanged if we conceptually
303: ``pop-out'' dents to become protrusions, i.e., a ``Flatland''
304: creature living in the surface could not tell the difference; nor
305: can our algorithm. We note that the popping-out is conceptual only,
306: for it could produce self-intersecting objects. Also dents are
307: gridded independently of the rest of the object, so that it would
308: not matter whether they are popped out or not.
309: %The distinction between dents and protrusions
310: %only affects the case structure of the interaction between bands
311: %in Sec.~\ref{sec:Gb.connected}.
312: %\xxx[JOR]{Is this true? We need to say something here to change the
313: %``it doesn't matter'' claim...}
314: %
315: %This shows that our algorithm works on a wider class of objects than
316: %the orthogonal polyhedra, an observation we do not pursue.
317: %======================================================================
318:
319: Although the dent/protrusion distinction is irrelevant to the
320: unfolding, the interrelationships between dents and protrusions
321: touching a particular $Y_i$ do depend on this distinction. To cite
322: just the simplest example, there cannot be two nested protrusions to
323: the same side of $Y_i$, but a protrusion could have a dent in it to
324: the same side of $Y_i$ (e.g., protrusion $B$ encloses dent $C$ to
325: the same side of $Y_1$ in Fig.~\ref{fig:defs}). These relationships
326: are crucial to the connectivity of the band graph $G_b$, discussed
327: in Sec.~\ref{sec:Gb.connected}.
328:
329: \section{Overview}
330: \label{sec:overview} The two algorithms we present share a common
331: central structure, with the second achieving a stronger result; both
332: are vertex-unfoldings that use orthogonal cuts only. We note that it
333: is the restriction to orthogonal cuts that makes the
334: vertex-unfolding problem difficult: if arbitrary cuts are allowed,
335: then a general vertex-unfolding can be obtained by simply
336: triangulating each face and applying the algorithm
337: from~\cite{deeho-vusm-03}.
338:
339: The ($3 \times 1$)-algorithm unfolds any genus-0 orthogonal
340: polyhedron that has been refined in one direction 3-fold. The bands
341: themselves are never split (unlike in~\cite{bddloorw-uscop-98}). The
342: algorithm is simple. The ($1 \times 1$)-algorithm also unfolds any
343: genus-0 orthogonal polyhedron, but this time achieving a grid
344: vertex-unfolding, i.e., without refinement. This algorithm is more
345: delicate, with several cases not present in the ($3 \times
346: 1$)-algorithm that need careful detailing. Clearly this latter
347: algorithm is stronger, and we vary the detail of presentation to
348: favor it. The overall structure of the two algorithms is the same:
349: \begin{enumerate}
350: \squeezelist
351: \item A band ``unfolding tree'' $T_U$ is constructed by shooting rays vertically
352: from the top of bands. The root of $T_U$ is a {\em frontmost} band
353: (of smallest $y$-coordinate), with ties broken arbitrarily.
354: \item A forward and return \emph{connecting} path of vertical faces
355: is identified, each of which connects a parent band to a child band
356: in $T_U$.
357: \item Each band is unfolded horizontally as a unit, but interrupted
358: when a connecting path to a
359: child is encountered. The parent band unfolding is suspended at that
360: point, and the child band is unfolded recursively.
361: \item The vertical front and back faces of each slab are partitioned
362: according to an illumination model, with variations for the more
363: complex ($1 \times 1$)-algorithm. These vertical faces are attached
364: below and above appropriate horizontal sections of the band
365: unfolding.
366: \end{enumerate}
367: The final unfolding lays out all bands horizontally, with the
368: vertical faces hanging below and above the bands. Non-overlap is
369: guaranteed by this strict two-direction structure.
370:
371: Although our result is a broadening of that in~\cite{dil-gvuo-04}
372: from orthostacks to all orthogonal polyhedra, we found it necessary
373: to employ techniques different from those used in that work. The
374: main reason is that, in an orthostack, the adjacency structure of
375: bands yields a path, which allows the unfolding to proceed from one
376: band to the next along this path, never needing to return. In an
377: orthogonal polyhedron, the adjacency structure of bands yields a
378: tree (cf. Fig.~\ref{fig:defs}b). Thus unfolding band-by-band leads
379: to a tree traversal, which requires traversing each arc of the tree
380: in both directions. It is this aspect which we consider our main
381: novelty, and which leads us to hope for an extension to
382: edge-unfoldings as well.
383:
384: %======================================================================
385: \section{$(3 \times 1)$-Algorithm}
386:
387: %Under the assumption that each front, back, top and bottom face of
388: %$O$ has been partitioned into a $3 \times 1$ grid of faces, we
389: %discuss in detail the unfolding steps listed in
390: %Sec.~\ref{sec:overview}.
391:
392: \subsection{Computing the Unfolding Tree $T_U$}
393: \label{sec:3x1tree}
394:
395: %We first describe finding an unfolding tree
396: %$T_U$ that spans all bands in $O$.
397:
398: Define a {\em z-beam} to be a vertical rectangle on the surface of
399: $O$ connecting two band rims whose top and bottom edges are
400: gridedges. In the degenerate case, a $z$-beam has height zero and
401: connects two rims along a section where they coincide. We say that
402: two bands $b_1$ and $b_2$ are {\em z-visible} if there exists a
403: $z$-beam connecting a gridedge of $b_1$ to a gridedge of $b_2$.
404: There can be many $z$-beams connecting two bands, so for each pair
405: of bands we select a representative $z$-beam of minimal (vertical)
406: height. Let $G$ be the graph that contains a node for each band of
407: $O$ and an arc for each pair of $z$-visible bands. It easily follows
408: from the connectedness of the surface of $O$ that $G$ is connected.
409: Let the unfolding tree $T_U$ be any spanning tree of $G$, with the
410: root selected arbitrarily from among all bands adjacent to $Y_0$.
411:
412: Applying the 3x1 refinement partitions each front, back, top and
413: bottom face of $O$ into a $3 \times 1$ grid of faces. This
414: partitions the top and bottom edges of each $z$-beam into three
415: refined gridedges and divides the beam itself into three vertical
416: columns of refined gridfaces. For a band $B$ in $T_U$ with parent
417: $A$, let $e$ be the gridedge on $B$'s rim where the $z$-beam from
418: $A$ attaches. We define the {\em pivot point} $x_b$ to be the
419: $\frac{1}{3}$-point of $e$ (or, in circumstances to be explained
420: below, the $\frac{2}{3}$-point), and so it coincides with a point of
421: the $3 \times 1$-refined grid. The unfolding of $O$ will follow the
422: connecting vertical ray that extends from $x_b$ on $B$ to $A$. Note
423: that if $e$ belongs to both $A$ and $B$, then the ray connecting $A$
424: and $B$ degenerates to a point. To either side of a connecting ray
425: we have two \emph{connecting paths} of vertical faces, the
426: \emph{forward} and \emph{return} path. In
427: Fig.~\ref{fig:3x1.three.boxes}a, these connecting paths are the
428: shaded strips on the front face of $A$.
429:
430:
431: \subsection{Unfolding Bands into a Net}
432: \label{sec:3x1band}
433:
434: Starting at a frontmost \emph{root band}, each band is unfolded as a
435: conceptual unit, but interrupted by the connecting rays incident to
436: it from its front and back faces. In Fig.~\ref{fig:3x1.three.boxes},
437: band $A$ is unfolded as a rectangle, but interrupted at the rays
438: connecting to (front children) $B$, $C$ and (back child) $B'$. At
439: each such ray the parent band unfolding is suspended, the unfolding
440: follows the forward connecting path to the child, the child band is
441: recursively unfolded, then the unfolding returns along the return
442: connecting path back to the parent, resuming the parent band
443: unfolding from the point it left off.
444:
445: Fig.~\ref{fig:3x1.three.boxes} illustrates this unfolding algorithm.
446: The cw unfolding of $A$, laid out horizontal to the right, is
447: interrupted to traverse the forward path down to $B$, and $B$ is
448: then unfolded as a rectangle (composed of its contiguous faces). The
449: base $x_b$ of the connecting ray is called a \emph{pivot point}
450: because the ccw unfolding of $B$ is rotated $180^\circ$ ccw about
451: $x_b$ so that the unfolding of $B$ is also horizontal to the right.
452: It is only here that we use point-connections that render the
453: unfolding a vertex-unfolding. The unfolding of $B$ proceeds ccw back
454: to $x_b$, crosses over $A$ to unfold $B'$, then a cw rotation by
455: $180^\circ$ around the second image of pivot $x_b'$ orients the
456: return path to $A$ so that the unfolding of $A$ continues horizontal
457: to the right. Note that the unfolding of $C$ is itself interrupted
458: to unfold child $D$. Also note that there is edge overlap in the
459: unfolding at each of the pivot points.
460:
461: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
462: \begin{figure}[htbp]
463: \centering
464: \includegraphics[width=0.9\linewidth]{Figures/3x1.three.boxes.eps}\\
465: \vspace{-0.08in} \caption{ (a)~Orthogonal polyhedron. (b)~Unfolding
466: tree $T_U$. (c)~Unfolding of bands and front (hachured) face pieces.
467: Vertex connection through the pivots points $x_b$, $x_{b'}$, $x_c$,
468: $x_d$ is shown exaggerated for clarity. }
469: \label{fig:3x1.three.boxes}
470: \end{figure}
471: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
472:
473: The reason for the $3 \times 1$ refinement is that the upper edge
474: $e'$ of the back child band $B'$ has the same $(x,z)$-coordinates as
475: the upper edge $e$ of $B$ on the front face. In this case, the faces
476: of band $A$ induced by the connecting paths to $B$ would be
477: ``overutilized'' if there were only two. Let $a_1, a_2, a_3$ be the
478: three faces of $A$ induced by the $3 \times 1$ refinement of the
479: connecting path to $B$, as in Fig.~\ref{fig:3x1.three.boxes}. Then
480: the unfolding path winds around $A$ to $a_1$, follows the forward
481: connecting path to $B$, returns along the return connecting path to
482: $a_2$, crosses over $A$ and unfolds $B'$ on the back face, with the
483: return path now joining to $a_3$, at which point the unfolding of
484: $A$ resumes. In this case, the pivot point $x_{b'}$ for $B'$ is the
485: $\frac{2}{3}$-point of $e'$. Other such conflicts are resolved
486: similarly. It is now easy to see that the
487: %unfolding of the bands and
488: %the connecting-path faces
489: resulted net has the general form illustrated in
490: Fig.~\ref{fig:3x1.three.boxes}b:
491: \begin{enumerate}
492: \squeezelist
493: \item The faces of each band fall within a horizontal rectangle whose height is the band
494: width.
495: \item These band rectangles are joined by vertical connecting paths on either side,
496: connecting through pivot points.
497: \item The strip of the plane above and below each band face that is not incident to a
498: connecting path, is empty.
499: \item The net is therefore an orthogonal polygon monotone with respect to
500: the horizontal.
501: \end{enumerate}
502:
503: \subsection{Attaching Front and Back Faces to the Net}
504: \label{sec:3x1front.back}
505:
506: Finally, we ``hang'' front and back faces from the bands as follows.
507: The front face of each band $A$ is partitioned by imagining $A$ to
508: illuminate downward lightrays from the rim in the front face. The
509: pieces that are illuminated are then hung vertically downward from
510: the horizontal unfolding of the $A$ band. The portions unilluminated
511: will be attached to the obscuring bands.
512:
513: In the example in Fig.~\ref{fig:3x1.three.boxes}, this illumination
514: model partitions the front face of $A$ into three pieces (the
515: striped pieces in Fig.~\ref{fig:3x1.three.boxes}b). These three
516: pieces are attached under $A$; the portions of the front face
517: obscured by $B$ but illuminated downward by $B$ are hung beneath the
518: unfolding of $B$ (not shown in the figure), and so on. Because the
519: vertical illumination model produces vertical strips, and because
520: the strips above and below the band unfoldings are empty, there is
521: always room to hang the partitioned front face. Thus, any orthogonal
522: polygon may be vertex-unfolded with a $3 \times 1$ refinement of the
523: vertex grid.
524:
525: \medskip
526: \noindent Although we believe this algorithm can be improved to $2
527: \times 1$ refinement, the complications needed to achieve this are
528: similar to what is needed to avoid refinement entirely, so we
529: instead turn directly to $1 \times 1$ refinement.
530:
531: \section{$(1 \times 1)$-Algorithm}
532:
533: Although the $(1 \times 1)$-algorithm follows the same general
534: outline as the $(3 \times 1)$-Algorithm, there are significant
535: complications, which we outline before detailing. First, without the
536: refinement of $z$-beams into three strips to allow avoidance of
537: conflicts on opposite sides of a slab (e.g., $B$ and $B'$ in
538: Fig.~\ref{fig:3x1.three.boxes}a), we found it necessary to replace
539: the $z$-beams by a pair of $z$-rays that are in some sense the
540: boundary edges of a $z$-beam. Selecting two rays per band permits a
541: 2-coloring algorithm (Theorem~\ref{thm:2-color}) to identify rays
542: that avoid conflicts. Generating the ray-pairs
543: (Sec.~\ref{sec:ray-pairs}) requires care to ensure that the band
544: graph $G_b$ is connected (Sec.~\ref{sec:Gb.connected}). This graph,
545: and the 2-coloring, lead to an unfolding tree $T_U$
546: (Sec.~\ref{sec:spanning.tree}). From here on, there are fewer
547: significant differences compared to the $(3 \times 1)$-Algorithm.
548: Without the luxury of refinement, there is more need to share
549: vertical paths on the vertical face of a slab
550: % and to take care with
551: % overlapping forward and return paths
552: (Fig.~\ref{fig:return}).
553: Finally, the vertical connecting paths obscure the illumination of
554: some grid faces, which must be attached to the connecting paths. We
555: now present the details, in this order:
556:
557: %This algorithm follows a similar sequence of steps as the $3 \times
558: %1$ algorithm, but in a slightly different order and with each step
559: %involving more complex techniques discussed in detail in subsequent
560: %sections:
561:
562: \vspace{0.1in} \hrule \hfill \vspace{-0.1in}
563: \begin{tabbing}
564: ....\=...........\=........\kill
565: \> 1. Select Pivot Points (Sec.~\ref{sec:pivots}) via \\
566: \> \>a. Ray-Pair Generation (Sec.~\ref{sec:ray-pairs}) \\
567: \> \>b. Ray Graph (Sec.~\ref{sec:ray.graph}) \\
568: \> 2. Construct $T_U$ (Sec.~\ref{sec:spanning.tree}) \\
569: \> 3. Select Connecting Paths (Sec.~\ref{sec:paths}) \\
570: \> 4. Determine Unfolding Directions (Sec.~\ref{sec:unfdir}) \\
571: \> 5. Recurse: \\
572: \> \> a. Unfold Bands into a Net (Sec.~\ref{sec:unfolding.bands}) \\
573: \> \> b. Attach Front and Back Faces to the Net (Sec.~\ref{sec:faces})
574: \end{tabbing}
575: \hrule \hfill
576:
577:
578: %In the following we discuss each step in detail.
579: \subsection{Selecting Pivot Points} \label{sec:pivots}
580: The pivot $x_a$ for a band $A$ is the gridpoint of $A$ where the
581: unfolding of $A$ starts and ends. The $y$-edge of $A$ incident to
582: $x_a$ is the first edge of $A$ that is cut to unfold $A$.
583:
584: Let $A$ be an arbitrary band delimited by planes $Y_i$ and
585: $Y_{i+1}$. Say that two gridpoints $u \in Y_i$ and $w \in Y_{i+1}$
586: are {\em in conflict} if the upward rays emerging from $u$ and $w$
587: hit the endpoints of the same $y$-edge of $A$; otherwise, $u$ and
588: $v$ are {\em conflict-free}. If $u$ lies either on a vertical edge,
589: or on a vertically extreme horizontal edge, then the ray at $u$
590: degenerates to $u$ itself.
591:
592: Our goal is to select conflict-free pivots for all bands in $T_U$,
593: which will help us avoid later competition over the use of certain
594: faces in the unfolding, an issue that will become clear in
595: Sec.~\ref{sec:unfolding.bands}. Selecting these pivots is the most
596: delicate aspect of the $(1 \times 1)$-algorithm. Ultimately, we
597: represent pivoting conflicts in the form of a graph $G_r$
598: (Sec.~\ref{sec:ray.graph}), from which $T_U$ will be derived.
599:
600: \subsubsection{Ray-Pair Generation}
601: \label{sec:ray-pairs} In order to avoid pivoting conflicts, for each
602: band we will need two choices for its connecting ray. Thus the
603: algorithm generates the rays in pairs. Because there is no
604: refinement, the two rays originate at grid points on the same band,
605: but they may terminate on different bands. A simple example is shown
606: in Figure~\ref{fig:face}a, where the ray pair originating on band
607: $D$ hits two different bands, $B$ and $C$. This example also
608: suggests that one cannot consider ray pairs connecting pairs of
609: bands, as in the $(3 \times 1)$-algorithm (which would connect $D$
610: to $A$ in this example), but instead we focus on shooting pairs of
611: rays upward from strategic locations on the boundary of each band,
612: and then selecting a subset of these rays so that the conflicts can
613: be resolved and $T_U$ is connected. To ensure connectedness of all
614: bands, several ray-pairs must be issued upward from each band.
615: Figure~\ref{fig:face}b shows an example: no pair of rays can emanate
616: upward from the top of $B \cap P^-$ or $C \cap P^-$; one pair of
617: rays shoots upward from the top of each component of $A \cap P^-$:
618: $(r_1, r_2)$ connects $A$ to $B$ and $(r_3, r_4)$ connects $A$ to
619: $C$; finally, one pair of rays $(r_5, r_6)$ issues from the top of
620: $A \cap P^-$, which connects $A$ to $D$. So, overall, three pairs of
621: rays are generated for band $A$. We now turn to describing in detail
622: the method for generating ray-pairs.
623: %
624: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
625: \begin{figure}[htbp]
626: \centering
627: \begin{tabular}{c@{\hspace{0.15\linewidth}}c}
628: \includegraphics[width=0.3\linewidth]{Figures/face.eps} &
629: \includegraphics[width=0.34\linewidth]{Figures/ray.shooting.eps} \\
630: (a) & (b)
631: \end{tabular}
632: \caption{(a) The ray pair $(r_1, r_2)$ connects band $D$ to two
633: different bands $B$ and $C$. (b) To ensure connectivity, three pairs
634: of rays must be issued for $A$: $(r_1, r_2)$, $(r_3, r_4)$ and
635: $(r_5, r_6)$.} \label{fig:face}
636: \end{figure}
637: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
638:
639:
640: Let band $A$ intersect plane
641: $Y_i$. The algorithm is a for-loop over all $A$. Let $A_1, A_2,
642: \ldots, A_m$ be the components of $A$, defined as follows. Take all
643: the maximal components of $A \cap P^+$ that contain an $x$-gridedge,
644: and union with all the maximal components of $A \cap P^-$ that
645: contain an $x$-gridedge. We define $S(A_j)$ as the set of all
646: potential rays shooting upward from $A_j$. More precisely, $S(A_j)$
647: consists of the set of all segments $s=(a,b)$, with $a \in A_j$,
648: such that
649: \begin{enumerate}
650: \squeezelist
651: \item Either $s$ is a point, with $b=a$, or
652: $s \subset P \subset Y_i$ is vertical (parallel to $z$), with $a$
653: below $b$.
654: \item $b \in B$ for some band $B \neq A$.
655: \item The open segment $s \setminus \{a,b\}$ may contain points of $A$
656: (see $r_2$ in Fig.~\ref{fig:ray.pairs}b), but no other band points.
657: %\item If $s$ is a point, it is not isolated: there is another segment in $S(A_j)$
658: %in a neighborhood of $s$.
659: \end{enumerate}
660: %\xxx{This last condition is intended to discard isolated points, to
661: %deal with Robin's example.}
662: %
663: For each band $A$, for each component $A_j \subseteq A$, if $S(A_j)$
664: is nonempty, we select one ray pair $(r_1, r_2)$, such that (i)
665: $r_1$ is the leftmost segment in $S(A_j)$ that is incident to a
666: highest $x$-gridedge in $A_j$, and (ii) $r_2$ is the segment one
667: $x$-gridedge to the right of $r_1$. Fig.~\ref{fig:ray.pairs} shows a
668: few examples.
669: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
670: \begin{figure}[htbp]
671: \centering
672: \begin{tabular}{c@{\hspace{0.1\linewidth}}c@{\hspace{0.1\linewidth}}c}
673: \includegraphics[width=0.24\linewidth]{Figures/rays.1.eps} &
674: \includegraphics[width=0.25\linewidth]{Figures/rays.2.eps} &
675: \includegraphics[width=0.21\linewidth]{Figures/rays.3.eps} \\
676: (a) & (b) & (c)
677: \end{tabular}
678: \caption{Generating ray-pairs: (a)~$(r_1, r_2)$ for $A$; $S(B) =
679: \emptyset$. (b)~$(r_1, r_2)$ for $A$ (note that $r_2$ runs along
680: source band $A$); degenerate ray-pair $(r'_1, r'_2)$ for $B$.
681: (c)~$S(A) = \emptyset$; $(r_1, r_2)$ for $B$. } \label{fig:ray.pairs}
682: \end{figure}
683: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
684: As mentioned above, several ray pairs could be generated for any one
685: band, and indeed several pairs connecting two bands.
686:
687: Let $G_b$ be the \emph{band graph} whose nodes are bands. Two bands
688: are connected by an arc in $G_b$ if the ray-pair algorithm generates
689: a ray connecting them. We call a collection of bands in $G_b$
690: \emph{ray-connected} if they are in the same connected component of
691: $G_b$. We establish that $G_b$ is a connected graph, i.e., all bands
692: are ray-connected to one another, even if only one ray per pair is
693: employed:
694:
695: \begin{lemma}
696: $G_b$ is connected. Furthermore, the subgraph of $G_b$ induced by
697: exactly one ray per ray-pair (arbitrarily selected) is connected.
698: \label{lem:Gb.connected0}
699: \end{lemma}
700:
701: \medskip
702: \noindent Whereas the connectedness of bands by $z$-beams in the $(3
703: \times 1)$-algorithm is straightforward, the complex possible
704: relationships between bands makes connectedness via rays more
705: subtle. We relegate the proof to the Appendix
706: (Sec.~\ref{sec:Gb.connected}) in order to not interrupt the main
707: flow of the algorithm.
708:
709: The over-generation of ray-pairs noted above is designed to ensure
710: connectedness. Eventually many rays will be discarded by the time
711: $T_U$ is constructed in Sec.~\ref{sec:spanning.tree}.
712:
713: \subsubsection{Ray Graph $G_r$} \label{sec:ray.graph}
714: %------------------------------------------------------------------
715: One pair of rays per pair of bands suffices to ensure that all bands
716: are ray-connected. If multiple pairs of rays exist for a pair of
717: bands, pick one pair arbitrarily and discard the rest. Then define a ray
718: graph $G_r$ as follows. The nodes of $G_r$ are vertical rays in a
719: plane $Y_i$, perhaps degenerating to points, connecting gridpoints
720: between two bands that both intersect $Y_i$. The arcs of $G_r$ each
721: records a potential pivoting conflict, and are of two varieties:
722:
723: \begin{enumerate}
724: \squeezelist
725: \item[(i)] The nodes for the two rays issuing from the top of one band $B$
726: are adjacent in $G_r$. Call such arcs \emph{$x$-arcs};
727: geometrically they can be viewed as parallel to the $x$-axis.
728: % (although they have
729: %no particular $x$-value).
730:
731: \item[(ii)] The nodes for two rays incident to opposite sides of
732: the rim of a band $A$, connected by a $y$-segment on the band, are
733: adjacent in $G_r$. Call such arcs \emph{$y$-arcs}; geometrically
734: they can be viewed as parallel to the $y$-axis.
735: %; we associate
736: %the $y$-coordinate value with the arc.
737:
738: \end{enumerate}
739: Fig.~\ref{fig:Gr.path} shows two simple examples of $G_r$ involving
740: nodes on opposite sides of one band $A$.
741: %-------------------------------------------------------------------
742: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
743: \begin{figure}[htbp]
744: \centering
745: \begin{tabular}{c@{\hspace{0.1\linewidth}}c}
746: \includegraphics[width=0.4\linewidth]{Figures/Gr.path.1.eps} &
747: \includegraphics[width=0.4\linewidth]{Figures/Gr.path.2.eps} \\
748: (a) & (b)
749: \end{tabular}
750: \caption{ Building $G_r$. (a) $G_r$ is a $4$-cycle; $\{r_1,r_2\}$
751: and $\{r_3, r_4\}$ are $x$-arcs; any other arc is a $y$-arc. (b)
752: $G_r$ is a path; $\{r_2,r_5\}$ and $\{r_3, r_6\}$ are $y$-arcs; any
753: other arc is an $x$-arc.} \label{fig:Gr.path}
754: \end{figure}
755: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
756: %
757: Before proceeding, we list the consequences of the two types of arcs
758: in $G_r$. Assuming that we can $2$-color $G_r$ $\{$red, blue$\}$,
759: and we select the base of (say) the red rays as pivots, then: (i)
760: exactly one pivot is selected for each band, and (ii) no two pivot
761: rays are in conflict across a band. So our goal now is to show that
762: $G_r$ is $2$-colorable. Because a graph is $2$-colorable if and only
763: if it is bipartite, and a graph is bipartite if and only if every
764: cycle is of even length, we aim to prove that every cycle in $G_r$
765: is of even length. We start by listing a few relevant properties of
766: $G_r$:
767: \begin{enumerate}
768: \squeezelist
769: \item
770: Every node $r \in G_r$ has exactly one incident $x$-arc. The rays
771: are generated in pairs, and the pairs are connected by an $x$-arc.
772: As no such ray is shared between two bands, at most one $x$-arc is
773: incident to any $r$.
774:
775: \item Nodes have at most degree $3$, with the following structure:
776: degree-$1$ nodes have an incident $x$-arc; degree-$2$ nodes have
777: both an incident $x$- and $y$-arc; and degree-$3$ nodes have an
778: incident $x$-arc and two incident $y$-arcs.
779:
780: %\item Any path consisting entirely of $y$-arcs remains at the
781: %same $y$-coordinate. This is because $y$-arcs follow $y$-segments
782: %crossing bands, and nodes represent $z$-vertical rays that do not
783: %alter the $y$-coordinate.
784:
785: \item Each $x$-arc spans exactly one pair of adjacent $y$-gridlines,
786: and each $y$-arc spans exactly one band rim-to-rim. The former is by
787: the definition of ray pairs, which issue from adjacent gridpoints,
788: and the latter follows from the grid partitioning of the object into
789: bands.
790: \end{enumerate}
791: %
792: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
793: \begin{figure}[htbp]
794: \centering
795: \includegraphics[width=0.98\linewidth]{Figures/dent.10cycle.1.eps}
796: \caption{ (a,b) Two side views of an object; $z$-rays and $y$-arcs
797: are marked with thick lines. (c) $G_r$ coordinatized into $xy$-plane
798: $\Pi$; $(r_5, r_6, r_{10}, r_9)$ is a $4$-cycle;
799: $(r_1,r_3,r_4,r_8,r_7,r_{11},r_{12},r_9,r_5,r_2)$ is a $10$-cycle.}
800: \label{fig:dent.10-cycle}
801: \end{figure}
802: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
803: %
804: Our next step requires embedding $G_r$ in an $xy$-plane $\Pi$.
805: Toward that end, we coordinatize the nodes and arcs of $G_r$ as
806: follows. A node $r \in G_r$ is a $z$-ray, and is assigned the
807: $(x,y)$ coordinates of the ray. Note that this means collinear rays
808: get mapped to the same point; however we treat them as distinct. The
809: $x$-arcs are then parallel to the $x$-axis, and the $y$-arcs are
810: parallel to the $y$-axis. In essence, this coordinatization is a
811: view from $z=+\infty$.
812:
813: Fig.~\ref{fig:dent.10-cycle} shows a more complex example
814: illustrating this viewpoint. The object is composed of $7$ bands
815: $B_i$, one of which ($B_3$) is a dent. There are $12$ ray nodes, two
816: pairs of which lie on the same $z$-vertical line, namely $(r_4,r_5)$
817: and $(r_8,r_9)$. Note that there are $y$-arcs crossing both the top
818: of and the bottom\footnote{
819: A dent is included in this example precisely to
820: introduce such a bottom $y$-arc into $G_r$.
821: } of $B_4$. The graph $G_r$ has a $4$-cycle and a $10$-cycle, both
822: detailed in the caption (as well as a $12$-cycle not detailed).
823:
824:
825: \begin{lemma}
826: Every cycle in $G_r$ is of even length.
827: \end{lemma}
828: \begin{proof}
829: Let $C$ be a cycle in $G_r$. The coordinatization described above
830: maps $C$ to a (perhaps self-crossing) closed path in the $xy$-plane
831: $\Pi$, a path which may visit the same $(x,y)$ point more than once,
832: and/or traverse the same edge in $\Pi$ more than once. Any such
833: closed path on a grid must have even length, for the following
834: reason.
835:
836: First, by Property~(3) above, each edge of the path in $\Pi$
837: connects adjacent grid lines: an edge never ``jumps over'' one or
838: more grid lines. Second, any such closed lattice path changes parity
839: with each step, in the following sense.
840: %Assign to $y$-gridlines in $\Pi$ $y$-bits $0, 1, 0, 1, \ldots$ from left to right,
841: %and to $x$-gridlines $x$-bits $0, 1, 0, 1, \ldots$ from bottom to top.
842: %Define the parity of a gridpoint of $\Pi$ to be the sum of its $x$- and $y$-bits
843: %mod~$2$.
844: Number the $x$- and $y$-gridlines with integers $0,1,2,\ldots$ left
845: to right and bottom to top respectively. Define the parity of a
846: gridpoint of $\Pi$ to be the sum of its $x$- and $y$-gridline
847: coordinates, mod~$2$. Then each step of the path, necessarily in one
848: of the four compass directions, changes parity, as it changes only
849: one of $x$ or $y$. Returning to the start point to close the path
850: must return to the starting coordinates, and so to the same parity.
851: Thus, there must be an even number of parity changes along any
852: closed path. Therefore, $C$ has an even number of edges.
853: \end{proof}
854:
855: \medskip
856: \noindent We have now established this:
857: \begin{theorem}
858: $G_r$ is $2$-colorable. \label{thm:2-color}
859: \end{theorem}
860:
861: \noindent Note that nowhere in the above proof do we assume genus
862: zero, so this theorem holds for polyhedra of arbitrary genus.
863:
864: \paragraph{Band pivoting.}
865: By Theorem~\ref{thm:2-color}, we can $2$-color the nodes of $G_r$
866: \{red,blue\}. We choose all red ray-nodes of $G_r$ to be pivoting
867: rays, in that their base points become pivot points. As remarked
868: before, this selection guarantees that each band is pivoted, and no
869: two pivots are in conflict.
870:
871: \subsection{Unfolding Tree $T_U$} \label{sec:spanning.tree}The next
872: task is to define a band spanning tree $T_U$, based on the band
873: graph $G_b$. Define $G'_b$, to retain the just the arcs of $G_b$
874: corresponding to the red ray nodes (in the above $2$-coloring) in
875: $G_r$. This maintains the connectivity of
876: Lemma~\ref{lem:Gb.connected0}.
877: %bands connected by pairs of rays are now connected by one ray.
878: Then take $T_U$ to be any
879: spanning tree of $G'_b$ rooted at a frontmost band.
880:
881: With $T_U$ finally in hand, the remainder of the $(1 \times
882: 1)$-algorithm follows the overall structure of the $3 \times 1$
883: algorithm, with variations as mentioned before, as detailed below.
884:
885: \subsubsection{Selecting Connecting Paths}
886: \label{sec:paths} Having established a pivot point for each band, we
887: are now ready to define the {\em forward} and {\em return}
888: connecting paths for a child band in $T_U$. Let $B$ be an arbitrary
889: child of a band $A$. If $B$ intersects $A$, both forward and return
890: connection paths for $B$ reduce to the pivot point $x_b$ (e.g., $u$
891: in Fig.~\ref{fig:overhang}). If $B$ does not intersect $A$, then a
892: ray $r$ connects $x_b$ to $A$ (Figs.~\ref{fig:box-in-box1}a
893: and~\ref{fig:box-aligned-box}a). The connecting paths are the two
894: vertical paths separated by $r$ comprised of the gridfaces sharing
895: an edge with $r$ (paths $a_1$ and $a_2$ in
896: Figs.~\ref{fig:box-in-box1}a and~\ref{fig:box-aligned-box}a). The
897: path first encountered in the unfolding of $A$ is used as a forward
898: connecting path; the other path is used as a return connecting path.
899:
900: \subsubsection{Determining Unfolding Directions}
901: \label{sec:unfdir} A top-down traversal of $T_U$ assigns an
902: unfolding direction to each band in $T_U$ as follows. The root band
903: in $T_U$ may unfold either cw or ccw, but for definiteness we set
904: the unfolding direction to cw. Let $B$ be the band in $T_U$
905: currently visited and let $A$ be the parent of $B$. If the upward
906: ray $r$ incident to $x_b$ connects $B$ to a bottom gridpoint of $A$,
907: and if $A$ unfolds cw(ccw), then $B$ unfolds cw(ccw). Otherwise, $r$
908: connects $B$ to a top or a side (for degenerate rays) gridpoint of
909: $A$; in this case, if $A$ unfolds cw(ccw), then $B$ unfolds ccw(cw).
910: In other words, $A$ and $B$ unfold in a same direction if $B$
911: ``hangs below'' $A$, and in opposite direction otherwise.
912:
913: \subsection{Unfolding Bands into a Net}
914: \label{sec:unfolding.bands} Let $A$ be a band to unfold, initially
915: the root band. The unfolding of $A$ starts at $x_a$ and proceeds in
916: the unfolding direction (cw or ccw) of $A$. Henceforth we assume
917: w.l.o.g. that the unfolding of $A$ proceeds cw (w.r.t. a viewpoint
918: at $y = -\infty$); the ccw unfolding of $A$ is a vertical reflection
919: of the cw unfolding of $A$. In the following we describe our method
920: to unfold every child $B$ of $A$ recursively, which falls naturally
921: into several cases.
922:
923: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
924: \begin{figure}[htbp]
925: \centering \centering
926: \begin{tabular}{c@{\hspace{0.1\linewidth}}c}
927: \includegraphics[width=0.43\linewidth]{Figures/overhang.2.eps} &
928: \includegraphics[width=0.42\linewidth]{Figures/overhang.1.eps}
929: \end{tabular}
930: \caption{Unfolding $B$ when the ray connecting $B$ to $A$
931: degenerates to $x_b$.} \label{fig:overhang}
932: \end{figure}
933: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
934:
935: \paragraph{Case 1:} Pivot $x_b \in A \cap B$.
936: Then, whenever the unfolding of $A$ reaches $x_b$, we unfold $B$ as
937: in Fig.~\ref{fig:overhang}. The unfolding uses the two band faces of
938: $A$ incident to $x_b$ ($a_0$ and $a_1$ in Fig.~\ref{fig:overhang}).
939: The gridface $b_0$ of $B$ ccw of $x_b$ gets rotated around $x_b$ so
940: that the ccw unfolding of $B$ extends horizontally to the right. The
941: unfolding of $B$ proceeds ccw back to $x_b$, then the face $a_1$
942: incident to $x_b$ gets oriented about $x_b$ so that the unfolding of
943: $A$ continues horizontal to the right.
944:
945: Note that, because the pivots of any two children of $A$ are
946: conflict-free, there is no competition over the use of $a_0$ and
947: $a_1$ in the unfolding. Note also that the unfolding path does not
948: self-cross. For example, the cyclic order of the faces incident to
949: $u$ in Fig.~\ref{fig:overhang}a is $(a_0,
950: A_{front},b_0,b_1,B_{back},a_1)$, and the unfolding path follows
951: $(a_0,b_0,\ldots,b_1,a_1)$.
952:
953: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
954: \begin{figure}[htbp]
955: \centering
956: \begin{tabular}{c@{\hspace{0.2\linewidth}}c}
957: \includegraphics[width=0.28\linewidth]{Figures/box-in-box.1.eps} &
958: \includegraphics[width=0.32\linewidth]{Figures/box-in-box.2.eps} \\
959: (a) & (b)
960: \end{tabular}
961: \caption{Unfolding $B$: $u_1$ is not a corner vertex of $A$ (a)
962: $x_b$ incident to a left face of $B$ (b) $x_b$ incident to a top
963: face of $b$.} \label{fig:box-in-box1}
964: \end{figure}
965: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
966:
967: \paragraph{Case 2:} Pivot $x_b \not\in A \cap B$ and
968: the (forward, return) connecting paths for $B$ do not overlap other
969: connecting paths (except at their boundaries);
970: %This case is more complex, because it involves conflicts over the use
971: %of the connecting paths for $B$; i.e,
972: we will later see that this may happen.
973: %We discuss these conflicts after settling some notation
974: Let us settle some notation first % before we proceed.
975: (cf.~Fig~\ref{fig:box-in-box1}a):% and~\ref{fig:box-aligned-box}a):
976: ~$r$ is the ray connecting $B$ to $A$; $a_1$ and $a_2$ are forward
977: and return connecting paths for $B$ (one to either side of $r$);
978: $u_1$ is the endpoint of $r$ that lies on $A$; and $u_2$ is the
979: other endpoint of the $y$-edge of $A$ incident to $u_1$.
980: %
981: %Assume first that the forward path $a_1$ for $B$ does not overlap
982: %the return path for another descendant of $A$.
983: We discuss three situations:
984:
985: \paragraph{Case 2a:} $u_1$ is neither a reflex corner nor a bottom
986: corner of $A$. In this case, whenever the unfolding of $A$ reaches
987: $a_1$, the unfolding of $B$ proceeds as in
988: Fig.~\ref{fig:box-in-box1}a or Fig.~\ref{fig:box-in-box1}b,
989: depending on whether $x_b$ touches a left face of $B$ or not. In
990: either case, if $b_0$ is the face of $B$ extending ccw left of
991: $x_b$, rotate $b_0$ so that the unfolding of $B$ extends horizontal
992: to the right, recursively unfold $B$, then rotate the return path
993: $a_2$ about $x_b$ so that the unfolding of $A$ continues horizontal
994: to the right.
995:
996: \paragraph{Case 2b:} $u_1$ is a reflex corner of $A$. In this case,
997: the unfolding of $B$ proceeds as in Fig.~\ref{fig:box-in-box2}(a,
998: b). It is the existence of the vertical strip incident to $u_1$
999: (marked $t$ in Fig.~\ref{fig:box-in-box2}) that makes handling this
1000: case different from Case 2a above. Note however that the existence
1001: of $t$ implies the existence of at least two gridfaces on either the
1002: return path or the forward path for $B$, depending on whether $t$ is
1003: a left (Fig.~\ref{fig:box-in-box2}a) or a right
1004: (Fig.~\ref{fig:box-in-box2}b) strip of faces. In the former case the
1005: unfolding starts as in Case 2a (Fig.~\ref{fig:box-in-box2}a), and
1006: once the unfolding of $B$ returns to $x_b$, it continues along the
1007: return path up to $u_1$, then unfolds $t$ and orients it about $u_1$
1008: in such a way that the unfolding of $A$ continues horizontal to the
1009: right. The portion of the return path that extends above $u_1$
1010: ($a_{20}$ in Fig.~\ref{fig:box-in-box2}a) gets attached below the
1011: adjacent top face of $A$ ($a_3$ in Fig.~\ref{fig:box-in-box2}a).
1012: %
1013: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1014: \begin{figure}[htbp]
1015: \centering
1016: \begin{tabular}{c@{\hspace{0.2\linewidth}}c}
1017: \includegraphics[width=0.33\linewidth]{Figures/box-in-box.4.eps} &
1018: \includegraphics[width=0.27\linewidth]{Figures/box-in-box.3.eps} \\
1019: (a) & (b)
1020: \end{tabular}
1021: \caption{Unfolding $B$: $u_1$ is a corner vertex of $A$. (a) $t$ is
1022: a left strip (b) $t$ is a right strip.} \label{fig:box-in-box2}
1023: \end{figure}
1024: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1025: %
1026:
1027: If $t$ is a strip of right faces, then $t$ gets unfolded before
1028: descending along the forward path down to $B$, as in
1029: Fig.~\ref{fig:box-in-box2}b (note the vertical symmetry with the
1030: unfolding in Fig.~\ref{fig:box-in-box2}a); the unfolding of $B$ then
1031: proceeds as in Case 2a (Fig.~\ref{fig:box-in-box1}b).
1032:
1033: \paragraph{Case 2c:} $u_1$ is a bottom corner of $A$. In this case,
1034: the unfolding proceeds as in Fig.~\ref{fig:box-aligned-box}a or
1035: Fig.~\ref{fig:box-aligned-box}b, depending on whether $u_1$ is a
1036: right or a left bottom corner of $A$. The unfolding illustrated in
1037: Fig.~\ref{fig:box-aligned-box}a follows the familiar unfolding
1038: pattern: orient the face of $B$ ccw left of $x_b$ so that the
1039: unfolding of $B$ extends to the right; once the unfolding of $B$
1040: returns to $x_b$, follow the return path back to $A$ and unfold the
1041: face of $A$ cw to the right of $u_1$ ($a_3$ in
1042: Fig.~\ref{fig:box-aligned-box}a) so that the unfolding of $A$
1043: continues horizontal to the right.
1044: %
1045: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1046: \begin{figure}[htbp]
1047: \centering
1048: \begin{tabular}{c@{\hspace{0.06\linewidth}}c}
1049: \includegraphics[width=0.38\linewidth]{Figures/box-aligned-box.2.eps}&
1050: \includegraphics[width=0.44\linewidth]{Figures/box-aligned-box.1.eps}
1051: \\
1052: (a) & (b)
1053: \end{tabular}
1054: \caption{Unfolding $B$: $u_1$ is a bottom corner of $A$ (a)
1055: rightmost, and (b) leftmost face of $A$ vertically aligned with
1056: leftmost face of $B$.} \label{fig:box-aligned-box}
1057: \end{figure}
1058: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1059: %
1060: A similar pattern applies to the case illustrated in
1061: Fig.~\ref{fig:box-aligned-box}b, with one subtle difference meant to
1062: aid in unfolding front and back faces (discussed in
1063: Sec.~\ref{sec:faces}): in unfolding bands, we aim at maintaining the
1064: vertical position of the (forward, return) connecting paths in the
1065: unfolding, so that vertical strips hanging below these connecting
1066: paths could also hang vertically in the unfolding. More on this in
1067: Sec.~\ref{sec:faces}. Observe that $a_1$ and $a_2$ from
1068: Fig.~\ref{fig:box-aligned-box}a hang downward in the unfolding.
1069: However, if $a_2$ were to maintain its vertical position in the
1070: unfolding from Fig.~\ref{fig:box-aligned-box}b, it would not be
1071: possible to orient $a_3$ around $u_1$ so as to continue unfolding
1072: $A$ horizontal to the right of $a_2$. This is the reason for
1073: employing the face marked $t$ in the unfolding, so that vertical
1074: sides of $t$ remain vertical in the unfolding, and any face strip
1075: hanging below $t$ could be attached to $t$ vertically in the
1076: unfolding.
1077:
1078: We note that Fig.~\ref{fig:box-aligned-box} illustrates only the
1079: situation in which $x_b$ is incident to a left face of $B$, but it
1080: should not be difficult to observe that an exact same idea applies
1081: to any top pivot of $B$; the pivot position only affects the start
1082: and end unfolding position of $B$, and everything else remains the
1083: same.
1084:
1085: \paragraph{Case 3:} Pivot $x_b \not\in A \cap B$ and a connecting
1086: path for $B$ overlaps a connecting path for another descendant $C$
1087: of $A$. This case is slightly more complex, because it involves
1088: conflicts over the use of the connecting paths for $B$. The
1089: following three situations are possible.
1090:
1091: \paragraph{Case 3a:} The forward path $a_1$ for $B$ overlaps the return
1092: path for another descendant $C$ of $A$. This situation is
1093: illustrated in Fig.~\ref{fig:return}a.
1094: % since $x_c$ must lie on a left face of $C$.
1095: In this case, the unfolding $B$ starts as soon as the unfolding
1096: along the return path from $C$ to $A$ meets a face of $B$ incident
1097: to $x_b$ (face $b_0$ in Fig.~\ref{fig:return}a). At this point $B$
1098: gets recursively unfolded as before (see Fig.~\ref{fig:return}b),
1099: then the unfolding continues along the return path for $C$ back to
1100: $A$.
1101: %
1102: Fig.~\ref{fig:return}b shows face $a_1$ in two positions: we let
1103: $a_1$ hang down only if the next face to unfold is a right face of a
1104: child of $A$ (see the transition from $k_7$ to $c_5$ in
1105: Fig.~\ref{fig:ex.1}); otherwise, use $a_1$ in the upward position, a
1106: freedom permitted to us by rotating about vertex $u$.
1107:
1108: \begin{figure}[htbp]
1109: \centering
1110: \includegraphics[width=0.8\linewidth]{Figures/return.eps}
1111: \caption{(a) Return path for $C$ includes $c_{20}, c_{21}, a_1$;
1112: forward path for $B$ is $a_1$. (b) Unfolding for (a) (c) Return path
1113: for $B$ includes $a_{20}, a_{21}, c_1$; forward path for $C$ is
1114: $c_1$. (d) Return path for $B$ is $a_2$; forward path for $C$
1115: includes $a_2, c_{21}$. (e) Forward (return) paths are identical for
1116: $B$ and $C$.} \label{fig:return}
1117: \end{figure}
1118: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1119:
1120: \paragraph{Case 3b:}
1121: The return path $a_2$ for $B$ overlaps the forward path for another
1122: descendant $C$ of $A$. This situation is illustrated in
1123: Figs.~\ref{fig:return}c and~\ref{fig:return}d. The case depicted in
1124: Fig.~\ref{fig:return}c is similar to the one in
1125: Fig.~\ref{fig:return}a and is handled in the same manner. For the
1126: case depicted in Fig.~\ref{fig:return}d, notice that $a_2$ is on
1127: both the forward path for $C$ and the return path for $B$. However,
1128: no conflict occurs here: from $a_2$ the unfolding continues downward
1129: along the forward path to $C$ and unfolds $C$ next.
1130:
1131: \paragraph{Case 3c:}
1132: The forward path $a_1$ for $B$ overlaps the forward path for another
1133: descendant $C$ of $A$. This situation occurs when either $B$ or
1134: another band $C$ incident to $B$ is a dent, as illustrated in
1135: Figs.~\ref{fig:return}e. Again, no conflict occurs here: the
1136: recursive unfolding of $C$, which returns to $x_c = x_b$, is
1137: followed by the recursive unfolding of $B$, which returns to $x_b$,
1138: then the unfolding continues along the return path for $B$ ($C$)
1139: back to $A$.
1140:
1141: \medskip
1142: \noindent
1143: Fig.~\ref{fig:ex.1} shows a more complex example that
1144: emphasizes these subtle unfolding issues.
1145: Note that the return path $k_1, k_8, k_9$ for $B$ overlaps the
1146: forward path $k_9$ for $C$; and the return path
1147: $k_5, k_6$ and $k_7$ for $G$ overlaps the forward path
1148: for $H$, which includes $k_7$.
1149: The unfolding produced by the method described in this section
1150: is depicted in Fig.~\ref{fig:ex.1}(b).
1151: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1152: \begin{figure}[htbp]
1153: \centering
1154: \includegraphics[width=0.98\linewidth]{Figures/ex.eps}
1155: \caption{(a) An example. (b) The vertex-unfolding.}
1156: \label{fig:ex.1}
1157: \end{figure}
1158: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1159:
1160: \subsection{Attaching Front and Back Faces to the Net}
1161: \label{sec:faces} Front and back faces of a slab are ``hung'' from
1162: bands following the basic idea of the illumination model discussed
1163: in Sec.~\ref{sec:3x1front.back}. There are three differences,
1164: however, caused by the employment of some front and back gridfaces
1165: for the connecting paths, which can block illumination from the
1166: bands.
1167: \begin{enumerate}
1168: \squeezelist
1169: \item We illuminate both upward and downward from each band:
1170: each $x$-edge illuminates the vertical face it attaches to. This
1171: alone already suffices to handle the example in Fig.~\ref{fig:ex.1}:
1172: all vertical faces are illuminated downward from the top of $A$,
1173: upward from the bottom of $A$, and upward from the top of $B$.
1174:
1175: \item Some gridfaces still might not be illuminated by any bands,
1176: because they are obscured both above and below by paths in
1177: connecting faces. Therefore we incorporate the connecting faces
1178: into the band for the purposes of illumination. For example, in
1179: Fig.~\ref{fig:box-aligned-box}a, $a_2$ illuminates downward and
1180: $a_1$ illuminates upward. The reason this works is that, with one
1181: exception, each vertical connecting strip remains vertical in the
1182: unfolding, and so illuminated strips can be hung safely without
1183: overlap.
1184:
1185: \item The one exception is the forward connecting
1186: path $a_1$ in Fig.~\ref{fig:box-aligned-box}b. This paths unfolds
1187: ``on its side,'' i.e., what is vertical in 3D becomes horizontal in
1188: 2D. Note, however, that the face $x$ below each of these paths (a
1189: face always present), is oriented vertically. We thus consider $x$
1190: to be part of the connecting path for illumination purposes,
1191: permitting the strip below to be hung under $x$.
1192: \end{enumerate}
1193: Because our cases are exhaustive, one can see now that all gridfaces
1194: of (say) the front face of $A$ are either illuminated by $A$, or by
1195: some descendant of $A$ on the front face, augmented by the
1196: connecting paths as just described. (In fact every gridface is
1197: illuminated twice, from above and below.) Hanging the strips then
1198: completes the unfolding.
1199:
1200: %------------------
1201: %%%JOR begin 4 July
1202: \subsection{Algorithm Complexity}
1203: Because there are so few unfolding algorithms, that there is
1204: \emph{some} algorithm for a class of objects is more important than
1205: the speed of the algorithm. Nevertheless, we offer an analysis of
1206: the complexity of our algorithm. Let $n$ be the number of corner
1207: vertices of the polyhedron, and $N=O(n^2)$ the number of gridpoints.
1208: The vertex grid can be easily constructed in $O(N)$ time, leaving a
1209: planar surface map consisting of $O(N)$ gridpoints, gridedges, and
1210: gridfaces. The computation of connecting rays
1211: (Sec.~\ref{sec:spanning.tree}) requires determining the components
1212: of $A \cap P^+$ and $A \cap P-$, for each $A$. This can be easily
1213: read of from the planar map by running through the $n$ vertices of
1214: each of the $O(n)$ bands and determining, for each vertex, whether
1215: it belongs to $P^+$ or $P^-$.
1216: %a common vertex
1217: %between bands $A$ and $B$, or, if $A \cap B = \emptyset$,
1218: %determining whether $r_i(A) \subset r_i(B)$ or $r_i(A) \supset
1219: %r_i(B)$. The former can be easily read off in $O(n^2)$ from the
1220: %planar map by running through the $n$ vertices and noting which of
1221: %the $O(n)$ bands share a vertex. The latter can be accomplished with
1222: %$O(n)$ ray shooting queries.
1223: Each of the $O(n)$ band components shoots a vertical ray from one
1224: corner vertex, in a 2D environment (the plane $Y_i$) of $n$
1225: noncrossing orthogonal segments. Determining which band a ray hits
1226: involves a ray shooting query.
1227: %A connecting ray determines an arc of $G_b$, with the band nesting
1228: %implicit.
1229: %
1230: Although an implementation would employ an efficient data structure,
1231: perhaps BSP trees~\cite{py-obspo-92}, for complexity purposes the
1232: naive $O(n)$ query cost suffices to lead to $O(n^2)$ time to
1233: construct $G_r$. Selecting pivots (Sec.~\ref{sec:pivots}) involves
1234: 2-coloring $G_r$ in $O(n)$ time, and computing the unfolding tree
1235: $T_U$ in a breadth-first traversal of $G_r$, which takes $O(n)$
1236: time. Unfolding bands (Sec.~\ref{sec:unfolding.bands}) involves a
1237: depth-first traversal of $T_U$ in $O(n)$ time, and laying out the
1238: $O(N)$ gridfaces in $O(N)$ time. Thus, the algorithm can be
1239: implemented to run in $O(N) = O(n^2)$ time.
1240:
1241: \section{Further Work}
1242: Extending these algorithms to arbitrary genus orthogonal polyhedra
1243: remains an interesting open problem. Holes that extend only in the
1244: $x$ and $z$ directions within a slab seem unproblematic, as they
1245: simply disconnect the slab into several components. Holes that
1246: penetrate several slabs (i.e, extend in the $y$ direction) present
1247: new challenges. One idea to handle such holes is to place a virtual
1248: $xz$-face midway through the hole, and treat each half-hole as a
1249: dent (protrusion).
1250: %These ideas require new
1251: %techniques for building the unfolding tree
1252: %and potentially new algorithmic work.
1253:
1254: \subsection*{Acknowledgements}
1255: %The third author was supported by NSF Distinguished Teaching
1256: %Scholars DTS award DUE-0123154.
1257: %\xxx[JOR]{NSF support in another footnote.}
1258: We thank the anonymous referees
1259: on~\cite{dfo-gvuop-06} for their careful reading and insightful
1260: comments.
1261: %We also thank the participants of the DIMACS Reconnect
1262: %July 2004 Workshop held at St. Mary's College, California, for
1263: %helpful discussions.
1264:
1265: %\small
1266: %\newpage %JOR: To separate the bibliography from the 10-page body of paper
1267:
1268: \bibliographystyle{alpha}
1269: \bibliography{VU} %Change (eventually)
1270:
1271: \newpage
1272: \section{Appendix: Proof of Lemma~\protect\ref{lem:Gb.connected0} (Connectedness of $G_b$)}
1273: \label{sec:Gb.connected}
1274: %We distinguish three types of connectivity, all geometric
1275: %connectivity concepts. Two subsets of $P \subset Y_i$ are
1276: %\emph{front-connected} if there are points in each that are
1277: %connected by a path that lies wholly in $P-$, and
1278: %\emph{back-connected} if connected by a path that lies wholly in
1279: %$P+$. \xxx[JOR]{We don't seem to use front- and back-connected
1280: %anymore?}
1281:
1282: Two subsets of $P \subset Y_i$ are \emph{path-connected}, or just
1283: \emph{connected}, if there are points in each that are connected by
1284: a path that lies in $P$. We need some notation to describe the
1285: portions of $r(A)$ that are relevantly connected to each band $A$.
1286: For a protrusion $A$, let $r_c(A)$ be the subset of $r(A)$
1287: (cf.~Sec.~\ref{sec:defs}) that is path-connected to $A$ via paths
1288: that do not cross any bands. For a dent $B$, let $r_c(B)$ be the
1289: boundary of $B$ plus the subset of $r(B)$ that is both
1290: path-connected to $B$ via paths that do not cross any bands, and is
1291: not part of $r_c(A)$, for some protrusion $A$. Consider for example
1292: Figure~\ref{fig:p-d0}b. For protrusion $B'$, $r_c(B')$ consists of
1293: the boundary rim of $B'$ and the portion of the back face of $B'$
1294: that overhangs dent $B$. For dent $B$, $r_c(B)$ consists only the
1295: boundary of $B$, even though the overhanging portion of $B'$ can be
1296: reached from $B$ without crossing any bands, because that is part of
1297: $r_c(B')$. In Figure~\ref{fig:d-d}a however, the portion of the
1298: front face of $A'$ enclosed by $B$ belongs to $r_c(B)$, not to
1299: $r_c(A')$.
1300: %Dents $B$ for which $r_c(B)$ contains points interior to
1301: %$B$ can also be viewed as protrusions, a view we will not explicitly
1302: %adopt in this proof.
1303: %We define $r_c(A)$ to be the subset of $r(A)$
1304: %path-connected to $A$. This definition implies that $r_c(A) =
1305: %\partial A$ for a dent $A$, because no point in the interior of
1306: %$r(A)$ is connected to $A$ in $P$.
1307:
1308: The genus-zero assumption implies that, for protrusion $A$ and dent
1309: $B$ on opposite sides of $Y_i$ such that $r_c(A) \cap r_c(B)$ is
1310: nonempty, it must be that $A \cap B$ is nonempty (cf.
1311: Figs.~\ref{fig:p-d}). Define
1312:
1313: $$
1314: r_c(A,B) = \left\{
1315: \begin{tabular}{ll}
1316: $A \cap B$, & if $A \cap B \neq \emptyset$, and at least one of $A$ and $B$ is a dent \\
1317: $r_c(A) \cap r_c(B)$ & otherwise.
1318: \end{tabular}
1319: \right.
1320: $$
1321:
1322: This definition is intended to identify gridpoints on either $A$ or
1323: $B$ from which rays are issued by the ray-pair generation algorithm
1324: (Sec.~\ref{sec:ray-pairs}). The reason for treating intersecting
1325: dents and protrusions differently is a subtle one, and is captured
1326: by Fig.~\ref{fig:p-d0}b: $B$ is a dent behind $Y_i$ and $B'$ is a
1327: protrusion in front of $Y_i$; $r_c(B')$ is the piece of the back
1328: face of $B'$ enclosed by $B$; $u$ is a highest gridpoint in $B \cap
1329: B'$, while $w$ is a highest gridpoint in $r_c(B) \cap r_c(B')$; $u$
1330: is a potential ray basepoint, while $w$ is not. The above definition
1331: eliminates points such as $w$ from the set $r_c(A, B)$.
1332:
1333: Our connectivity proof for $G_b$ proceeds as follows. In general,
1334: there are a number of disconnected maximal components $P_1, P_2,
1335: \ldots$ of $P$, with $P = P_1 \cup P_2 \cup \cdots$. The bands
1336: incident to each of these are ray-connected to each other via planes
1337: other than $Y_i$. We first argue that, to prove that $G_b$ is
1338: ray-connected, it suffices to prove that each $P_j$ is
1339: ray-connected. Remove from $O$ all the slabs $S_1, S_2, \ldots$
1340: incident to $Y_0$. Establish that the bands in the resulting object
1341: $O'$ are ray-connected, via induction. Now put back the slabs. Each
1342: $S_j$ corresponds to a component $P_j$, and we are assuming we can
1343: establish that all bands incident to $P_j$ are ray-connected to one
1344: another. This along with the fact that $O$ itself is connected
1345: implies that all bands are ray-connected. Henceforth we concentrate
1346: on one such connected component $P_j$, call it $Q \subset Y_i$ for
1347: succinctness. Let $\C$ be the collection of all bands that intersect
1348: $Q$. Then $\displaystyle\cup_{A \in \C} r_c(A) = Q$. The idea of the
1349: connectedness proof is that the bands get connected in upward
1350: chains, and ultimately to each other through ``common ancestor''
1351: higher bands. We choose to prove it by contradiction, arguing that a
1352: highest disconnected component cannot exist.
1353:
1354: \begin{lemma}
1355: All bands in $\C$ are ray-connected. Furthermore, if one arbitrary
1356: ray in each ray-pair is discarded, $C$ remains ray-connected.
1357: \label{lem:connected}
1358: \end{lemma}
1359: \begin{proof}
1360: For the purpose of contradiction, assume that not all bands in $\C$
1361: are ray-connected. Let $\C_1, \C_2, \ldots$ be the distinct maximal
1362: subsets of $\C$ that are ray-connected. Let $Q_j = \cup_{A \in \C_j}
1363: r_c(A)$. Then $Q = \cup_j Q_j$. Since $Q$ is connected, the subsets
1364: $Q_j$ are not disjoint, in that for every $Q_j$ there is an $Q_k$
1365: such that $Q_j \cap Q_k$ is nonempty. By the observation above, this
1366: means that
1367: %
1368: \[
1369: Q_{jk} = \cup_{A \in \C_j, B \in C_k} ~r_c(A, B)
1370: \]
1371: %
1372: is also nonempty. Let $j$ and $k$ be such that $Q_{jk}$ contains a
1373: {\em highest} $x$-gridedge (gridpoint, if $Q_{jk}$ contains only
1374: isolated points) among all $Q_{jk}$. Let $u$ be the leftmost highest
1375: gridpoint in $Q_{jk}$. Let $A \in \C_j$ and $B \in \C_k$ be such
1376: that $u \in r_c(A, B)$.
1377:
1378: We have thus identified two bands $A$ and $B$, ray-disconnected
1379: because in different components of $Q$, which contribute this
1380: highest gridpoint $u$ in the ``highest'' intersection $Q_{jk}$. We
1381: now examine in turn the four protrusion/dent possibilities for
1382: these two bands.
1383:
1384: \medskip
1385: \noindent {\bf Case 1.} $A$ and $B$ are both protrusions on opposite
1386: sides of $Y_i$. Assume w.l.o.g that $A$ is behind $Y_i$, $B$ is in
1387: front of $Y_i$, and $u$ is on $B$ (as depicted in
1388: Fig.~\ref{fig:p-p-opp}).
1389: %
1390: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1391: \begin{figure}[htbp]
1392: \centering
1393: \begin{tabular}{c@{\hspace{0.06\linewidth}}c@{\hspace{0.06\linewidth}}c}
1394: \includegraphics[width=0.25\linewidth]{Figures/p-p-opp.eps} &
1395: \includegraphics[width=0.25\linewidth]{Figures/p-p-opp2.eps} &
1396: \includegraphics[width=0.25\linewidth]{Figures/p-p-opp3.eps} \\
1397: (a) & (b)
1398: \end{tabular}
1399: \caption{Case 1: $A$ and $B$ are both protrusions on opposite sides
1400: of $Y_i$ (a) $D$ is a protrusion (b) $D$ is a dent with a vertical
1401: side incident to $u$ (c) $D$ is a dent with a bottom edge incident
1402: to $u$.} \label{fig:p-p-opp}
1403: \end{figure}
1404: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1405: %
1406: We discuss two subcases:
1407: \begin{enumerate}
1408: \item[a.] $u$ is on a top edge of $B$ (Figs.~\ref{fig:p-p-opp}(a,b)).
1409: Then our ray-pair algorithm generates a ray-pair $(r, r')$, with $r$
1410: incident to $u$ and $r'$ incident to the gridpoint $u'$ cw from $u$.
1411: Consider $r$ (the analysis is similar for $r'$). If $r$ hits $A$,
1412: then in fact $A$ and $B$ are ray-connected, contradicting the fact
1413: that $A$ and $B$ belong to different ray-connected components of
1414: $\C$. So let us assume that $r$ hits another band $D \in C_{\ell}$.
1415: Fig.~\ref{fig:p-p-opp}a(b) illustrates the situation when $D$ is a
1416: protrusion (dent). If $D \in \C_j$, then $D$ and $A$ are
1417: ray-connected in $C_j$, and since $B$ and $D$ are ray-connected, it
1418: follows that $B$ and $A$ are ray-connected, a contradiction. So
1419: assume that $D \in \C_{\ell}$, with $\ell \neq j$. But then $r_c(A,
1420: D)$ (and implicitly $Q_{j\ell}$) has a gridpoint higher than $u$,
1421: contradicting our choice of $j$, $k$ and $u$.
1422:
1423: \item[b.] $u$ is on a vertical (left, right) edge of $B$
1424: (Fig.~\ref{fig:p-p-opp}c). Then $u$ must be at the intersection
1425: between a dent $D$ and $B$, meaning that $D \cap r_c(B)$ is
1426: nonempty. Furthermore, $r_c(A, D)$ has a gridpoint higher than $u$,
1427: meaning that $D \in G_j$. Let $u_1$ be the leftmost among the
1428: highest gridpoints of $D \cap r_c(B)$. Then our ray-pair algorithm
1429: generates a ray-pair $(r, r')$ from $u_1$ and its right neighbor
1430: $u'_1$. Consider $r$ (the analysis is similar for $r'$). If $r$ hits
1431: $B$, then $B$ is ray-connected to $D$, which is ray-connected to
1432: $A$, a contradiction. If $r$ hits a band $E$ other than $D$, then it
1433: must be that $D \in C_k$, since $r_c(B,E)$ has a gridpoint higher
1434: than $u_1$, which is no lower than $u$. This means that $B$ is
1435: ray-connected to $E$, which is ray-connected to $D$, which is
1436: ray-connected to $A$, a contradiction.
1437: \end{enumerate}
1438:
1439: \medskip
1440: \noindent {\bf Case 2.} $A$ is a protrusion and $B$ is a dent, both
1441: on a same side of $Y_i$. The case when $A$ and $B$ are both in
1442: front of $Y_i$ (illustrated in Fig.~\ref{fig:p-d0}a) is identical to
1443: Case 1 above, once one conceptually pops out $B$ into a protrusion.
1444: We now discuss the case when $A$ and $B$ are both behind $Y_i$.
1445:
1446: Assume first that $r_c(A, B)$ contains no top edges of $B$, as
1447: depicted in Figure~\ref{fig:p-d0}b. Let $B'$ be a protrusion in
1448: front of $Y_i$ covering the top of $B$. Then $r_c(A,B')$ and
1449: $r_c(B',B)$ each contains a gridpoint higher than $u$. The following
1450: two contradictory observations settle this case:
1451: \begin{enumerate}
1452: \item[a.] It must be that $B' \not\in \C_k$; otherwise $Q_{jk}$ would contain
1453: a gridpoint in $r_c(A,B')$ higher than $u$.
1454:
1455: \item[b.] If $B' \in C_{\ell}$, then it must be that $\ell = k$; otherwise
1456: $Q_{\ell k}$ would contain a gridpoint in $r_c(B',B)$ higher than
1457: $u$.
1458: \end{enumerate}
1459: If $r_c(A,B)$ contains at least one top gridedge of $B$, then
1460: arguments similar to the ones used for the case illustrated in
1461: Fig.~\ref{fig:p-p-opp}a (conceptually popping $B$ to become a
1462: protrusion) settle this case as well.
1463: %
1464: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1465: \vspace{-1em}
1466: \begin{figure}[htbp]
1467: \centering
1468: \begin{tabular}{c@{\hspace{0.15\linewidth}}c}
1469: \includegraphics[width=0.32\linewidth]{Figures/p-d-opp3.eps} &
1470: \includegraphics[width=0.24\linewidth]{Figures/p-d-same.eps} \\
1471: (a) & (b)
1472: \end{tabular}
1473: \caption{Case 2: $A$ is a protrusion and $B$ is a dent (a) behind
1474: $Y_i$ (b) in front of $Y_i$.} \label{fig:p-d0}
1475: \end{figure}
1476: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1477:
1478: \medskip
1479: \noindent {\bf Case 3.} $A$ is a protrusion and $B$ is a dent on
1480: opposite sides of $Y_i$ (see Fig.~\ref{fig:p-d}). Let $B'$ be the
1481: protrusion in front of $Y_i$ enclosing $B$.
1482: %Then the ray-pair algorithm shoots a ray upwards from a
1483: %gridpoint on $A \cap r(B)$ or $A \cap r(B')$, depending on
1484: %whether $u$ is in $A \cap B$ or not.
1485: We discuss two subcases:
1486: \begin{enumerate}
1487: \item[a.] $r_c(A)$ contains a top edge of $B$
1488: (see Fig.~\ref{fig:p-d}a). This means that $r_c(A) \cap r(B)$ is
1489: nonempty, and the ray-pair algorithm shoots a ray-pair $(r, r')$
1490: upward from the endpoints of a highest gridedge $\{u_1, u'_1\}$ of
1491: $A \cap r(B)$. Consider ray $r$ (the analysis is similar for $r')$.
1492: If $r$ hits $B$, then $A$ and $B$ are in fact ray-connected, a
1493: contradiction. If $r$ hits a band $D$ other than $B$, then arguments
1494: similar to the ones for the case illustrated in
1495: Fig.~\ref{fig:p-p-opp}a (Case 1) lead to a contradiction.
1496: %
1497: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1498: \vspace{-1em}
1499: \begin{figure}[htbp]
1500: \centering
1501: \begin{tabular}{c@{\hspace{0.15\linewidth}}c}
1502: \includegraphics[width=0.25\linewidth]{Figures/p-d-opp.eps} &
1503: \includegraphics[width=0.25\linewidth]{Figures/p-d-opp2.eps} \\
1504: (a) & (b)
1505: \end{tabular}
1506: \caption{Case 3: $A$ is a protrusion behind $Y_i$; $B$ is a dent in
1507: $B'$, both in front of $Y_i$.} \label{fig:p-d}
1508: \end{figure}
1509: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1510: %
1511:
1512: \item[b.] $r_c(A)$ contains a bottom edge of $B$.
1513: This case is symmetrical to the one above in that a ray upward from
1514: a gridpoint of $B \cap r(A)$ hits $A$, thus ray-connecting $A$ and
1515: $B$.
1516: %
1517: \item[c.] $r_c(A)$ contains neither a top nor a bottom
1518: edge of $B$ (see Fig.~\ref{fig:p-d}b). Arguments similar to the ones
1519: used in Case 1 (protrusions on opposite sides of $Y_i)$ show that
1520: $A$ and $B'$ are ray-connected. That $B$ and $B'$ are ray-connected
1521: follows immediately from the fact that $r_c(B, B')$ has a gridpoint
1522: higher than $u$ ($w$ in Fig.~\ref{fig:p-d}b). These together imply
1523: that $A$ and $B$ are ray-connected, a contradiction.
1524: \end{enumerate}
1525: %
1526: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure Begin
1527: \begin{figure}[htbp]
1528: \centering
1529: \begin{tabular}{c@{\hspace{0.15\linewidth}}c}
1530: \includegraphics[width=0.32\linewidth]{Figures/d-d-opp.eps} &
1531: %\includegraphics[width=0.25\linewidth]{Figures/d-d-opp3.eps} &
1532: \includegraphics[width=0.25\linewidth]{Figures/d-d-opp2.eps} \\
1533: (a) & (b)
1534: \end{tabular}
1535: \caption{Case 4: $A$ is a dent behind $Y_i$, enclosed within
1536: protrusion $A'$. $B$ is a dent in front of $Y_i$, enclosed within
1537: protrusion $B'$.} \label{fig:d-d}
1538: \end{figure}
1539: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Figure End
1540: %
1541:
1542: \medskip
1543: \noindent {\bf Case 4.} $A$ and $B$ are both dents: $A$ is a dent
1544: behind $Y_i$ enclosed within protrusion $A'$, and $B$ is a dent in
1545: front of $Y_i$ enclosed within protrusion $B'$ (see
1546: Fig.~\ref{fig:d-d}). The genus-zero assumption implies that $r(A)
1547: \cap r(B)$ is a polygonal region of positive area. Since $u \in
1548: r_c(A) \cap r_c(B)$, we have that $u \in r(A) \cap r(B)$. Let
1549: $\beta$ be the boundary segment of $r(A) \cap r(B)$ incident to $u$.
1550: We discuss two subcases:
1551: \begin{enumerate}
1552: \item[a.] $\beta \subset P^-$, meaning that $\beta \subset A$
1553: (see Fig.~\ref{fig:d-d}a).
1554:
1555: An analysis similar to the one for the case illustrated in
1556: Fig.~\ref{fig:p-d}a (Case 3) shows that $A$ and $B$ are
1557: ray-connected, a contradiction.
1558:
1559: \item[b.] $\beta \subset P^+$, meaning that $\beta \subset B$
1560: (see Fig.~\ref{fig:d-d}b). We show that $A$ and $A'$ are
1561: ray-connected, $B$ and $B'$ are ray-connected, and $A'$ and $B'$ are
1562: ray-connected. This implies that $A$ and $B$ are ray-connected, a
1563: contradiction. First note that the ray-pair algorithm shoots a
1564: ray-pair $(r, r')$ upward from a highest gridedge on $\beta$. An
1565: analysis similar to the one for the case illustrated in
1566: Fig.~\ref{fig:p-p-opp}a (conceptually popping $B$ to become a
1567: protrusion) shows that $r$ and $r'$ must hit $B$, thus
1568: ray-connecting $B$ and $B'$. That $A$ and $A'$ are ray-connected
1569: follows immediately from the fact that $r_c(A, A')$ has a gridpoint
1570: higher than $u$, and similarly for $A'$ and $B'$.
1571: \end{enumerate}
1572: Having exhausted all possible cases, the connectivity claim of the
1573: lemma is established. Because the proof for each of these cases goes
1574: through by considering either the first or second ray of a ray-pair,
1575: retaining either ray suffices to preserve connectivity. Thus the
1576: second claim of the lemma is established as well.
1577: \end{proof}
1578:
1579: \end{document}
1580: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1581: