\documentclass{seminar}

\usepackage{amsmath} 
\usepackage{amssymb}
\usepackage{fancybox}
\usepackage{semcolor}
\usepackage{epsfig}
\usepackage{xspace}
\usepackage{rotating}

\begin{document}

 
\slidewidth 10in
\slideheight 7in
 
\newcommand{\heading}[1]{ \begin{center}
    \large\bf \fbox{ #1}
  \end{center} \vspace{1ex minus 1ex}}

\pagestyle{empty}
\slideframe{none}


\begin{slide}

\huge

\begin{center}
Representing Polyhedra\\

\vspace{3ex}

\large
Fumei Lam
\end{center}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
\huge {\sf Outline}
\end{center}

\vspace{3ex}

\begin{list}{}{}

  \item Goal:  Develop a representation that fully captures all 
topological properties of subdivisions (2D, 3D)

\vspace{4ex}

  \begin{list}{}{}
	\item Doubly Connected Edge List
	\item Winged Edge
	\item Quad Edge
    	\begin{list}{}{}
	    \item Application: Voronoi diagrams and Delaunay triangulations
        \end{list}
	\item Facet Edge
   \end{list}
\end{list}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}
\item Application-specific data

  \begin{itemize}
   \item Geometric Information
	\begin{list}{}{} 
 	  \item Vertex coordinates (edge lengths, face normals, ...)
	\end{list}
   \item Attribute Information
	\begin{list}{}{}
	  \item Color, Temperature/Pressure, Population, other statistics
	\end{list}
  \end{itemize}


\begin{itemize}

\item Applications
   
   \begin{list}{}{}
      \item Partitioning: nearest neighbor (Voronoi Diagram/ Delaunay 
Triangulation)
   \end{list}

\end{itemize}


\end{list}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



\begin{slide}

\twocolumn

\begin{center}
{\sf Doubly-Connected Edge List (Eastman, 1982)}
\end{center}


\begin{list}{}{}
        \item Every edge is represented by two half-edge structures
        \item Pointers: Vertex, Sym, and Next
\end{list}

\begin{flushright}
 \begin{figure}[!htbp]
      \leavevmode
      \scalebox{.25}{\includegraphics{figures/halfedge.ps}}
  \end{figure}
\end{flushright}

\vspace*{-36ex}
\begin{flushleft}
\begin{list}{}{}
        \item Sym points to symmetric half-edge
                \begin{itemize}
                   \item Same Edge
                   \item Opposite Vertex
                   \item Opposite Face
                \end{itemize}
      \item Next points to half-edge \\ 
Counter-Clockwise around Face on left
                \begin{itemize}
                   \item Same Face
                   \item CCW Vertex around Face on left
                \end{itemize}
\end{list}
\end{flushleft}
     
\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}

\item Vertex points to an incident edge
\item Face points to edge on its perimeter

        \item Data
                \begin{itemize}
                    \item Geometric Information in Vertices
                    \item Topological Information in half-edges
                \end{itemize}


          \item Time Complexity

                \begin{itemize}
                \item Time is linear in the amount of information
gathered
                \item Independent of global complexity
                \end{itemize}
\end{list}

\end{slide}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
{\sf Winged Edge Data Structure}
\end{center}

Planar graph (subdivision of a sphere) 


 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.2}{\includegraphics{figures/planar.ps}}
    \end{center}
  \end{figure}



\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}

\begin{list}{}{}

\item Components of a set of Polyhedra
	\begin{itemize}
	\item Bodies, Faces, Edges, Vertices
	\item Each body contains ring of faces, ring 
of edges, ring of vertices \\
	
	\end{itemize}

\item Each vertex points to one of its adjacent edges
\item Each face points to one of the edges on its perimeter (boundary)

\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}

\item Each edge points to
	\begin{itemize}
	\item two neighboring faces and defining vertices
	\item four immediate neighboring edges about its face perimeter 
