mirror of https://github.com/CGAL/cgal
implementing the reviews
This commit is contained in:
parent
53d5c41759
commit
78a3224468
|
|
@ -4227,10 +4227,10 @@ Triangulation/doc_tex/Triangulation_ref/Delaunay_triangulation.tex -text
|
|||
Triangulation/doc_tex/Triangulation_ref/RegularTriangulation.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/RegularTriangulationTraits.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/Triangulation.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationDSFace.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationDSFullCell.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationDSVertex.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationDataStructure.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationFace.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationFullCell.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationTraits.tex -text
|
||||
Triangulation/doc_tex/Triangulation_ref/TriangulationVertex.tex -text
|
||||
|
|
|
|||
|
|
@ -20,6 +20,12 @@ check all is_valid function, precise in the doc what they are doing.
|
|||
|
||||
small feature with iterator "all tuples"
|
||||
|
||||
make the code and doc agree on Flat_* stuff (orientation in a flat)
|
||||
|
||||
iterator on points in concept TriangulationVertex should be removed to keep requirements minimal
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@
|
|||
|
||||
The concept \ccRefName\ describes the various types and functions that a class
|
||||
has to provide as the first parameter (\ccc{DCTraits}) to the class template
|
||||
\ccc{Delaunay_triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>}. It brings the geometric ingredient to
|
||||
the definition of a Delaunay complex, while the combinatorial ingredient is
|
||||
\ccc{Delaunay_triangulation<DelaunayTriangulationTraits, TriangulationDataStructure>}. It brings the geometric ingredients to
|
||||
the definition of a Delaunay complex, while the combinatorial
|
||||
ingredients are
|
||||
brought by the second template parameter, \ccc{TriangulationDataStructure}.
|
||||
|
||||
\ccRefines
|
||||
|
|
@ -15,6 +16,8 @@ brought by the second template parameter, \ccc{TriangulationDataStructure}.
|
|||
|
||||
\ccTypes
|
||||
|
||||
\ccTwo{DelaunayTriangulationTraits ::}{}
|
||||
|
||||
%\ccNestedType{Point_d}{This nested type is defined in the ``parent'' concept
|
||||
%\ccc{TriangulationTraits}.}
|
||||
|
||||
|
|
@ -35,7 +38,7 @@ to its bounded side.
|
|||
\ccPrecond
|
||||
\ccc{std::distance(start,end)=D+1}, where
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in
|
||||
\ccc{[start,end)}. \ccc{Point_dimension_d(p)} is also $D$
|
||||
\ccc{[start,end)}. \ccc{Point_dimension_d(p)} is also $D$.
|
||||
The points in range
|
||||
\ccc{[start,end)} must be affinely independent, i.e., the simplex must
|
||||
not be flat.}
|
||||
|
|
@ -58,7 +61,7 @@ to its bounded side.
|
|||
The points in range \ccc{[start,end)} and \ccc{p} are supposed to belong to the lower dimensional flat
|
||||
whose orientation is given by \ccc{orient}.
|
||||
\ccPrecond
|
||||
\ccc{std::distance(start,end)=k} where $k$ is the number of
|
||||
\ccc{std::distance(start,end)=k+1} where $k$ is the number of
|
||||
points used to construct \ccc{orient}.
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in
|
||||
\ccc{[start,end)}. \ccc{Point_dimension_d(p)} is also $D$.
|
||||
|
|
@ -85,6 +88,9 @@ not be flat.
|
|||
\ccConstructor{DelaunayTriangulationTraits();}{The default constructor.}
|
||||
|
||||
\ccOperations
|
||||
\ccThree{In_flat_side_of_oriented_sphere_d}{in_flat_side_of_oriented_sphere_d_object()
|
||||
const;}{}
|
||||
|
||||
|
||||
The following methods permit access to the traits class's predicates:
|
||||
|
||||
|
|
@ -95,20 +101,16 @@ The following methods permit access to the traits class's predicates:
|
|||
const;}
|
||||
{}
|
||||
|
||||
%%%%%%% unused !
|
||||
%\ccGlue
|
||||
%\ccMethod{ Center_of_sphere_d center_of_sphere_d_object()
|
||||
%const;}%
|
||||
%{}
|
||||
|
||||
\ccHasModels
|
||||
|
||||
\ccc{CGAL::Cartesian_d<FT, Dim, LA>},\\
|
||||
\ccc{CGAL::Simple_cartesian_d<FT, Dim, LA>},\\
|
||||
\ccc{CGAL::Filtered_kernel_d} (recommended)
|
||||
\ccc{CGAL::New_kernel_d} (recommended when available)
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationTraits}
|
||||
\ccc{TriangulationTraits}\\
|
||||
\ccc{DelaunayTriangulation}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ is used.}
|
|||
\ccTypedef{typedef TriangulationDataStructure::Facet Facet;}{}
|
||||
\ccGlue
|
||||
\ccTypedef{typedef TriangulationDataStructure::Face Face;}%
|
||||
{A model of the concept \ccc{TriangulationFace}.}
|
||||
{A model of the concept \ccc{TriangulationDSFace}.}
|
||||
|
||||
The vertices and full cells of triangulations are accessed through handles,
|
||||
iterators and circulators. A handle is a model of the \ccc{Handle} concept,
|
||||
|
|
@ -458,7 +458,7 @@ defined by the infinite full cell \ccc{c} must contain \ccc{p}.}
|
|||
|
||||
\ccHeading{Validity check}
|
||||
|
||||
\ccMethod{bool is_valid(bool verbose = true, int level = 0) const;}
|
||||
\ccMethod{bool is_valid(bool verbose = true) const;}
|
||||
{Partially checks whether \ccVar\ is a triangulation. This function returns
|
||||
\ccc{true} if the combinatorial triangulation data structure's \ccc{is_valid()}
|
||||
test returns \ccc{true} and if some geometric tests are passed with success.
|
||||
|
|
@ -469,7 +469,7 @@ For each finite full cell, it is checked that its orientation is
|
|||
positive.}
|
||||
|
||||
\ccMethod{bool are_incident_full_cells_valid(Vertex_const_handle v, bool
|
||||
verbose = true, int level = 0) const;} {Returns \ccc{true} if and only if all
|
||||
verbose = true) const;} {Returns \ccc{true} if and only if all
|
||||
finite full cells incident to \ccc{v} have positive orientation.}
|
||||
|
||||
\ccHeading{Input/Output}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
\begin{ccRefConcept}{TriangulationFace}
|
||||
\begin{ccRefConcept}{TriangulationDSFace}
|
||||
|
||||
\ccDefinition
|
||||
|
||||
A \ccRefName\ simply describes a \ccc{k}-face \ccc{f} in a triangulation.
|
||||
A \ccRefName\ describes a \ccc{k}-face \ccc{f} in a triangulation.
|
||||
It gives access to a handle to a full cell \ccc{c} containing the face
|
||||
\ccc{f} in its boundary, as well as the indices of the vertices of \ccc{f} in
|
||||
\ccc{c}. It must hold that \ccc{f} is a {\em proper} face of full cell
|
||||
|
|
@ -12,11 +12,11 @@ the dimension of \ccc{c}.
|
|||
\ccTypes
|
||||
|
||||
\ccNestedType{Full_cell_handle}{Must be the same as the nested type
|
||||
\ccc{TriangulationDataStructure::Full_cell_handle} of the \ccc{TriangulationDataStructure} in which the \ccc{TriangulationFace} is
|
||||
\ccc{TriangulationDataStructure::Full_cell_handle} of the \ccc{TriangulationDataStructure} in which the \ccc{TriangulationDSFace} is
|
||||
defined/used.}
|
||||
|
||||
\ccNestedType{Vertex_handle}{Must be the same as the nested type
|
||||
\ccc{TriangulationDataStructure::Vertex_handle} of the \ccc{TriangulationDataStructure} in which the \ccc{TriangulationFace} is
|
||||
\ccc{TriangulationDataStructure::Vertex_handle} of the \ccc{TriangulationDataStructure} in which the \ccc{TriangulationDSFace} is
|
||||
defined/used.}
|
||||
|
||||
\ccHasModels
|
||||
|
|
@ -32,8 +32,10 @@ dimension of the full cells) must be known by the constructors of a \ccRefName.
|
|||
\ccConstructor{Triangulation_face(Triangulation_face g);}{Copy constructor.}
|
||||
|
||||
\ccConstructor{Triangulation_face(Full_cell_handle c);}{Sets the \ccc{Face}'s
|
||||
full cell to \ccc{c}. \ccPrecond \ccc{c} must be a handle to an existing
|
||||
full cell (not the default-constructed \ccc{Full_cell_handle()}).}
|
||||
full cell to \ccc{c} and the ambient dimension to
|
||||
\ccc{c.ambient_dimension()}.
|
||||
\ccPrecond \ccc{c!=Full_cell_handle()}
|
||||
}
|
||||
|
||||
\ccConstructor{Triangulation_face(const int ad);}{Setup the \ccc{Face} knowing
|
||||
the ambient dimension \ccc{ad}. Sets the \ccc{Face}'s full cell to the
|
||||
|
|
@ -44,32 +46,37 @@ default-constructed one.}
|
|||
\ccMethod{Full_cell_handle full_cell() const;}{Returns a handle to a cell that
|
||||
has the face in its boundary.}
|
||||
|
||||
\ccMethod{int feature_dimension() const;}{Returns the dimension of the face
|
||||
\ccMethod{int face_dimension() const;}{Returns the dimension of the face
|
||||
(one less than the number of vertices).}
|
||||
|
||||
\ccMethod{int index(int i) const;}{Returns the index of the \ccc{i}-th vertex
|
||||
of the face in the cell \ccVar.\ccc{full_cell()}. \ccPrecond $0\leq i\leq$\ccVar.\ccc{feature_dimension()}.}
|
||||
of the face in the cell \ccVar.\ccc{full_cell()}. \ccPrecond $0\leq i\leq$\ccVar.\ccc{face_dimension()}.}
|
||||
|
||||
\ccMethod{Vertex_handle vertex(int i) const;}{Returns a handle to the
|
||||
\ccc{i}-th \ccc{Vertex} of the face in the cell \ccVar.\ccc{full_cell()}.
|
||||
\ccPrecond $0\leq i\leq$\ccVar.\ccc{feature_dimension()}.}
|
||||
\ccPrecond $0\leq i\leq$\ccVar.\ccc{face_dimension()}.}
|
||||
|
||||
\ccHeading{Update functions}
|
||||
|
||||
\ccMethod{void clear();}{Sets the facet to the empty set.}
|
||||
\ccMethod{void clear();}{Sets the facet to the empty set. Ambient
|
||||
dimension remains unchanged.}
|
||||
|
||||
\ccMethod{void set_full_cell(Full_cell_handle c);}{Sets the cell of the face to
|
||||
\ccc{c}. \ccPrecond \ccc{c} must not be the default-constructed
|
||||
\ccc{Full_cell_handle}.}
|
||||
\ccc{c}.
|
||||
\ccPrecond \ccc{c!=Full_cell_handle()}
|
||||
}
|
||||
|
||||
\ccMethod{void set_index(int i, int j);}{Sets the index of the \ccc{i}-th
|
||||
vertex of the face.
|
||||
\ccPrecond $0\leq i<$\ccVar.\ccc{full_cell()->ambient_dimension()}.
|
||||
vertex of the face to be the \ccc{j}-th vertex of the full cell.
|
||||
\ccPrecond $0\leq i\leq$\ccVar.\ccc{full_cell()->face_dimension()}.
|
||||
\ccPrecond $0\leq j\leq$\ccVar.\ccc{full_cell()->ambient_dimension()}.}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationDataStructure}, \\
|
||||
\ccc{Triangulation_face<TriangulationDataStructure>}.
|
||||
|
||||
\ccc{TriangulationDataStructure::FullCell} \\
|
||||
\ccc{TriangulationDataStructure::Vertex} \\
|
||||
\ccc{TriangulationDataStructure}\\
|
||||
\ccc{Triangulation}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
@ -5,15 +5,13 @@
|
|||
The concept \ccRefName\ describes what a full cell is in a model of the concept
|
||||
\ccc{TriangulationDataStructure}. It sets requirements of combinatorial nature
|
||||
only, as geometry is not concerned here.
|
||||
In the context of triangulation, the term full cell refer to a face of
|
||||
In the context of triangulation, the term full cell refers to a face of
|
||||
\emph{maximal} dimension. This maximality characteristic is emphasized by using
|
||||
the adjective {\em full}.
|
||||
|
||||
A \ccRefName\ is responsible for storing handles to the vertices of a
|
||||
full cell as well as handles to its neighbors.
|
||||
|
||||
This concept is a \emph{sub-concept} of the \ccc{TriangulationDataStructure}
|
||||
concept.
|
||||
|
||||
\ccHasModels
|
||||
|
||||
|
|
@ -22,6 +20,10 @@ concept.
|
|||
|
||||
\ccTypes
|
||||
|
||||
\ccThree{Full_cell_handle}{v. set_full_cell(Full_cell_handle c);}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
|
||||
\ccNestedType{Vertex_handle}%{}
|
||||
%\ccGlue\ccNestedType{Vertex_const_handle}
|
||||
{A handle to a vertex. It must be the same as the
|
||||
|
|
@ -37,11 +39,26 @@ the vertices of the full cell.}
|
|||
nested type \ccc{TriangulationDataStructure::Full_cell_handle} of the \ccc{TriangulationDataStructure} in which the
|
||||
\ccc{TriangulationDSFullCell} is defined/used.}
|
||||
|
||||
\ccTypedef{typedef TriangulationDataStructure::Full_cell_data TDS_data;}{}
|
||||
\ccThree{Full_cell_handle}{TriangulationDataStructure::Full_cell_data TDS_data}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
\ccTypedef{typedef TriangulationDataStructure::Full_cell_data
|
||||
TDS_data;}{A data member of this type has to be stored and accessible through
|
||||
access function below.}
|
||||
|
||||
|
||||
\ccThree{Full_cell_handle}{v. set_full_cell(Full_cell_handle c);}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
\ccNestedType{
|
||||
template <typename TDS2>
|
||||
Rebind_TDS}
|
||||
{This nested template class has to define a type \ccc{Other} which is the
|
||||
{\it rebound} vertex, that is, the one whose \ccc{Triangulation_data_structure}
|
||||
will be the actually used one. The \ccc{Other} type will be the real base
|
||||
class of \ccc{Triangulation_data_structure::Full_cell}.}
|
||||
|
||||
|
||||
\ccNestedType{template<typename TDS2> Rebind_TDS}{This nested template
|
||||
class must define a nested type \ccc{Other} which is the rebound full cell
|
||||
class template, that is: \ccc{Other == TriangulationDSFullCell<TDS2>}.}
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{c}
|
||||
|
|
@ -86,7 +103,7 @@ returned integer is not negative, it holds that \ccVar.%
|
|||
\ccPrecond $0\leq i\leq$\ccc{ambient_dimension()}.}
|
||||
|
||||
\ccMethod{int index(Full_cell_handle n) const;}{Returns the index \ccc{i}
|
||||
of the neighbor \ccc{n} such that \ccVar\ccc{.neighbor(i)==n}. \ccPrecond \ccc{n}
|
||||
such that \ccVar\ccc{.neighbor(i)==n}. \ccPrecond \ccc{n}
|
||||
must be a neighbor of \ccVar.}
|
||||
\ccGlue
|
||||
\ccMethod{int index(Vertex_handle v) const;}{Returns the index \ccc{i} of
|
||||
|
|
@ -112,6 +129,7 @@ i,$\ccc{cur_dim}$\leq$\ccc{ambient_dimension()}.}
|
|||
|
||||
|
||||
\ccHeading{Update functions} % - - - - - - - - - - - - - - - - - UPDATES
|
||||
\ccThree{ostream&}{c. set_mirror_index(const int i, const int index)}{}
|
||||
|
||||
\ccMethod{void set_vertex(const int i, Vertex_handle v);}{Sets the $i$-th
|
||||
vertex of the full cell.
|
||||
|
|
@ -153,13 +171,18 @@ if the full cell \ccc{n} is a neighbor of the full cell \ccVar. Returns
|
|||
a neighbor of \ccVar\ if the full cell \ccc{n} is a neighbor of the full cell
|
||||
\ccVar. Returns \ccc{false} otherwise.}
|
||||
|
||||
|
||||
\begin{ccDebug}
|
||||
\ccHeading{Validity check}
|
||||
|
||||
\ccMethod{bool is_valid(bool verbose=false, int level=0) const;}{Performs any
|
||||
desired test on a full cell. \emph{E.g.}, checks that for each existing vertex,
|
||||
there is an existing neighbor.}
|
||||
\ccMethod{bool is_valid(bool verbose=false) const;}{Performs any
|
||||
desired test on a full cell. \emph{E.g.}, checks that for each
|
||||
existing neighbor \ccc{n}, \ccVar\ and \ccc{n} share relevant vertices
|
||||
and \ccVar\ is the relevant neighbor of \ccc{n}.
|
||||
}
|
||||
\end{ccDebug}
|
||||
|
||||
% \ccHeading{Memory management}
|
||||
\ccHeading{Memory management}
|
||||
|
||||
% \ccMethod{void* for_compact_container() const;}{}
|
||||
% \ccGlue\ccMethod{void* & for_compact_container();}{}
|
||||
|
|
@ -170,21 +193,33 @@ there is an existing neighbor.}
|
|||
% \ccc{Compact_container} to store their vertices and full cells. See the
|
||||
% documentation of \ccc{Compact_container} for the exact requirements.
|
||||
|
||||
\ccMethod{void * for_compact_container() const;}{}
|
||||
\ccGlue
|
||||
\ccMethod{void * & for_compact_container();}{}
|
||||
{ These member functions are required by \ccc{Triangulation_data_structure}
|
||||
because it uses \ccc{Compact_container} to store its cells. See the
|
||||
documentation of \ccc{Compact_container} for the exact requirements.}
|
||||
|
||||
|
||||
\ccHeading{Input/Output}
|
||||
These operators can be used directly and are called by the I/O
|
||||
operator of class \ccc{TriangulationDataStructure}.
|
||||
|
||||
\ccFunction{template<class TriangulationDataStructure> istream& operator>>(istream & is,
|
||||
Triangulation_ds_full_cell<TriangulationDataStructure> & c);}
|
||||
{Reads (possible) non-combinatorial information about a full cell from the stream \ccc{is}
|
||||
{Reads (possibly) non-combinatorial information about a full cell from the stream \ccc{is}
|
||||
into \ccc{c}.}
|
||||
|
||||
\ccFunction{template<class TriangulationDataStructure> ostream& operator<<(ostream & os, const
|
||||
Triangulation_ds_full_cell<TriangulationDataStructure> & c);}
|
||||
{Writes (possible) non-combinatorial information about full cell \ccc{c} to the stream
|
||||
{Writes (possibly) non-combinatorial information about full cell \ccc{c} to the stream
|
||||
\ccc{os}.}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationDSVertex}\\
|
||||
\ccc{TriangulationDataStructure}
|
||||
\ccc{TriangulationDSFace}\\
|
||||
\ccc{TriangulationDataStructure}\\
|
||||
\ccc{Triangulation}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,9 @@
|
|||
The concept \ccRefName\ describes what a vertex is in a model of the concept
|
||||
\ccc{TriangulationDataStructure}. It sets requirements of combinatorial nature
|
||||
only, as geometry is not concerned here. In particular, we only require that
|
||||
the vertex hold a handle to a full cell incident to it in the triangulation.
|
||||
the vertex holds a handle to a full cell incident to it in the triangulation.
|
||||
|
||||
|
||||
This concept is a \emph{sub-concept} of the \ccc{TriangulationDataStructure}
|
||||
concept.
|
||||
|
||||
\ccHasModels
|
||||
|
||||
|
|
@ -16,14 +15,21 @@ concept.
|
|||
\ccc{CGAL::Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>}
|
||||
|
||||
\ccTypes
|
||||
\ccThree{Full_cell_handle}{v. set_full_cell(Full_cell_handle c);}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
\ccNestedType{Full_cell_handle}{A handle to a cell. It must be the same as the
|
||||
nested type \ccc{TriangulationDataStructure::Full_cell_handle} of the \ccc{TriangulationDataStructure} in which the
|
||||
\ccc{TriangulationDSVertex} is defined/used.}
|
||||
|
||||
\ccNestedType{template<typename TDS2> Rebind_TDS}{This nested template
|
||||
class must define a nested type \ccc{Other} which is the rebound vertex
|
||||
class template, that is: \ccc{Other == TriangulationDSVertex<TDS2>}.}
|
||||
\ccNestedType{
|
||||
template <typename TDS2>
|
||||
Rebind_TDS}
|
||||
{This nested template class has to define a type \ccc{Other} which is the
|
||||
{\it rebound} vertex, that is, the one whose \ccc{Triangulation_data_structure}
|
||||
will be the actually used one. The \ccc{Other} type will be the real base
|
||||
class of \ccc{Triangulation_data_structure::Vertex}.}
|
||||
|
||||
|
||||
\ccCreation
|
||||
\ccCreationVariable{v}
|
||||
|
|
@ -36,6 +42,7 @@ full cell to \ccc{c}. \ccPrecond \ccc{c} must not be the default-constructed
|
|||
\ccc{Full_cell_handle}.}
|
||||
|
||||
\ccOperations
|
||||
\ccThree{Full_cell_handle}{v. set_full_cell(Full_cell_handle c);}{}
|
||||
|
||||
\ccMethod{void set_full_cell(Full_cell_handle c);}{Set \ccc{c} as the vertex's
|
||||
incident full cell. \ccPrecond \ccc{c} must not be the default-constructed
|
||||
|
|
@ -44,13 +51,14 @@ incident full cell. \ccPrecond \ccc{c} must not be the default-constructed
|
|||
\ccMethod{Full_cell_handle full_cell() const;}{Returns a handle to a
|
||||
full cell incident to the vertex.}
|
||||
|
||||
\begin{ccDebug}
|
||||
\ccHeading{Validity check}
|
||||
|
||||
\ccMethod{bool is_valid(bool verbose=false, int level=0) const;}{Performs any
|
||||
desired test on a vertex. Al least, checks that the pointer to an incident
|
||||
full cell is not the default constructed handle ({i.e.}, is not
|
||||
\ccc{NULL}). The parameter \ccc{level} is not used, but can be used in derived
|
||||
classes.}
|
||||
\ccMethod{bool is_valid(bool verbose=false) const;}{Performs any
|
||||
desired test on a vertex. Should check if the incident full cell
|
||||
actually contains the vertex.
|
||||
}
|
||||
\end{ccDebug}
|
||||
|
||||
% \ccHeading{Memory management}
|
||||
|
||||
|
|
@ -64,21 +72,35 @@ classes.}
|
|||
% full cells. See the documentation of \ccc{Compact_container} for the exact
|
||||
% requirements.
|
||||
|
||||
\ccHeading{Memory management}
|
||||
|
||||
\ccMethod{void * for_compact_container() const;}{}
|
||||
\ccGlue
|
||||
\ccMethod{void * & for_compact_container();}{}
|
||||
{ These member functions are required by \ccc{Triangulation_data_structure}
|
||||
because it uses \ccc{Compact_container} to store its cells. See the
|
||||
documentation of \ccc{Compact_container} for the exact requirements.}
|
||||
|
||||
\ccHeading{Input/Output}
|
||||
|
||||
These operators can be used directly and are called by the I/O
|
||||
operator of class \ccc{TriangulationDataStructure}.
|
||||
|
||||
\ccFunction{template<class TriangulationDataStructure> istream& operator>>(istream & is,
|
||||
Triangulation_ds_vertex<TriangulationDataStructure> & v);}
|
||||
{Reads (possible) non-combinatorial information about a vertex from the stream \ccc{is}
|
||||
{Reads (possibly) non-combinatorial information about a vertex from the stream \ccc{is}
|
||||
into \ccc{v}.}
|
||||
|
||||
\ccFunction{template<class TriangulationDataStructure> ostream& operator<<(ostream & os, const
|
||||
Triangulation_ds_vertex<TriangulationDataStructure> & v);}
|
||||
{Writes (possible) non-combinatorial information about vertex \ccc{v} to the stream
|
||||
{Writes (possibly) non-combinatorial information about vertex \ccc{v} to the stream
|
||||
\ccc{os}.}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationDSFullCell}\\
|
||||
\ccc{TriangulationDataStructure}
|
||||
\ccc{TriangulationDSFace}\\
|
||||
\ccc{TriangulationDataStructure}\\
|
||||
\ccc{Triangulation}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ full cell \ccc{c} opposite to its \ccc{i}-th vertex.
|
|||
\ccThreeToTwo
|
||||
|
||||
\ccNestedType{Face}
|
||||
{A model of the concept \ccc{TriangulationFace}.}
|
||||
{A model of the concept \ccc{TriangulationDSFace}.}
|
||||
|
||||
Vertices and full cells are manipulated via \emph{handles}. Handles support the
|
||||
usual two dereference operators \ccc{operator*} and \ccc{operator->}.
|
||||
|
|
@ -599,13 +599,15 @@ The information stored in the \ccc{iostream} is:
|
|||
The indices of vertices and full cells correspond to the order in the
|
||||
file, the user cannot control it.
|
||||
The classes \ccc{Vertex} and
|
||||
\ccc{Full_cell} has to provide the relevant I/O operators
|
||||
\ccc{Full_cell} have to provide the relevant I/O operators
|
||||
(possibly empty).
|
||||
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationDSVertex}\\
|
||||
\ccc{TriangulationDSFullCell}
|
||||
\ccc{TriangulationDSFullCell}\\
|
||||
\ccc{TriangulationDSFace}\\
|
||||
\ccc{Triangulation}
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,9 @@ represent a full cell.
|
|||
We only list below the additional specific requirements of \ccRefName.
|
||||
|
||||
Compared to \ccc{TriangulationDSFullCell}, the main difference is the addition of
|
||||
methods to access and iterate over the position of the full cell's vertices as
|
||||
well as a method for constructing the center of the full cell's circumsphere.
|
||||
methods to access and iterate over the position of the full cell's
|
||||
vertices.
|
||||
% as well as a method for constructing the center of the full cell's circumsphere.
|
||||
|
||||
\ccHasModels
|
||||
|
||||
|
|
@ -34,6 +35,8 @@ full cell.}
|
|||
\ccCreationVariable{c}
|
||||
|
||||
\ccOperations
|
||||
These operators can be used directly and are called by the I/O
|
||||
operator of class \ccc{Triangulation}.
|
||||
|
||||
\ccMethod{Point_const_iterator points_begin() const;}
|
||||
{Returns an iterator pointing to the first point of the full cell.}
|
||||
|
|
@ -41,8 +44,20 @@ full cell.}
|
|||
\ccMethod{Point_const_iterator points_end() const;}
|
||||
{Returns an iterator pointing beyond the last point of the full cell.}
|
||||
|
||||
\ccMethod{Point circumcenter() const;}{Returns the center of the sphere
|
||||
circumscribing the full cell.}
|
||||
\ccHeading{Input/Output}
|
||||
|
||||
These operators can be used directly and are called by the I/O
|
||||
operator of class \ccc{Triangulation}.
|
||||
|
||||
\ccFunction{istream & operator>>(istream & is, TriangulationFullCell & c);}%
|
||||
{Inputs additional information stored in the full cell.}
|
||||
|
||||
\ccFunction{ostream & operator<<(ostream & os, const TriangulationFullCell & c);}%
|
||||
{Outputs additional information stored in the full cell.}
|
||||
|
||||
|
||||
%\ccMethod{Point circumcenter() const;}{Returns the center of the sphere
|
||||
%circumscribing the full cell.}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
|
|
|
|||
|
|
@ -10,24 +10,26 @@ the second template parameter, \ccc{TriangulationDataStructure}.
|
|||
|
||||
Inserting a range of points in a triangulation is optimized using
|
||||
spatial sorting, thus besides the requirements below,
|
||||
a class provided as \ccc{TriangulationTraits} should also satisfies the concept
|
||||
a class provided as \ccc{TriangulationTraits} should also satisfy the concept
|
||||
\ccc{SpatialSortingTraits_d}.
|
||||
|
||||
\ccRefines
|
||||
\ccc{SpatialSortingTraits_d}
|
||||
|
||||
{If range of points are inserted, the
|
||||
traits must refine \ccc{SpatialSortingTraits_d}, this is not needed
|
||||
{If a range of points is inserted, the
|
||||
traits must refine \ccc{SpatialSortingTraits_d}, This is not needed
|
||||
if the points are inserted one by one.}
|
||||
|
||||
\ccTypes
|
||||
|
||||
\ccTwo{TriangulationTraits ::Compare_lexicographically_d}{}
|
||||
|
||||
\ccNestedType{Point_d}%
|
||||
{A type representing a point in Euclidean space.}
|
||||
|
||||
|
||||
\ccNestedType{Point_dimension_d}%
|
||||
{Functor object type returning the dimension of a \ccc{Point_d}.
|
||||
{Functor returning the dimension of a \ccc{Point_d}.
|
||||
Must provide
|
||||
\ccc{int operator()(Point_d p)} returning the dimension of $p$.
|
||||
}
|
||||
|
|
@ -35,7 +37,7 @@ a class provided as \ccc{TriangulationTraits} should also satisfies the concept
|
|||
\ccNestedType{Orientation_d}{A predicate object that must provide the
|
||||
templated operator\\\ccc{template<typename ForwardIterator> Orientation
|
||||
operator()(ForwardIterator start, ForwardIterator end)}.\\The operator returns
|
||||
\ccc{POSITIVE}, \ccc{NEGATIVE} or \ccc{COPLANAR} depending on
|
||||
\ccc{CGAL::POSITIVE}, \ccc{CGAL::NEGATIVE} or \ccc{CGAL::COPLANAR} depending on
|
||||
the orientation of the simplex defined by the points in the range \ccc{[start,
|
||||
end)}.
|
||||
\ccPrecond \ccc{std::distance(start,end)=D+1}, where
|
||||
|
|
@ -52,24 +54,37 @@ in the range.
|
|||
\ccPrecond The $k$ points in the range
|
||||
must be affinely independent.
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in
|
||||
\ccc{[start,end)}.
|
||||
\ccc{[start,end)}, for some $D$.
|
||||
$2\leq k\leq D$.
|
||||
}
|
||||
|
||||
|
||||
In the $D$-dimensional oriented space, a $k-1$ dimensional subspace (flat)
|
||||
define by $k$ points can be oriented in two different ways.
|
||||
Choosing the orientation of any simplex defined by $k$ points fix the
|
||||
orientation of all other simplices. To be able to orient lower
|
||||
dimensional flats, we use the following classes:
|
||||
|
||||
|
||||
\ccNestedType{Flat_orientation_d}{
|
||||
A type representing an orientation of an affine subspace of
|
||||
dimension $k$ strictly smaller than the ambiant dimension.
|
||||
dimension $k$ strictly smaller than the ambient dimension.
|
||||
}
|
||||
|
||||
|
||||
\ccNestedType{Construct_flat_orientation_d}{
|
||||
A construction object that must
|
||||
provide the templated operator\\\ccc{template<typename ForwardIterator> Flat_orientation_d
|
||||
operator()(ForwardIterator start, ForwardIterator end)}.\\The operator
|
||||
return an orientation of the flat spanned by the points in
|
||||
the range \ccc{R=[start, end)}. \ccPrecond The $k$ points in the range
|
||||
operator()(ForwardIterator start, ForwardIterator end)}.\\
|
||||
The flat spanned by the points in
|
||||
the range \ccc{R=[start, end)} can be oriented in two different ways,
|
||||
the operator
|
||||
returns an object that allow to orient that flat so that \ccc{R=[start, end)}
|
||||
defines a positive simplex.
|
||||
\ccPrecond The $k$ points in the range
|
||||
must be affinely independent.
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in \ccc{R}.
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in \ccc{R} for
|
||||
some $D$.
|
||||
$2\leq k\leq D$.
|
||||
}
|
||||
|
||||
|
|
@ -80,7 +95,7 @@ templated operator\\\ccc{template<typename ForwardIterator> Orientation
|
|||
operator()(Flat_orientation_d orient,ForwardIterator start,
|
||||
ForwardIterator end)}.\\
|
||||
The operator returns
|
||||
\ccc{POSITIVE}, \ccc{NEGATIVE} or \ccc{COPLANAR} depending on
|
||||
\ccc{CGAL::POSITIVE}, \ccc{CGAL::NEGATIVE} or \ccc{CGAL::COPLANAR} depending on
|
||||
the orientation of the simplex defined by the points in the range \ccc{[start,
|
||||
end)}.
|
||||
The points are supposed to belong to the lower dimensional flat
|
||||
|
|
@ -89,7 +104,8 @@ The points are supposed to belong to the lower dimensional flat
|
|||
points
|
||||
used to construct \ccc{orient}.
|
||||
\ccc{Point_dimension_d(*it)} is $D$ for all \ccc{it} in
|
||||
\ccc{[start,end)}.
|
||||
\ccc{[start,end)} where $D$ is the dimension of the points used to
|
||||
construct \ccc{orient}.
|
||||
$2\leq k\leq D$.
|
||||
}
|
||||
|
||||
|
|
@ -116,6 +132,7 @@ the same and \ccc{LARGER} otherwise.}
|
|||
\ccConstructor{TriangulationTraits();}{The default constructor.}
|
||||
|
||||
\ccOperations
|
||||
\ccThree{Construct_flat_orientation_d}{construct_flat_orientation_d_object() const}{}
|
||||
|
||||
The following methods permit access to the traits class's predicates:
|
||||
|
||||
|
|
@ -149,6 +166,7 @@ const;}%
|
|||
\ccSeeAlso
|
||||
|
||||
\ccc{DelaunayTriangulationTraits}
|
||||
\ccc{Triangulation}
|
||||
|
||||
|
||||
\end{ccRefConcept}
|
||||
|
|
|
|||
|
|
@ -13,13 +13,15 @@ represent a vertex.
|
|||
We only list below the additional specific requirements of \ccRefName.
|
||||
|
||||
Compared to \ccc{TriangulationDSVertex}, the main difference is the addition of
|
||||
an embedding of the vertex into a geometric point.
|
||||
an association of the vertex into a geometric point.
|
||||
|
||||
\ccHasModels
|
||||
|
||||
\ccc{CGAL::Triangulation_vertex<TriangulationTraits, Data, TriangulationDSVertex>}
|
||||
|
||||
\ccTypes
|
||||
\ccThree{TriangulationVertex}{v(Full_cell_handle c, const Point & p);}{}
|
||||
\ccThreeToTwo
|
||||
|
||||
\ccNestedType{Point}{The type of the point stored in the vertex. It must be
|
||||
the same as the point type \ccc{TriangulationTraits::Point} (or its refined
|
||||
|
|
@ -48,6 +50,9 @@ concepts) when the \ccc{TriangulationVertex} is used in the class
|
|||
|
||||
\ccHeading{Input/Output}
|
||||
|
||||
These operators can be used directly and are called by the I/O
|
||||
operator of class \ccc{Triangulation}.
|
||||
|
||||
\ccFunction{istream & operator>>(istream & is, TriangulationVertex & v);}%
|
||||
{Inputs the non-combinatorial information given by the vertex, {i.e.},
|
||||
the point and other possible information.}
|
||||
|
|
|
|||
|
|
@ -21,8 +21,9 @@ constructor (see \ccc{TriangulationDataStructure}).\end{itemize}
|
|||
|
||||
\ccc{TriangulationDSVertex} is the class to be used as the base \ccc{Vertex} type in the
|
||||
triangulation data structure. It must be a model of the concept
|
||||
\ccc{TriangulationDSVertex}. The class template \ccRefName\ accepts that no
|
||||
second parameter be specified. It also accepts the tag \ccc{CGAL::Default} as
|
||||
\ccc{TriangulationDSVertex}. The class template \ccRefName\ can be
|
||||
defined by specifying
|
||||
only the first parameter. It also accepts the tag \ccc{CGAL::Default} as
|
||||
second parameter. In both cases, \ccc{TriangulationDSVertex} defaults to
|
||||
\ccc{CGAL::Triangulation_ds_vertex<>}.
|
||||
|
||||
|
|
@ -63,10 +64,16 @@ full cells, during modifications of the triangulation data structure.}
|
|||
Vertex_handle v, Facet f, OutputIterator new_full_cells);}
|
||||
{A set \ccc{C} of full cells satisfying the same condition as in method
|
||||
\ccRefName\ccc{::insert_in_hole()} is assumed to be marked. This
|
||||
method creates new full cells from \ccc{Vertex} v to the boundary of \ccc{C}.
|
||||
method creates new full cells from vertex \ccc{v} to the boundary of \ccc{C}.
|
||||
The boundary is recognized by checking the mark of the full cells.
|
||||
This method is used by \ccRefName\ccc{::insert_in_hole()}.}
|
||||
|
||||
\end{ccAdvanced}
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{Triangulation_ds_vertex}\\
|
||||
\ccc{Triangulation_ds_full_cell}\\
|
||||
\ccc{Triangulation}
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
\ccDefinition
|
||||
|
||||
A \ccRefName\ is a model of the concept \ccc{TriangulationFace}.
|
||||
A \ccRefName\ is a model of the concept \ccc{TriangulationDSFace}.
|
||||
|
||||
\ccParameters
|
||||
|
||||
|
|
@ -17,11 +17,11 @@ types\begin{itemize}
|
|||
|
||||
\ccIsModel
|
||||
|
||||
\ccc{TriangulationFace}.
|
||||
\ccc{TriangulationDSFace}.
|
||||
|
||||
\ccSeeAlso
|
||||
|
||||
\ccc{TriangulationFace},\\
|
||||
\ccc{TriangulationDSFace},\\
|
||||
\ccc{TriangulationDataStructure}.
|
||||
|
||||
\end{ccRefClass}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ following concepts:
|
|||
|
||||
\ccRefConceptPage{TriangulationDSVertex}\\
|
||||
\ccRefConceptPage{TriangulationDSFullCell}\\
|
||||
\ccRefConceptPage{TriangulationFace}
|
||||
\ccRefConceptPage{TriangulationDSFace}
|
||||
|
||||
\subsubsection*{(Geometric) triangulations}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
\input{Triangulation_ref/TriangulationDSVertex.tex}
|
||||
\input{Triangulation_ref/TriangulationDSFullCell.tex}
|
||||
\input{Triangulation_ref/TriangulationFace.tex}
|
||||
\input{Triangulation_ref/TriangulationDSFace.tex}
|
||||
|
||||
\input{Triangulation_ref/TriangulationTraits.tex}
|
||||
\input{Triangulation_ref/DelaunayTriangulationTraits.tex}
|
||||
|
|
|
|||
|
|
@ -399,7 +399,7 @@ public:
|
|||
if( is_infinite(s) )
|
||||
{
|
||||
Vertex_handle v;
|
||||
for( int i(0); i<= f.feature_dimension(); ++i)
|
||||
for( int i(0); i<= f.face_dimension(); ++i)
|
||||
if ( is_infinite( f.vertex(i) )) return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -524,7 +524,7 @@ public:
|
|||
const Face & f)
|
||||
: f_(f), tds_(tds)
|
||||
{
|
||||
dim_ = f.feature_dimension();
|
||||
dim_ = f.face_dimension();
|
||||
}
|
||||
bool operator()(const Facet & facet) const
|
||||
{
|
||||
|
|
@ -549,7 +549,7 @@ public:
|
|||
const Face & f)
|
||||
: f_(f), tds_(tds)
|
||||
{
|
||||
dim_ = f.feature_dimension();
|
||||
dim_ = f.face_dimension();
|
||||
}
|
||||
bool operator()(const Facet & facet) const
|
||||
{
|
||||
|
|
@ -780,7 +780,7 @@ typename Triangulation_data_structure<Dim, Vb, Fcb>::Vertex_handle
|
|||
Triangulation_data_structure<Dim, Vb, Fcb>
|
||||
::collapse_face(const Face & f) /* Concept */
|
||||
{
|
||||
const int fd = f.feature_dimension();
|
||||
const int fd = f.face_dimension();
|
||||
CGAL_precondition( (1 <= fd ) && (fd < current_dimension()));
|
||||
std::vector<Full_cell_handle> simps;
|
||||
// save the Face's vertices:
|
||||
|
|
|
|||
|
|
@ -38,14 +38,14 @@ protected:
|
|||
|
||||
public:
|
||||
explicit Triangulation_face(Full_cell_handle s) /* Concept */
|
||||
: full_cell_(s), indices_(s->ambient_dimension()+1) // FIXME: +2 to allow for arbitrary dimensioned Face
|
||||
: full_cell_(s), indices_(s->ambient_dimension()+2)
|
||||
{
|
||||
CGAL_assertion( Full_cell_handle() != s );
|
||||
clear();
|
||||
}
|
||||
|
||||
explicit Triangulation_face(const int ambient_dim) /* Concept */
|
||||
: full_cell_(), indices_(ambient_dim+1) // FIXME: +2 to allow for arbitrary dimensioned Face
|
||||
: full_cell_(), indices_(ambient_dim+2)
|
||||
{
|
||||
clear();
|
||||
}
|
||||
|
|
@ -54,7 +54,7 @@ public:
|
|||
: full_cell_(f.full_cell_), indices_(f.indices_)
|
||||
{}
|
||||
|
||||
int feature_dimension() const /* Concept */
|
||||
int face_dimension() const /* Concept */
|
||||
{
|
||||
int i(0);
|
||||
while( -1 != indices_[i] ) ++i;
|
||||
|
|
@ -68,7 +68,7 @@ public:
|
|||
|
||||
int index(const int i) const /* Concept */
|
||||
{
|
||||
CGAL_precondition( (0 <= i) && (i <= feature_dimension()) );
|
||||
CGAL_precondition( (0 <= i) && (i <= face_dimension()) );
|
||||
return indices_[i];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue