Small changes to the Manuals

This commit is contained in:
Fernando Cacciola 2007-10-08 15:48:14 +00:00
parent 7ebab5b990
commit 2bfb39b17b
25 changed files with 60 additions and 82 deletions

View File

@ -15,7 +15,7 @@
\ccUserChapter{Halfedge Data Structures \label{chapterHalfedgeDS}}
\ccChapterRelease{\hdsRev. \ \hdsDate}
\ccChapterAuthor{Lutz Kettner \and Fernando Cacciola}
\ccChapterAuthor{Lutz Kettner}
\input{HalfedgeDS/PkgDescription}
@ -102,7 +102,7 @@ in~\cite{k-ugpdd-99}.
}
\end{center}
\caption{Responsibilities of the different layers in the
halfedge data-structure design [NEEDS TO BE UPDATED TO INCORPORATE CCBS].}
halfedge data-structure design [NEEDS TO BE UPDATED TO INCORPORATE HALFEDGE-CYCLES].}
\label{figureHalfedgeDSDesign}
\end{figure}
\end{ccTexOnly}
@ -113,7 +113,7 @@ in~\cite{k-ugpdd-99}.
<img src="fig/hds_design_col.gif"
alt="Halfedge Data-Structure Design"><BR>
Figure: Responsibilities of the different layers in the
halfedge data-structure design [NEEDS TO BE UPDATED TO INCORPORATE CCBS].
halfedge data-structure design [NEEDS TO BE UPDATED TO INCORPORATE HALFEDGE-CYCLES].
<P>
</CENTER>
\end{ccHtmlOnly}

View File

@ -37,7 +37,7 @@ halfedge cycle in turn stores a reference to a halfedge\footnote{In other
hole-supporting HDS designs, faces stores a sequence of halfedges (each for a different cycle).
In our design a cycle is given by a \ccc{halfedge_cycle} instead of a \ccc{halfedge} to allow
the centralization of cycle-related information}.
A face also stores another sequence of references to halfedge_cycles for isolated vertices, where
A face also stores another sequence of references to halfedge\_cycles for isolated vertices, where
each such vertex is represented by a cycle composed of a single-halfedge single-vertex self-loop.
A halfedge in the cycle stores the handle to the halfedge cycle it belongs to.
@ -45,9 +45,9 @@ A halfedge in the cycle stores the handle to the halfedge cycle it belongs to.
can have many cycles, not just one; or oven no outer boudary but only inner cycles (holes).
\ccc{Halfedge::face()} on the other hand is well defined as a shortcut for \ccc{Halfedge::halfedge_cycle()->face()}
since every halfedge belongs to a halfedge_cycle.
since every halfedge belongs to a halfedge\_cycle.
THe type \ccc{Halfedge_cycle} is a first-class \ccc{HDS} item, just like vertices, halfedges and faces.
The type \ccc{Halfedge_cycle} is a first-class \ccc{HDS} item, just like vertices, halfedges and faces.
However, the halfedge cycles do not contribute by themself to the incidence information
maintained by the \ccc{HDS}. That is, the incidence is betwen vertices, edges and faces,
which are all well defined mathematical concepts belonging to the field of algebraic topology.

View File

@ -1,5 +1,5 @@
This design supports two {\em mutually exclusive} methods for
storing the incidence relationship between faces and halfedges:
{\em direct mutual reference}, that is, having faces and halfedges reference
each other directly, or {\em through a common \ccc{halfedge_cycle}}.
direct-mutual-reference (having faces and halfedges reference
each other directly) or through a common \ccc{halfedge_cycle}.

View File