(``wings" of the edge)
	\end{itemize}


$$\begin{array}{cc}
      {\epsfig{file=figures/wing-1.ps,width=2in}} &
      \scalebox{.5}{\includegraphics{figures/wing-0.ps}}
\end{array}$$

\begin{tabular}[t]{ccccccccc}
\mbox{Edge} & \multicolumn{2}{c}{\mbox{Vertices}}  & 
\multicolumn{2}{c}{\mbox{Faces}} & \multicolumn{2}{c}{\mbox{Left Traverse}} &  
\multicolumn{2}{c}{\mbox{Right Traverse}} \\  
\mbox{Name} & \mbox{Start} & \mbox{End} & \mbox{Left} & \mbox{Right} & 
\mbox{Pred} & \mbox{Succ} & \mbox{Pred} & \mbox{Succ} \\
a & Y & X & 1 & 2 & b & c & d & e
\end{tabular}

\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}

\vspace*{-2ex}

\item Topology stored in edge nodes, \\
geometry stored in vertex nodes 

\vspace*{-3ex}

\begin{flushleft}
\item Operations
	\begin{list}{}{}
	\item Enumerate vertices, edges, faces
	\item Sequential Access
	\end{list}
\end{flushleft}
\end{list}

\vspace*{-28ex}
\begin{flushright}
\begin{figure}[!htbp]
      \leavevmode
      \scalebox{.5}{\includegraphics{figures/wing-2.ps}}
  \end{figure}
\end{flushright}

\vspace{1ex}

\begin{tabular}[t]{ccccccccc}
\mbox{Edge} & \multicolumn{2}{c}{\mbox{Vertices}}  &
\multicolumn{2}{c}{\mbox{Faces}} & \multicolumn{2}{c}{\mbox{Left Traverse}} &
\multicolumn{2}{c}{\mbox{Right Traverse}} \\
\mbox{Name} & \mbox{Start} & \mbox{End} & \mbox{Left} & \mbox{Right} &
\mbox{Pred} & \mbox{Succ} & \mbox{Pred} & \mbox{Succ} \\
a & A & D & 3 & 1 & e & f & b & c\\
b & A & B & 1 & 4 & c & a & f & d\\
c & B & D & 1 & 2 & a & b & d & e\\
d & B & C & 2 & 4 & e & c & b & f\\
e & C & D & 2 & 3 & c & d & f & a\\
f & A & C & 4 & 3 & d & b & a & e\\
 
\end{tabular}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
{\sf Euler Operators}
\end{center}

\begin{itemize}

\item Modify polyhedron by adding or deleting vertices, edges and faces.

\item Euler formula\\

$$V - E + F = 2$$ 

\begin{center}
$V$ vertices  \hspace{3ex}  $E$ edges \hspace{3ex} $F$ faces
\end{center}

\item Operators edit polyhedron so that Euler formula is always satisfied

\item Operators: \\
Make (Mxy) group  \\
Kill (Kxy) group \\
x, y edare elements of the model (e.g., a vertex, edge, face)

\end{itemize}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{itemize}

\item (Mantyla, 1984) Every topologically valid polyhedron can be
constructed from an initial polyhedron by a finite sequence of Euler
operators

\end{itemize}

\begin{center}
\begin{tabular}[t]{ccccc}
\mbox{Operator Name} & \mbox{Meaning} & V & E & F\\
\mbox{MEV} & \mbox{Make edge and vertex} & +1 & +1 & \\
\mbox{MFE} & \mbox{Make face and edge} &  & +1 & +1 \\
\mbox{KEV} & \mbox{Kill edge and vertex} & -1 & -1 & \\      
\mbox{KFE} & \mbox{Kill face and edge} &  & -1 & -1 
\end{tabular}
\end{center}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

$$\begin{array}{cccccc}    
\mbox{Operator Name} & \mbox{Meaning} & V & E & F & Result\\
\mbox{MFV} & \mbox{Make a face and a vertex} & +1 & & +1 & 
{\scalebox{.5}{\includegraphics{figures/msfv.ps}}}\\
\mbox{MEV} & \mbox{Make an edge and a vertex} & +1 & +1 & & 
{\scalebox{.5}{\includegraphics{figures/mev-2.ps}}} \\
\mbox{MEV} & \mbox{Make an edge and a vertex} & +1 & +1 & &
  \scalebox{.5}{\includegraphics{figures/mev-3.ps}}\\
 \mbox{MEV} & \mbox{Make an edge and a vertex} & +1 & +1 & &
  \scalebox{.5}{\includegraphics{figures/mev-4.ps}}
\end{array}$$ 

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

$$\begin{array}{cccccc}
\mbox{Operator Name} & \mbox{Meaning} & V & E & F & Result\\
\mbox{MFE} & \mbox{Make a face and an edge} & & +1 & +1 &
  \scalebox{.5}{\includegraphics{figures/mfe-5.ps}}\\
 \mbox{MFE} & \mbox{Make a face and an edge} & & +1 & +1 &
  \scalebox{.5}{\includegraphics{figures/mfe-6.ps}}\\
\mbox{MFE} & \mbox{Make a face and an edge} & & +1 & +1 &
 \scalebox{.5}{\includegraphics{figures/mfe-7.ps}}
\end{array}$$


\end{slide}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center} Examples of subdivisions \end{center}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.5}{\includegraphics{scans/subdivisions.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
{\sf QuadEdge Data Structure (Guibas and Stolfi, 1985)}
\end{center}

\begin{list}{}{}

  \item Orientation: two ways of defining local clockwise rotation
	\begin{itemize} 
	\item Oriented element of subdivision is an element $x$ 
together with an orientation of a disk containing $x$
	\end{itemize}
	
  \item Direction: 
	\begin{itemize} \item Directed edge is an edge together with a 
direction along it
	\end{itemize}

  \item Four ways to choose orientation and direction
        \begin{itemize}
        \item Bug Demo
        \end{itemize}

\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\vspace*{-3ex}

\begin{list}{}{}
    
  \item Given an oriented and directed edge, define
        \begin{itemize}
        \item \emph{e Org, e Dest} vertex of origin, vertex
of destination
        \item $e$ \emph{Left}, $e$ \emph{Right} left face, right face
        \item Elements \emph{e Org, e Left, e Right, e Dest} given
orientation that agrees locally with orientation of $e$   
        \end{itemize}  

\end{list}
   
 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.5}{\includegraphics{figures/orgdest.ps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}

  \item Each vertex has ring of edges (perimeter)
   	\begin{itemize}
	\item \emph{e Onext} next counterclockwise edge with same origin
        \end{itemize}
\end{list}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.8}{\includegraphics{scans/vring.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}


 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.8}{\includegraphics{scans/enext.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}

\begin{list}{}{}
        \item Each face has ring of edges 
	\begin{itemize}
	\item \emph{e Lnext} next counterclockwise edge with same left face
	\end{itemize}
\end{list}

  
 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.5}{\includegraphics{scans/quadedge.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}
 \item Edge Functions: \\


	\emph{Rot}: Bug rotates 90 \\ degrees 

        \emph{Sym}: Bug rotates \\ back to front \\

        \emph{Flip}: Bug flips \\ up-side down \\


\vspace*{-30ex}
\begin{flushright}
 \begin{figure}[!htbp]
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/edgefcns.eps}}
  \end{figure}
\end{flushright}

\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


        
\begin{slide}
        
\begin{list}{}{}

  \item Dual subdivisions

  \begin{flushright}
   \begin{figure}[!htbp]
      \leavevmode
        \scalebox{.2}{\includegraphics{figures/dual.ps}}
   \end{figure}
   \end{flushright}