@ -47,12 +47,12 @@ in~\cite{k-ugpdd-99}.
{\XHDS
Each edge is decomposed into two halfedges with opposite orientations
and each cycle of connected halfedges is associated with a single object
named \ccc{halfedge_cycle}.
named halfedge\_cycle.
One incident vertex is stored in each halfedge and one incident halfedge
is stored in each vertex.
Incidence information between halfedges and faces can be stored via
two mutually exclusive mechanisms: directly storing an incident halfedge in a face
and vice versa, or via a \ccc{halfedge_cycle} object common to incident faces and halfedges.
and vice versa, or via a halfedge\_cycle object common to incident faces and halfedges.
}
Reduced variants of the halfedge data structure can omit some of these
information, for example the halfedge pointers in faces or the
@ -76,7 +76,7 @@ possible for vertices, halfedges, and faces.
\protect\ccc{Halfedge}, and
\protect\ccc{Face} of the halfedge data structure. Member
functions with shaded background are mandatory. The others
are optionally supported. [NEEDS TO BE UPDATED TO INCORPORATE CCBS]}
are optionally supported. [NEEDS TO BE UPDATED TO INCORPORATE HALFEDGE-CYCLES]}
\label{figureOptionalMethods}
\end{figure}
\end{ccTexOnly}
@ -91,7 +91,7 @@ possible for vertices, halfedges, and faces.
The three classes <I>Vertex</I>, <I>Halfedge</I>, and
<I>Face</I> of the halfedge data structure. Member
functions with shaded background are mandatory. The others
are optionally supported [NEEDS TO BE UPDATED TO INCORPORATE CCBS].
are optionally supported [NEEDS TO BE UPDATED TO INCORPORATE HALFEDGE-CYCLES].
</CENTER>
\end{ccHtmlOnly}
@ -228,20 +228,14 @@ The following dependencies among these options must be regarded:
Vertices are supported $\Longleftrightarrow$
\ccc{Supports_halfedge_vertex} $\equiv$ \ccc{CGAL::Tag_true}.
\textbf{Faces are supported $\Longleftrightarrow$
Supports\_halfedge\_face $\equiv$ CGAL::Tag\_true
or
( Supports\_halfedge\_halfedge\_cycle $\equiv$ CGAL::Tag\_true
and Supports\_halfedge\_cycle\_face $\equiv$ CGAL::Tag\_true )
}
Faces are supported $\Longleftrightarrow$
\ccc{Supports_halfedge_face} $\equiv$ \ccc{CGAL::Tag_true}
or \ccc{Supports_halfedge_halfedge_cycle} $\equiv$ \ccc{CGAL::Tag_true}
Halfedge\_cycles are supported $\Longleftrightarrow$
\ccc{Supports_halfedge_halfedge_cycle} $\equiv$ \ccc{CGAL::Tag_true}
and \ccc{Supports_face_halfedge_cycle} $\equiv$ \ccc{CGAL::Tag_true}
\textbf{Halfedge\_cycles are supported $\Longleftrightarrow$
Supports\_halfedge\_halfedge\_cycle $\equiv$
CGAL::Tag\_true
and
Supports\_face\_halfedge\_cycle
$\equiv$ CGAL::Tag\_true
}
\ccc{Supports_vertex_halfedge} $\equiv$ \ccc{CGAL::Tag_true} $\Longrightarrow$
\ccc{Supports_halfedge_vertex} $\equiv$ \ccc{CGAL::Tag_true}.
@ -252,9 +246,6 @@ $\equiv$ CGAL::Tag\_true
\ccc{Supports_face_halfedge} $\equiv$ \ccc{CGAL::Tag_true} $\Longrightarrow$
\ccc{Supports_halfedge_face} $\equiv$ \ccc{CGAL::Tag_true}.
\textbf{Supports\_face\_halfedge\_cycle $\equiv$ CGAL::Tag\_true $\Longrightarrow$
Supports\_halfedge\_cycle\_face $\equiv$ CGAL::Tag\_true}.
\end{ccAdvanced}

View File