\vspace*{-6ex}
        \begin{enumerate}
        \item $(e \ Dual) \ Dual = e$
        \item $(e \ Sym) \ Dual = (e \ Dual) \ Sym$
        \item $(e \ Flip) \ Dual = (e \ Dual) \ Flip \ Sym$ 
        \item $(e \ Lnext) \ Dual = (e \ Dual) \ Onext^{-1}$
        \end{enumerate}
        
\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



\begin{slide}

\begin{list}{}{}

  \item Relations Between Edges: Edge Algebra
      	     \item Some Properties of Flip, Rot, and Onext: 
		\begin{list}{}{}
                   \item $e \ Rot^4 = e$ 
                   \item $e \ Rot^2 \not= e$ 
                   \item $e \ Flip^2 = e$ 
                   \item $e \ Flip \ Rot \ Flip \ Rot = e$ 
                   \item $e \ Rot \ Flip \ Rot \ Flip = e$ 
                   \item $e \ Rot \ Onext \ Rot \ Onext = e$ 
                   \item $e \ Flip \ Onext \ Flip \ Onext = e$ 
		 \end{list}

\end{list}


\vspace*{-14ex}
\begin{flushright}
 \begin{figure}[!htbp]
      \leavevmode
      \scalebox{.75}{\includegraphics{scans/edgefcns.eps}}
  \end{figure}
\end{flushright}
                   
\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}
   \item Properties of Edge Algebra deduced from those above: 
  \vspace{2ex}

                    $e \ Flip^{-1} = e \ Flip$\\ 
                    $e \ Sym = e \ Rot^2$ \\
                   $e \ Rot^{-1} = e \ Rot^3$ \\
                   $e \ Rot^{-1} = e \ Flip \ Rot \ Flip$ \\
                   $e \ Onext^{-1} = e \ Rot \ Onext \ Rot$ \\
                   $e \ Onext^{-1} = e \ Flip \ Onext \ Flip$ 


\end{list}

\vspace*{-14ex}
\begin{flushright}
 \begin{figure}[!htbp]
      \leavevmode
      \scalebox{.75}{\includegraphics{scans/edgefcns.eps}}
  \end{figure}
\end{flushright}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}
     	\begin{quote} NOTE: Every function defined so far can
be expressed as a constant number of Rot, Flip, and Onext operations,
independently of the local topology and the global size and complexity
of the subdivision.
	\end{quote}

\begin{list}{}{}
  
  \item Represent Subdivision and its Dual Simultaneously
        \begin{itemize}
        \item Vertices $\longrightarrow$ Faces
        \item Edges $\longrightarrow$ Edges
        \end{itemize}

\vspace{3ex}


\end{list}
\end{slide}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}
 
\begin{center}
{\sf Application: Voronoi Diagrams and Delaunay Triangulations}
\end{center}


\begin{center}
{\sf The InCircle Test}
\end{center}

Define $InCircle(A, B, C, D)$ to be true if $D$ lies to the left of 
the oriented circle $ABC$, false otherwise.