@ -32,7 +32,7 @@ A \ccRefName\ stores a reference to one of the halfedges in the cycle (which one
It optionally stores a reference to the face it belongs to. A type tag indicates whether
the related member functions are supported.
All the halfedges connected to the one referenced in a \ccRefName\ must form a cycle, not just a path, and they all must be incident to the same face (or no face at all for a border cycle).
All the halfedges connected to the one referenced in a \ccRefName\ must form a cycle, not just a path.
Two halfedges are allowed to be in the same cycle even if they are opposite to each other.
This allows models of \ccRefName\ to represent open curves, antennas and empty alleys by simply arranging

View File

@ -212,11 +212,8 @@ protection could be bypassed also by an user, but not by accident.)
sets the \ccc{halfedge_cycle} to $c$.}
\ccHeading{Operations available if \ccc{Supports_halfedge_face} $\equiv$ \ccc{CGAL::Tag_true}
$or$
( \ccc{Supports_halfedge_halfedge_cycle} $\equiv$ \ccc{CGAL::Tag_true}
$and$
\ccc{Supports_halfedge_cycle_face} $\equiv$ \ccc{CGAL::Tag_true}
) }
or \ccc{Supports_halfedge_halfedge_cycle} $\equiv$ \ccc{CGAL::Tag_true}
}
\ccMethod{Face_handle face();}{}
\ccGlue
@ -238,7 +235,7 @@ protection could be bypassed also by an user, but not by accident.)
\ccRefConceptPage{HalfedgeDS<Traits,Items,Alloc>}\\
\ccRefConceptPage{HalfedgeDSItems}\\
\ccRefConceptPage{HalfedgeDSVertex}\\
\ccRefConceptPage{HalfedgeDSFace}
\ccRefConceptPage{HalfedgeDSFace}\\
\ccRefConceptPage{HalfedgeDSHalfedgeCycle}
\end{ccRefConcept}

View File

@ -73,26 +73,27 @@ and page~\pageref{pageHalfedgeDSItemsFaceRef} respectively.
\ccExample
The following example shows the canonical implementation of the
\ccc{CGAL::HalfedgeDS_min_items} class. It uses the base classes for the
\ccc{CGAL::HalfedgeDS_items_with_halfedge_cycle_2} class. It uses the base classes for the
item types that are provided in the library.
\begin{ccExampleCode}
struct HalfedgeDS_min_items {
struct HalfedgeDS_items_with_halfedge_cycles_2 {
template < class Refs, class Traits>
struct Vertex_wrapper {
typedef CGAL::HalfedgeDS_vertex_min_base< Refs> Vertex;
typedef typename Traits::Point_2 Point;
typedef CGAL::HalfedgeDS_vertex_base< Refs, Tag_true, Point> Vertex;
};
template < class Refs, class Traits>
struct Halfedge_wrapper {
typedef CGAL::HalfedgeDS_halfedge_min_base< Refs> Halfedge;
typedef CGAL::HalfedgeDS_halfedge_base< Refs, Tag_true, Tag_true, Tag_false, Tag_true> Halfedge;
};
template < class Refs, class Traits>
struct Face_wrapper {
typedef CGAL::HalfedgeDS_face_min_base< Refs> Face;
typedef CGAL::HalfedgeDS_face_base< Refs, Tag_false, Tag_false, Tag_true> Face;
};
template < class Refs, class Traits>
struct Halfedge_cycle_wrapper {
typedef int Halfedge_cycle;
typedef CGAL::HalfedgeDS_halfedge_cycle_base< Refs> Halfedge_cycle;
};
};
\end{ccExampleCode}

View File

@ -20,15 +20,15 @@
The class \ccRefName\ is a model of the \ccc{HalfedgeDSHalfedgeCycle}
concept. \ccc{Refs} is an instantiation of a \ccc{HalfedgeDS}.
The full declaration states four template parameters:
The full declaration states one template parameters:
\begin{tabbing}
\mbox{}~~~~~~ \= \ccc{template <} \=\ccc{class Refs,}\\
\mbox{}~~~~~~ \= \ccc{template <} \=\ccc{class Refs >} \\
\> \ccc{class HalfedgeDS_halfedge_cycle_base;}
\end{tabbing}
In all cases, a reference to the halfedge and face is supported.
A reference to the halfedge and face is supported.
%\ccInclude{CGAL/HalfedgeDS_halfedge_cycle_base.h}

View File

@ -77,15 +77,14 @@ all halfedge data structures and will not appear here again.
\ccMethod{Halfedge_handle create_loop();}{
returns the handle of a halfedge from a newly created loop in \ccc{hds}
consisting of a single closed edge, one vertex and two faces
{\XHDS each with one outer halfedge cycle}
(if supported respectively).}
consisting of a single closed edge, one vertex and two faces (if supported),
{\XHDS each with one outer halfedge cycle (if supported).}}
\ccGlue
\ccMethod{Halfedge_handle create_segment();}{
returns a halfedge from a newly created segment in \ccc{hds}
consisting of a single open edge, two vertices, one face
{\XHDS and one outer halfedge cycle}
(if supported respectively).}
(if supported).}
\ccGlue
\ccMethod{\XHDS Halfedge_handle create_isolated_vertex();}{\XHDS
returns handle of a halfedge from a newly created loop in \ccc{hds}

View File

@ -29,7 +29,7 @@ defaults that allow to select various flavors of faces.
\mbox{}~~~~~~ \= \ccc{template <} \=\ccc{class Refs,}\\
\> \>\ccc{class Tag_halfedge } \mbox{}~~~ \=\ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_plane } \>\ccc{= CGAL::Tag_false,}\\
\> \>\ccc{class Tag_halfedge_cycle} \>\ccc{= CGAL::Tag_true}\\
\> \>\ccc{class Tag_halfedge_cycle} \>\ccc{= CGAL::Tag_true >}\\
\> \ccc{class HalfedgeDS_face_base;}
\end{tabbing}