\vspace{5ex}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.7}{\includegraphics{scans/incircle.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

The test $InCircle(A,B,C,D)$ is equivalent to the test

\begin{center}
$$det \left[
\begin{array}{c c c c}
x_A & y_A & x_A^2 + y_A^2 & 1\\
x_B & y_B & x_B^2 + y_B^2 & 1\\
x_C & y_C & x_C^2 + y_C^2 & 1\\
x_D & y_D & x_D^2 + y_D^2 & 1
\end{array}
\right] > 0$$
\end{center}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.4}{\includegraphics{scans/project.eps}}
    \end{center}
  \end{figure}



\end{slide}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

$CCW(A,B,C)$ = True if points $A,B,C$ form counterclockwise oriented triangle

\vspace{2ex}

$RightOf[X,e] = CCW[ X, e.Dest, e.Org]$

\vspace{2ex}

$LeftOf[x,e] = CCW[ X, e.Org, e.Dest]$

\begin{figure}[!b]
    \begin{center}
      \leavevmode
      \scalebox{.4}{\includegraphics{figures/ccw.ps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{enumerate}

   \item Let $L$ and $R$ be two sets of points.  Any edge of the
Delaunay triangulation of $L \cup R$ whose endpoints are both in $L$ is in
the Delaunay triangulation of $L$.

   \item An edge $XY$ is Delaunay if $InCircle (A,X,Y,B)$ is false for
every pair of sites $A$ and $B$ to the left and right, respectively, of
line $XY$.

\end{enumerate}

\begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.4}{\includegraphics{figures/delaunayhood.ps}}
    \end{center}
  \end{figure}

A triangulation $T$ is Delaunay if and only if all its edges pass the circle 
test.

\end{slide}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}

\begin{center}
{\sf Divide-and-Conquer Algorithm}
\end{center}

\begin{itemize}

\item Partition the points into two halves by $x$-coordinate, \emph{Left} 
and \emph{Right}

\item Find Delaunay triangulation of each half


 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.8}{\includegraphics{scans/lredges.eps}}
    \end{center}
  \end{figure}

\end{itemize}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{itemize}

\item Marry two half triangulations
	\begin{list}{}{}
	\item Create a first cross edge basel
	\end{list} 
\end{itemize}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.5}{\includegraphics{scans/variables.eps}}
    \end{center}
  \end{figure}

Lemma. Any two cross edges adjacent in the $y$-ordering share a common 
vertex.  The third side of the triangle they define is either an $L-L$ or 
a $R-R$ edge.

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

 \begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.5}{\includegraphics{scans/bubble.eps}}
    \end{center}
  \end{figure}

\begin{itemize}
	
        \item Locate the first $L$ point to be encountered by rising
bubble  
        \item Delete $L$ edges out of basel.Dest that fail the circle test
        \item Locate first $R$ point to be encountered and delete $R$ edges
out of basel.Org that fail the circle test
        \item Next cross edge is to be connected to either lcand.Dest or
rcand.Dest
        \item If both are valid, then choose the appropriate one using the
InCircle test

\end{itemize}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{itemize}

\item Uses geometric primitives InCircle and CCW(A,B,C)
\item Overall cost of merge pass is linear in size of $L$ and $R$
\item Running time for entire algorithm $O(n \log n)$	

\end{itemize}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
Facet-Edge (Dobkin, Laszlo, 1987)
\end{center}

\begin{list}{}{}

\item Models polyhedral complexes in $\mathbb{R}^3$, surfaces of 
4-polyhedra


\item Each facet $f$ has an edge-ring $\mathcal{E}_f = (e^0, e^1, \ldots 
e^{n-1})$

\item Each edge $e$ has a facet-ring $\mathcal{F}_e = (f^0, f^1, \ldots  
f^{m-1})$

\item Facet-edge pair $a = (f_a, e_a)$: facet $f_a$ and edge $e_a$ 
adjacent to $f_a$

\end{list}

\begin{figure}[!htbp]
    \begin{center}   
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge1.eps}}
    \end{center}
  \end{figure}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

Traversal Functions

\begin{list}{}{}