View File

@ -25,9 +25,9 @@ The full declaration states four template parameters:
\begin{tabbing}
\mbox{}~~~~~~ \= \ccc{template <} \=\ccc{class Refs,}\\
\> \>\ccc{class Tag_prev } \=\ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_vertex } \>\ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_face } \>\ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_halfedge_cycle} \>\ccc{= CGAL::Tag_false}\\
\> \>\ccc{class Tag_vertex } \> \ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_face } \> \ccc{= CGAL::Tag_true,}\\
\> \>\ccc{class Tag_halfedge_cycle} \> \ccc{= CGAL::Tag_false >}\\
\> \ccc{class HalfedgeDS_halfedge_base;}
\end{tabbing}

View File

@ -24,7 +24,7 @@ It uses the default types for vertices, halfedges, and faces that
declare all incidences supported by a \ccc{HalfedgeDS}.
{\XHDS Halfedge cycles are not supported.
The vertex also contains a point of type \ccc{Traits::Point_2},
where \ccc{Traits} is the template argument of the corresponding \ccc{HalfedgeDS}.
where \ccc{Traits} is the template argument of the corresponding \ccc{HalfedgeDS}}.
\ccInclude{CGAL/HalfedgeDS_items_2.h}

View File

@ -52,7 +52,7 @@ Notice the type tags for the halfedge and face wrapper which
select halfedge\_cycles.
\begin{ccExampleCode}
struct HalfedgeDS_items_2 {
struct HalfedgeDS_items_with_halfedge_cycles_2 {
template < class Refs, class Traits>
struct Vertex_wrapper {
typedef typename Traits::Point_2 Point;

View File

@ -11,7 +11,7 @@
\ccRefChapter{Halfedge Data Structure}
%\section{Reference Pages for Halfedge Data Structure\label{chapterHalfedgeDSRef}}
\ccChapterRelease{\halfedgeDSRefRev. \ \halfedgeDSRefDate}
\ccChapterAuthor{Lutz Kettner \and Fernando Cacciola}
\ccChapterAuthor{Lutz Kettner}
% +------------------------------------------------------------------------+
@ -23,7 +23,9 @@ combinatorial data structure, geometric interpretation is added by
classes built on top of the halfedge data structure. These classes
might be more convenient to use than the halfedge data structure
directly, since the halfedge data structure is meant as an
implementation layer. See for example the \ccc{CGAL::Polyhedron_3}
implementation layer. See for example the \ccc{CGAL::Polyhedron_3}\begin{center}
\end{center}
class in Chapter~\ref{chapterPolyhedronRef}.
The data structure provided here is known as the

View File

@ -22,7 +22,7 @@ struct My_traits { // arbitrary point type, not used here.
typedef int Point_2;
};
typedef CGAL_HALFEDGEDS_DEFAULT <My_traits, My_items> HDS;
typedef CGAL::HalfedgeDS_default<My_traits, My_items> HDS;
typedef HDS::Face Face;
typedef HDS::Face_handle Face_handle;

View File

@ -92,11 +92,7 @@ struct My_items : public CGAL::HalfedgeDS_items_2 {
};
struct Traits { typedef int Point_2; };
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
typedef CGAL::HalfedgeDS_vector <Traits, My_items> HDS;
#else
typedef CGAL::HalfedgeDS_vector::HDS<Traits, My_items> HDS;
#endif
typedef CGAL::HalfedgeDS_vector<Traits, My_items> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -91,11 +91,7 @@ struct My_items : public CGAL::HalfedgeDS_items_2 {
};
struct Traits { typedef int Point_2; };
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
typedef CGAL::HalfedgeDS_list <Traits, My_items> HDS;
#else
typedef CGAL::HalfedgeDS_list::HDS<Traits, My_items> HDS;
#endif
typedef CGAL::HalfedgeDS_list<Traits, My_items> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -2,7 +2,7 @@
#include <CGAL/HalfedgeDS_decorator.h>
struct Traits { typedef int Point_2; };
typedef CGAL_HALFEDGEDS_DEFAULT<Traits> HDS;
typedef CGAL::HalfedgeDS_default<Traits> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -1,9 +1,9 @@
#include <CGAL/HalfedgeDS_default.h>
#include <CGAL/HalfedgeDS_decorator.h>
#include <CGAL/HalfedgeDS_items_with_ccb_2.h>
#include <CGAL/HalfedgeDS_items_with_halfedge_cycle_2.h>
struct Traits { typedef int Point_2; };
typedef CGAL_HALFEDGEDS_DEFAULT<Traits,CGAL::HalfedgeDS_items_with_ccb_2> HDS;
typedef CGAL::HalfedgeDS_default<Traits,CGAL::HalfedgeDS_items_with_halfedge_cycle_2> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -3,7 +3,7 @@
#include <CGAL/N_step_adaptor.h>
struct Traits { typedef int Point_2; };
typedef CGAL_HALFEDGEDS_DEFAULT<Traits> HDS;
typedef CGAL::HalfedgeDS_default<Traits> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
typedef HDS::Halfedge_iterator Halfedge_iterator;
typedef CGAL::N_step_adaptor< Halfedge_iterator, 2> Iterator;

View File

@ -3,7 +3,7 @@
#include <CGAL/HalfedgeDS_decorator.h>
// no traits needed, argument can be arbitrary dummy.
typedef CGAL_HALFEDGEDS_DEFAULT<int, CGAL::HalfedgeDS_min_items> HDS;
typedef CGAL::HalfedgeDS_default<int, CGAL::HalfedgeDS_min_items> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -15,7 +15,7 @@ struct My_items : public CGAL::HalfedgeDS_min_items {
};
// no traits needed, argument can be arbitrary dummy.
typedef CGAL_HALFEDGEDS_DEFAULT<int, My_items> HDS;
typedef CGAL::HalfedgeDS_default<int, My_items> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -3,7 +3,7 @@
#include <CGAL/HalfedgeDS_decorator.h>
// no traits needed, argument can be arbitrary dummy.
typedef CGAL_HALFEDGEDS_DEFAULT<int, CGAL::HalfedgeDS_min_items_with_ccb> HDS;
typedef CGAL::HalfedgeDS_default<int, CGAL::HalfedgeDS_min_items_with_ccb> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {

View File

@ -2,9 +2,9 @@
#include <CGAL/HalfedgeDS_decorator.h>
struct Traits { typedef int Point_2; };
typedef CGAL_HALFEDGEDS_DEFAULT<Traits> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
typedef HDS::Halfedge_iterator Iterator;
typedef CGAL::HalfedgeDS_default<Traits> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
typedef HDS::Halfedge_iterator Iterator;
int main() {
HDS hds;

View File

@ -3,11 +3,7 @@
#include <CGAL/HalfedgeDS_decorator.h>
struct Traits { typedef int Point_2; };
#ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM
typedef CGAL::HalfedgeDS_vector < Traits, CGAL::HalfedgeDS_items_2> HDS;
#else
typedef CGAL::HalfedgeDS_vector::HDS< Traits, CGAL::HalfedgeDS_items_2> HDS;
#endif
typedef CGAL::HalfedgeDS_vector< Traits, CGAL::HalfedgeDS_items_2> HDS;
typedef CGAL::HalfedgeDS_decorator<HDS> Decorator;
int main() {