\item Each function is applied to facet-edge pair 
\item \emph{Fnext}: next face in facet-ring
\item \emph{Enext}: next edge in edge-edge ring
\item \emph{Rev}: $e_{a'} = e_a, f_{a'} = f_a$, directions of 
$\mathcal{E}_{a'}, \mathcal{E}_a$ are the same, direction of 
$\mathcal{F}_{a'}$ is opposite that of $\mathcal{F}_a$
\item  \emph{Clock}: $e_{a'} = e_a, f_{a'} = f_a$, directions of 
$\mathcal{E}_{a'}, \mathcal{F}_{a'}$ are opposite those of
$\mathcal{E}_{a}, \mathcal{F}_a$

\end{list}

\begin{figure}[!htbp]
    \begin{center}   
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge2.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

Traversal function relations

\begin{enumerate}

\item $a Rev^2 = a$
\item $a Clock^2 = a$
\item $a Rev Clock = a Clock Rev$
\item $a F next^{-1} = aClockFnextClock$
\item $a E next^{-1} = aClockEnextClock$

\end{enumerate}

\vspace{-28ex}
\begin{flushright}
\begin{figure}[!htbp]
      \leavevmode
      \scalebox{.8}{\includegraphics{scans/facetedge2.eps}}
  \end{figure}
\end{flushright}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

Space-Duality

\begin{list}{}{}

\item Space Dual 
    \begin{itemize} 
	\item Cells $\rightarrow$ Vertices
	\item Facets $\rightarrow$ Edges
	\item Edges $\rightarrow$ Facets
	\item Vertices $\rightarrow$ Cells
    \end{itemize}
\item \emph{Sdual} applies to a facet-edge pair $a$ and returns a second 
facet-edge pair \emph{aSdual} belonging to space dual

\end{list}

\begin{figure}[!htbp]
    \begin{center}   
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge3.eps}}
    \end{center}
  \end{figure}


\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}
\item Relations
	\begin{itemize}
	\item $aSdual^2 = a$
	\item \emph{aClockSdual = aSdualClock}
	\item \emph{aFnext = aSdualEnextSdual}
	\item \emph{aEnext = aSdualFnextSdual}
	\end{itemize}

\begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge3.eps}}
    \end{center}
  \end{figure}


\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{slide}

Operators

\begin{list}{}{}

\item Splice\_facets
	\begin{itemize}	
	\item Input: two facet edge pairs $(a,b)$
	\item Operation modifies facet-rings $\mathcal{F}_a, 
\mathcal{F}_b$
		\begin{enumerate}
		\item if rings are distinct, combines them into one ring
		\item if rings are identical, breaks the ring into two 
distinct rings
		\end{enumerate}	
	\end{itemize}

\end{list}

\begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge4.eps}}
    \end{center}
  \end{figure}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{list}{}{}

\item Splice\_edges
        \begin{itemize}
        \item Input: two facet edge pairs $(a,b)$
        \item Operation modifies edge-rings $\mathcal{E}_a,
\mathcal{E}_b$
                \begin{enumerate}
                \item if rings are distinct, combines them into one ring
                \item if rings are identical, breaks the ring into two
distinct rings
                \end{enumerate}
        \end{itemize}

\end{list}

\begin{figure}[!htbp]
    \begin{center}
      \leavevmode
      \scalebox{.9}{\includegraphics{scans/facetedge5.eps}}
    \end{center}
  \end{figure}




\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{center}
{\sf Applications}
\end{center}

\begin{list}{}{}

\item Decomposing a polyhedron

 \begin{itemize}
	\item partitioning polyhedron into simplier constituents
	\item non-convex, handles
 \end{itemize}
\item Incremental Construction of 3-Dimensional Delaunay triangulation

\end{list}

\end{slide}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{slide}

\begin{thebibliography}{999}

\bibitem[B]{B} B. Baumgart, \emph{Winged-Edge Polyhedron 
Representation for Computer Vision}, National Computer Conference, May 
1975 

\bibitem[DL]{DL} D. Dobkin, M. Laszlo, \emph{Primitives for the Manipulation 
of Three-Dimensional Subdivisions},  Algorithmica, vol. 4, pp. 3--32, 1989.

\bibitem[GS]{GS} L. Guibas, J. Stolfi, \emph{Primitives for the 
Manipulation of General Subdivisions and the Computation of Voronoi 
Diagrams}, ACM Transactions on Graphics, Vol. 4, No. 2, April 1985 
74-123

\bibitem[L]{L} Legakis, J., 6.838 Spring 1998

\end{thebibliography}

\end{slide}

\end{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



