mirror of https://github.com/CGAL/cgal
use \cgalCite instead of \cite
using perl -i -pe 's/\\cite\s*{?([a-zA-Z0-9:-]+)}?/\\cgalCite{$1}/g'
This commit is contained in:
parent
b0f9ed3188
commit
d282ade623
|
|
@ -377,7 +377,7 @@ whole set of input primitives. All primitives are then sorted along
|
|||
the longest coordinate axis of this box, and the primitives are
|
||||
separated into two equal size sets. This procedure is applied
|
||||
recursively until an AABB contains a single primitive. The tree is
|
||||
leafless as presented in `OPCODE` \cite cgal:t-ocdl-05\. An
|
||||
leafless as presented in `OPCODE` \cgalCite{cgal:t-ocdl-05}\. An
|
||||
intersection query traverses the tree by computing intersection tests
|
||||
only with respect to the AABBs during traversal, and with respect to
|
||||
the input primitives at the end of traversal (in the leafs of the
|
||||
|
|
|
|||
|
|
@ -267,7 +267,7 @@ compute the <i>least</i> common multiple of the denominators.
|
|||
|
||||
The package is part of \cgal since release 3.3. Of course the package is based
|
||||
on the former Number type support of CGAL. This goes back to Stefan Schirra and Andreas Fabri. But on the other hand the package is to a large extend influenced
|
||||
by the experience with the number type support in <span class="textsc">Exacus</span> \cite beh-eeeafcs-05,
|
||||
by the experience with the number type support in <span class="textsc">Exacus</span> \cgalCite{beh-eeeafcs-05},
|
||||
which in the main goes back to
|
||||
Lutz Kettner, Susan Hert, Arno Eigenwillig and Michael Hemmer.
|
||||
However, the package abstracts from the pure support for
|
||||
|
|
|
|||
|
|
@ -248,22 +248,22 @@ of LEDA and CORE.
|
|||
The `Algebraic_kernel_d_1<Coeff>` represents an algebraic real root by a square
|
||||
free polynomial and an isolating interval that uniquely defines the root.
|
||||
The current method to isolate roots is the Bitstream Descartes
|
||||
method \cite eigenwillig-phd-08.
|
||||
method \cgalCite{eigenwillig-phd-08}.
|
||||
The used method to refine the approximation of an algebraic real root is a
|
||||
slightly modified (filtered) version of the one presented in \cite abbott-qir-06.
|
||||
slightly modified (filtered) version of the one presented in \cgalCite{abbott-qir-06}.
|
||||
The method has quadratic convergence.
|
||||
|
||||
`Algebraic_kernel_d_2<Coeff>` is based on an algorithm computing a
|
||||
geometric-topological analysis of a single curve \cite ekw-fast-07 and of a
|
||||
pair of curves \cite ek-exact-08.
|
||||
geometric-topological analysis of a single curve \cgalCite{ekw-fast-07} and of a
|
||||
pair of curves \cgalCite{ek-exact-08}.
|
||||
The main idea behind both analyses is to compute the critical
|
||||
x-coordinates of curves and curve pairs by projection (resultants), and compute
|
||||
additional information about the critical fibers using subresultants
|
||||
and Sturm-Habicht sequences \cite grlr-sturm-habicht-98.
|
||||
and Sturm-Habicht sequences \cgalCite{grlr-sturm-habicht-98}.
|
||||
With that information, the fiber at
|
||||
critical x-coordinates is computed by a variant of the Bitstream
|
||||
Descartes method.
|
||||
See also \cite kerber-phd-09 for a comprehensive description of
|
||||
See also \cgalCite{kerber-phd-09} for a comprehensive description of
|
||||
these techniques.
|
||||
Almost all functors in the class that take a `Polynomial_2`
|
||||
object as argument trigger such an analysis as a main computation
|
||||
|
|
@ -286,9 +286,9 @@ time-consuming step, and should be avoided for efficiency reasons if possible.
|
|||
\subsection Algebraic_kernel_dAlgebraicKernelsBasedon Algebraic Kernels Based on RS
|
||||
|
||||
The package offers two univariate algebraic kernels that are based on
|
||||
the library RS \cite cgal:r-rs, namely `Algebraic_kernel_rs_gmpz_d_1`
|
||||
the library RS \cgalCite{cgal:r-rs}, namely `Algebraic_kernel_rs_gmpz_d_1`
|
||||
and `Algebraic_kernel_rs_gmpq_d_1`. As the names indicate,
|
||||
the kernels are based on the library RS \cite cgal:r-rs and support univariate
|
||||
the kernels are based on the library RS \cgalCite{cgal:r-rs} and support univariate
|
||||
polynomials over `Gmpz` or `Gmpq`, respectively.
|
||||
|
||||
In general we encourage to use `Algebraic_kernel_rs_gmpz_d_1`
|
||||
|
|
@ -302,7 +302,7 @@ not always be a major issue, the `Algebraic_kernel_rs_gmpq_d_1`
|
|||
is provided for convenience.
|
||||
|
||||
The core of both kernels is the implementation of the interval Descartes
|
||||
algorithm \cite cgal:rz-jcam-04 of the library RS \cite cgal:r-rs,
|
||||
algorithm \cgalCite{cgal:rz-jcam-04} of the library RS \cgalCite{cgal:r-rs},
|
||||
which is used to isolate the roots of the polynomial.
|
||||
The RS library restricts its attention to univariate integer
|
||||
polynomials and some substantial gain of efficiency can be made by using a kernel
|
||||
|
|
@ -310,11 +310,11 @@ that does not follow the generic programming paradigm, by avoiding
|
|||
interfaces between layers. Specifically, working with
|
||||
only one number type allows to optimize some polynomial operations
|
||||
as well as memory handling. The implementation of these kernels
|
||||
make heavy use of the <span class="textsc">Mpfr</span> \cite cgal:mt-mpfr and <span class="textsc">Mpfi</span> \cite cgal:r-mpfi
|
||||
make heavy use of the <span class="textsc">Mpfr</span> \cgalCite{cgal:mt-mpfr} and <span class="textsc">Mpfi</span> \cgalCite{cgal:r-mpfi}
|
||||
libraries, and of their \cgal interfaces, `Gmpfr` and `Gmpfi`.
|
||||
The algebraic numbers (roots of the polynomials) are represented
|
||||
in the two RS kernels by a `Gmpfi` interval and a pointer to
|
||||
the polynomial of which they are roots. See \cite cgal:lpt-wea-09
|
||||
the polynomial of which they are roots. See \cgalCite{cgal:lpt-wea-09}
|
||||
for more details on the implementation, tests of these kernels,
|
||||
comparisons with other algebraic kernels and discussions about the
|
||||
efficiency.
|
||||
|
|
@ -358,7 +358,7 @@ were written by Eric Berberich, Michael Hemmer, and
|
|||
Monique Teillaud.
|
||||
The design history of the package is fairly old and several
|
||||
ideas that influenced this package can already be found
|
||||
in \cite cgal:bhkt-risak-07. Since then, the initial design underwent
|
||||
in \cgalCite{cgal:bhkt-risak-07}. Since then, the initial design underwent
|
||||
considerable changes. For instance, it was decided that the algebraic
|
||||
numbers should be under the control of the algebraic kernel. On the other
|
||||
hand the initial support for polynomials was extended to a separate
|
||||
|
|
@ -368,7 +368,7 @@ ideas that was brought to them throughout the last years. In particular,
|
|||
they want to thank Menelaos Karavelas and Elias Tsigaridas for their
|
||||
initial contributions.
|
||||
|
||||
The two generic models where initially developed as part of the <span class="textsc">Exacus</span> \cite beh+-eeeafcs-05 project.
|
||||
The two generic models where initially developed as part of the <span class="textsc">Exacus</span> \cgalCite{beh}+-eeeafcs-05 project.
|
||||
However, the models are now fully integrated into the \cgal library,
|
||||
since also the relevant layers of <span class="textsc">Exacus</span> are now part of \cgal.
|
||||
The main authors for `Algebraic_kernel_d_1<Coeff>` and `Algebraic_kernel_d_2<Coeff>` are
|
||||
|
|
@ -376,9 +376,9 @@ Michael Hemmer and Michael Kerber, respectively. Notwithstanding, the authors al
|
|||
contribution of all authors of the <span class="textsc">Exacus</span> project,
|
||||
particularly the contribution of Arno Eigenwillig, Sebastian Limbach and Pavel Emeliyanenko.
|
||||
|
||||
The two univariate kernels that interface the library RS \cite cgal:r-rs were
|
||||
The two univariate kernels that interface the library RS \cgalCite{cgal:r-rs} were
|
||||
written by Luis Peñaranda and Sylvain Lazard.
|
||||
Both models interface the library RS \cite cgal:r-rs by Fabrice Rouillier.
|
||||
Both models interface the library RS \cgalCite{cgal:r-rs} by Fabrice Rouillier.
|
||||
The authors want to thank Fabrice Rouillier and Elias Tsigaridas for
|
||||
strong support and many useful discussions that lead to the integration of RS.
|
||||
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@ See also the documentation of `Sqrt_extension<NT,ROOT>`.
|
|||
\cgalAdvancedEnd
|
||||
|
||||
The current method to isolate roots is the bitstream Descartes method
|
||||
presented in \cite eigenwillig-phd-08. The used method to refine the
|
||||
presented in \cgalCite{eigenwillig-phd-08}. The used method to refine the
|
||||
approximation of an algebraic real root is a slightly modified
|
||||
(filtered) version of the one presented in \cite abbott-qir-06. The
|
||||
(filtered) version of the one presented in \cgalCite{abbott-qir-06}. The
|
||||
method has quadratic convergence.
|
||||
|
||||
\cgalModels `AlgebraicKernel_d_1`
|
||||
|
|
|
|||
|
|
@ -5,16 +5,16 @@ namespace CGAL {
|
|||
\ingroup PkgAlgebraicKerneldModels
|
||||
|
||||
This class is based on an algorithm computing a
|
||||
geometric-topological analysis of a single curve \cite ekw-fast-07 and of a
|
||||
pair of curves \cite ek-exact-08.
|
||||
geometric-topological analysis of a single curve \cgalCite{ekw-fast-07} and of a
|
||||
pair of curves \cgalCite{ek-exact-08}.
|
||||
The main idea behind both analyses is to compute the critical
|
||||
x-coordinates of curves and curve pairs by projection (resultants), and compute
|
||||
additional information about the critical fibers using subresultants
|
||||
and Sturm-Habicht sequences \cite grlr-sturm-habicht-98.
|
||||
and Sturm-Habicht sequences \cgalCite{grlr-sturm-habicht-98}.
|
||||
With that information, the fiber at
|
||||
critical x-coordinates is computed by a variant of the Bitstream
|
||||
Descartes method.
|
||||
See also \cite kerber-phd-09 for a comprehensive description of
|
||||
See also \cgalCite{kerber-phd-09} for a comprehensive description of
|
||||
these techniques.
|
||||
|
||||
A point \f$ p\f$ of type `Algebraic_real_2` is represented
|
||||
|
|
|
|||
|
|
@ -17,9 +17,9 @@ quite a vague notion and there are probably many possible
|
|||
interpretations, the \f$ \alpha\f$-shape being one of them. Alpha shapes
|
||||
can be used for shape reconstruction from a dense unorganized set of
|
||||
data points. Indeed, an \f$ \alpha\f$-shape is demarcated by a frontier,
|
||||
which is a linear approximation of the original shape \cite bb-srmua-97t.
|
||||
which is a linear approximation of the original shape \cgalCite{bb-srmua-97t}.
|
||||
|
||||
As mentioned in Edelsbrunner's and Mücke's paper \cite em-tdas-94,
|
||||
As mentioned in Edelsbrunner's and Mücke's paper \cgalCite{em-tdas-94},
|
||||
one can intuitively think of an \f$ \alpha\f$-shape as the
|
||||
following. Imagine a huge mass of ice-cream making up the space \f$ \mathbb{R}^3\f$
|
||||
and containing the points as "hard" chocolate pieces. Using one of
|
||||
|
|
@ -58,7 +58,7 @@ open disk (resp. ball) of radius \f$ \sqrt{\alpha}\f$ through the vertices of th
|
|||
simplex that does not contain any other point of \f$ S\f$, for the metric used in
|
||||
the computation of the underlying triangulation. The corresponding
|
||||
\f$ \alpha\f$-shape is defined as the underlying interior space of the
|
||||
\f$ \alpha\f$-complex (see \cite em-tdas-94).
|
||||
\f$ \alpha\f$-complex (see \cgalCite{em-tdas-94}).
|
||||
|
||||
In general, an \f$ \alpha\f$-complex is a non-connected and non-pure polytope, it
|
||||
means, that one \f$ k\f$-simplex, \f$ 0 \leq k \leq d-1\f$ is not necessary adjacent to
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@
|
|||
\cgalPkgDescriptionEnd
|
||||
|
||||
This chapter presents a framework for alpha shapes. The description is based on
|
||||
the articles \cite em-tdas-94, \cite e-was-92. Alpha shapes are
|
||||
the articles \cgalCite{em-tdas-94}, \cgalCite{e-was-92}. Alpha shapes are
|
||||
the generalization of the convex hull of a point set. Let \f$ S\f$ be a finite set of
|
||||
points in \f$ \mathbb{R}^d\f$, \f$ d = 2,3\f$ and \f$ \alpha\f$ a parameter with \f$ 0 \leq \alpha \leq
|
||||
\infty\f$. For \f$ \alpha = \infty\f$, the \f$ \alpha\f$-shape is the convex hull of \f$ S\f$. As
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ quite a vague notion and there are probably many possible
|
|||
interpretations, the alpha shape being one of them. Alpha shapes
|
||||
can be used for shape reconstruction from a dense unorganized set of
|
||||
data points. Indeed, an alpha shape is demarcated by a frontier,
|
||||
which is a linear approximation of the original shape \cite bb-srmua-97t.
|
||||
which is a linear approximation of the original shape \cgalCite{bb-srmua-97t}.
|
||||
|
||||
As mentioned in Edelsbrunner's and Mücke's paper \cite em-tdas-94,
|
||||
As mentioned in Edelsbrunner's and Mücke's paper \cgalCite{em-tdas-94},
|
||||
one can intuitively think of an alpha shape as the
|
||||
following. Imagine a huge mass of ice-cream making up the space \f$ \mathbb{R}^3\f$
|
||||
and containing the points as "hard" chocolate pieces. Using one of
|
||||
|
|
@ -63,7 +63,7 @@ an empty circumscribing sphere with squared radius equal or smaller than \f$ \al
|
|||
Here "empty" means that the open sphere
|
||||
do not include any points of \f$ S\f$.
|
||||
The alpha shape is then simply the domain covered by the simplices
|
||||
of the alpha complex (see \cite em-tdas-94).
|
||||
of the alpha complex (see \cgalCite{em-tdas-94}).
|
||||
|
||||
In general, an alpha complex is a disconnected and non-pure complex:
|
||||
This means in particular that the alpha complex may have
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ an empty circumscribing sphere with squared radius equal or smaller than \f$ \a
|
|||
Here "empty" means that the open sphere
|
||||
do not include any points of \f$ S\f$.
|
||||
The alpha shape is then simply the domain covered by the simplices
|
||||
of the alpha complex (see \cite em-tdas-94).
|
||||
of the alpha complex (see \cgalCite{em-tdas-94}).
|
||||
|
||||
In general, an alpha complex is a non-connected and non-pure complex.
|
||||
This means in particular that the alpha complex may have
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ deletions on line. The corresponding \cgal class is called
|
|||
`Apollonius_graph_2<ApolloniusGraphTraits_2,ApolloniusGraphDataStructure_2>`
|
||||
and will be discussed in more detail in the sequel. The interested
|
||||
reader may want to refer to the paper by Karavelas and Yvinec
|
||||
\cite cgal:ky-dawvd-02 for the general idea as well as the details of the
|
||||
\cgalCite{cgal:ky-dawvd-02} for the general idea as well as the details of the
|
||||
algorithm implemented.
|
||||
|
||||
Before describing the details of the implementation we make a brief
|
||||
|
|
@ -240,7 +240,7 @@ The predicates required for the computation of the Apollonius graph
|
|||
are rather complicated. It is not the purpose of this document to
|
||||
discuss them in detail. The interested reader may refer to the papers
|
||||
by Karavelas and Emiris for the details
|
||||
\cite cgal:ke-ppawv-02, \cite cgal:ke-rctac-03. However, we would like to give a brief
|
||||
\cgalCite{cgal:ke-ppawv-02}, \cgalCite{cgal:ke-rctac-03}. However, we would like to give a brief
|
||||
overview of what they
|
||||
compute. There are several predicates needed by this algorithm. We
|
||||
will discuss the most important/complicated ones. It turns out that
|
||||
|
|
@ -414,7 +414,7 @@ manual.
|
|||
The `Apollonius_graph_hierarchy_2<ApolloniusGraphTraits_2,ApolloniusGraphDataStructure_2>` class is nothing but the equivalent of the `Triangulation_hierarchy_2`
|
||||
class, applied to the Apollonius graph. It consists of a series of
|
||||
Apollonius graphs constructed in a manner analogous to the Delaunay
|
||||
hierarchy by Devillers \cite d-iirdt-98. The class
|
||||
hierarchy by Devillers \cgalCite{d-iirdt-98}. The class
|
||||
`Apollonius_graph_hierarchy_2<ApolloniusGraphTraits_2,ApolloniusGraphDataStructure_2>`
|
||||
has exactly the same interface and functionality as the
|
||||
`Apollonius_graph_2<ApolloniusGraphTraits_2,ApolloniusGraphDataStructure_2>`
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
|||
The class `Apollonius_graph_filtered_traits_2` provides a model for the
|
||||
`ApolloniusGraphTraits_2` concept.
|
||||
|
||||
The class `Apollonius_graph_filtered_traits_2` uses the filtering technique \cite cgal:bbp-iayed-01
|
||||
The class `Apollonius_graph_filtered_traits_2` uses the filtering technique \cgalCite{cgal:bbp-iayed-01}
|
||||
to achieve traits for the `Apollonius_graph_2<Gt,Agds>` class
|
||||
with efficient and exact predicates given an exact
|
||||
kernel `EK` and a filtering kernel `FK`. The geometric
|
||||
|
|
@ -28,7 +28,7 @@ whereas the second one requires the exact evaluation of signs of
|
|||
ring-type expressions, i.e., expressions involving only additions,
|
||||
subtractions and multiplications.
|
||||
The way the predicates are evaluated is discussed in
|
||||
\cite cgal:ke-ppawv-02, \cite cgal:ke-rctac-03.
|
||||
\cgalCite{cgal:ke-ppawv-02}, \cgalCite{cgal:ke-rctac-03}.
|
||||
|
||||
The default values for the template parameters are as follows:
|
||||
`CM = CGAL::Ring_tag`,
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ find the nearest neighbor of \f$ p\f$ as in the
|
|||
`Apollonius_graph_2<Gt,Agds>` class. At every subsequent level \f$ i\f$
|
||||
we use the nearest neighbor found at level \f$ i+1\f$ to find the nearest
|
||||
neighbor at level \f$ i\f$. This is a variant of the corresponding
|
||||
hierarchy for points found in \cite d-iirdt-98.
|
||||
hierarchy for points found in \cgalCite{d-iirdt-98}.
|
||||
The class has two template parameters which have essentially the same
|
||||
meaning as in the `Apollonius_graph_2<Gt,Agds>` class. The first
|
||||
template parameter must be a model of the
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ evaluation of signs of ring-type expressions, i.e., expressions
|
|||
involving only additions, subtractions and multiplications. The
|
||||
default value for `Method_tag` is `CGAL::Ring_tag`.
|
||||
The way the predicates are evaluated is discussed in
|
||||
\cite cgal:ke-ppawv-02, \cite cgal:ke-rctac-03.
|
||||
\cgalCite{cgal:ke-ppawv-02}, \cgalCite{cgal:ke-rctac-03}.
|
||||
|
||||
\cgalModels `ApolloniusGraphTraits_2`
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ Given a set \f$ \cal C\f$ of planar curves, the <I>arrangement</I>
|
|||
one-dimensional and two-dimensional cells, called <I>vertices</I>, <I>edges</I> and <I>faces</I>, respectively induced by the curves in \f$ \cal C\f$.
|
||||
Arrangements are ubiquitous in the computational-geometry
|
||||
literature and have many applications;
|
||||
see, e.g., \cite as-aa-00, \cite cgal:h-a-04.
|
||||
see, e.g., \cgalCite{as-aa-00}, \cgalCite{cgal:h-a-04}.
|
||||
|
||||
The curves in \f$ \cal C\f$ can intersect each other (a single curve may also
|
||||
be self-intersecting or may be comprised of several disconnected branches)
|
||||
|
|
@ -76,7 +76,7 @@ connected faces. Every face can have several holes contained in its
|
|||
interior (or no holes at all). In addition, every face may contain
|
||||
isolated vertices in its interior. See \cgalFigureRef{arr_figseg_dcel}
|
||||
for an illustration of the various \sc{Dcel} features. For more details
|
||||
on the \sc{Dcel} data structure see \cite bkos-cgaa-00 Chapter 2.
|
||||
on the \sc{Dcel} data structure see \cgalCite{bkos-cgaa-00} Chapter 2.
|
||||
|
||||
\cgalFigureBegin{arr_figseg_dcel,arr_segs.png}
|
||||
An arrangement of interior-disjoint line segments with some of the \sc{Dcel} records that represent it. The unbounded face \f$ f_0\f$ has a single connected component that forms a hole inside it, and this hole is comprised if several faces. The half-edge \f$ e\f$ is directed from its source vertex \f$ v_1\f$ to its target vertex \f$ v_2\f$. This edge, together with its twin \f$ e'\f$, correspond to a line segment that connects the points associated with \f$ v_1\f$ and \f$ v_2\f$ and separates the face \f$ f_1\f$ from \f$ f_2\f$. The predecessor \f$ e_{\rm prev}\f$ and successor \f$ e_{\rm next}\f$ of \f$ e\f$ are part of the chain that form the outer boundary of the face \f$ f_2\f$. The face \f$ f_1\f$ has a more complicated structure as it contains two holes in its interior: One hole consists of two adjacent faces \f$ f_3\f$ and \f$ f_4\f$, while the other hole is comprised of two edges. \f$ f_1\f$ also contains two isolated vertices \f$ u_1\f$ and \f$ u_2\f$ in its interior.
|
||||
|
|
@ -871,7 +871,7 @@ print_point_location
|
|||
|
||||
Each of the various point-location class templates employs a different
|
||||
algorithm or <I>strategy</I>\cgalFootnote{We use the term <I>strategy</I>
|
||||
is borrowed from the design-pattern taxonomy \cite cgal:ghjv-dpero-95, Chapter 5.}
|
||||
is borrowed from the design-pattern taxonomy \cgalCite{cgal:ghjv-dpero-95}, Chapter 5.}
|
||||
for answering queries:
|
||||
<UL>
|
||||
<LI> `Arr_naive_point_location<Arrangement>` employes the
|
||||
|
|
@ -911,8 +911,8 @@ for answering queries:
|
|||
classes included in the <I>2D Arrangement</I> package are models of
|
||||
this refined concept.
|
||||
<LI>`Arr_trapezoid_ric_point_location<Arrangement>` implements
|
||||
Mulmuley's point-location algorithm \cite m-fppa-90; see
|
||||
also \cite bkos-cgaa-00, Chapter 6. The arrangement faces are
|
||||
Mulmuley's point-location algorithm \cgalCite{m-fppa-90}; see
|
||||
also \cgalCite{bkos-cgaa-00}, Chapter 6. The arrangement faces are
|
||||
decomposed into simpler cells each of constant complexity, known as
|
||||
<I>pseudo-trapezoids</I>, and a search structure (a directed acyclic
|
||||
graph) is constructed on top of these cells, facilitating the search
|
||||
|
|
@ -950,7 +950,7 @@ The trapezoidal map RIC algorithm has expected logarithmic query time,
|
|||
while the query time for the landmark strategy may be as large as
|
||||
linear. In practice however, the query times of both strategies are
|
||||
competitive. For a detailed experimental comparison
|
||||
see \cite hh-eplca-05
|
||||
see \cgalCite{hh-eplca-05}
|
||||
|
||||
Updating the auxiliary data structures of the trapezoidal map RIC
|
||||
algorithm is done very efficiently. On the other hand, updating the
|
||||
|
|
@ -2406,7 +2406,7 @@ maintenance of arrangements of such arcs. Rational functions, and
|
|||
polynomial functions in particular, are not only interesting in their
|
||||
own right, they are also very useful for approximating or
|
||||
interpolating more complicated curves; see,
|
||||
e.g., [\cite cgal:ptvf-nrcpp-02 Chapter 3.
|
||||
e.g., [\cgalCite{cgal:ptvf-nrcpp-02} Chapter 3.
|
||||
|
||||
`Arr_rational_function_traits_2<AlgebraicKernel_d_1>` is a model
|
||||
of the concepts `ArrangementTraits_2`,
|
||||
|
|
@ -2822,7 +2822,7 @@ require auxiliary data-structures (see Section \ref arr_ssecpl),
|
|||
which must be notified on various local changes in the arrangement,
|
||||
in order to keep their data structures up-to-date. The arrangement
|
||||
package offers a mechanism that uses <I>observers</I>
|
||||
(see \cite cgal:ghjv-dpero-95) that can be
|
||||
(see \cgalCite{cgal:ghjv-dpero-95}) that can be
|
||||
attached to an arrangement instance and receive notifications
|
||||
about the changes this arrangement goes through.
|
||||
|
||||
|
|
@ -3038,7 +3038,7 @@ the annual precipitation is between 1000mm and 1500mm.
|
|||
|
||||
Computing the overlay of two planar arrangement is also useful for
|
||||
supporting Boolean set operations on polygons (or generalized polygons,
|
||||
see, e.g., \cite cgal:behhms-cbcab-02).
|
||||
see, e.g., \cgalCite{cgal:behhms-cbcab-02}).
|
||||
|
||||
The function `overlay (arr_a, arr_b, ovl_arr, ovl_traits)` accepts
|
||||
two input arrangement instances `arr_a` and `arr_b`, and constructs
|
||||
|
|
|
|||
|
|
@ -7,15 +7,15 @@ namespace CGAL {
|
|||
\anchor arr_reftrap_pl
|
||||
|
||||
The `Arr_trapezoid_ric_point_location` class implements the incremental randomized algorithm
|
||||
introduced by Mulmuley \cite m-fppa-90 as presented by
|
||||
Seidel \cite s-sfira-91 (see also [\cite bkos-cgaa-00 Chapter 6).
|
||||
introduced by Mulmuley \cgalCite{m-fppa-90} as presented by
|
||||
Seidel \cgalCite{s-sfira-91} (see also [\cgalCite{bkos-cgaa-00} Chapter 6).
|
||||
It subdivides each arrangement face to pseudo-trapezoidal cells, each
|
||||
of constant complexity, and constructs and maintains a linear-size search
|
||||
structure on top of these cells, such that each query can be answered
|
||||
in \f$ O(\log n)\f$ time, where \f$ n\f$ is the complexity of the arrangement.
|
||||
|
||||
Constructing the search structures takes \f$ O(n \log n)\f$ expected time
|
||||
and may require a small number of rebuilds \cite hkh-iiplgtds-12. Therefore
|
||||
and may require a small number of rebuilds \cgalCite{hkh-iiplgtds-12}. Therefore
|
||||
attaching a trapezoidal point-location object to an existing arrangement
|
||||
may incur some overhead in running times. In addition, the point-location
|
||||
object needs to keep its auxiliary data structures up-to-date as the
|
||||
|
|
|
|||
|
|
@ -361,7 +361,7 @@ public:
|
|||
|
||||
The following handles, iterators, and circulators all have respective
|
||||
constant counterparts (for example, in addition to `Vertex_iterator`
|
||||
the type `Vertex_const_iterator` is also defined). See \cite cgal:ms-strg-96
|
||||
the type `Vertex_const_iterator` is also defined). See \cgalCite{cgal:ms-strg-96}
|
||||
for a discussion of constant versus mutable iterator
|
||||
types. The mutable types are assignable to their constant
|
||||
counterparts. `Vertex_iterator`, `Halfedge_iterator`, and
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ the plane, we keep track of the order of curves intersecting it.
|
|||
This order changes at a finite number of <I>event points</I>, such that
|
||||
we only have to calculate the intersection points
|
||||
between two curves when they become contiguous. For more details on the
|
||||
<I>sweep-line algorithm</I> see, for example, \cite bkos-cgaa-00, Chapter 2.
|
||||
<I>sweep-line algorithm</I> see, for example, \cgalCite{bkos-cgaa-00}, Chapter 2.
|
||||
|
||||
This chapter describes three functions implemented using the sweep-line
|
||||
algorithm: given a collection of input curves, compute all intersection points,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ faces as edges of the dual graph.
|
|||
|
||||
As the scope of \cgal is geometry and not graph algorithms, we
|
||||
provide the necessary classes and functions that allow to use the
|
||||
algorithms of the <A HREF="http://www.boost.org/libs/graph/doc/index.html">Boost Graph Library (BGL)</A> \cite cgal:sll-bgl-02 for \cgal data structures.
|
||||
algorithms of the <A HREF="http://www.boost.org/libs/graph/doc/index.html">Boost Graph Library (BGL)</A> \cgalCite{cgal:sll-bgl-02} for \cgal data structures.
|
||||
|
||||
\section BGLA A Short Introduction to the Boost Graph Library
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ for the 2D triangulation classes.
|
|||
|
||||
The triangulations of \cgal are all models of the concepts
|
||||
`BidirectionalGraph` and `VertexAndEdgeListGraph` of the Boost Graph
|
||||
Library \cite cgal:sll-bgl-02.
|
||||
Library \cgalCite{cgal:sll-bgl-02}.
|
||||
|
||||
|
||||
The mapping between vertices and edges of the triangulation and the
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ of the boundary.
|
|||
<LI>A <B>regularized Boolean set-operation</B> \f$ \mbox{op}^*\f$ can be obtained by
|
||||
first taking the interior of the resultant point set of an <I>ordinary</I>
|
||||
Boolean set-operation \f$ (P\ \mbox{op}\ Q)\f$ and then by taking the
|
||||
closure \cite cgal:h-sm-04. That is,
|
||||
closure \cgalCite{cgal:h-sm-04}. That is,
|
||||
\f$ P\ \mbox{op}^*\ Q = \mbox{closure}(\mbox{interior} (P\ \mbox{op}\ Q))\f$.
|
||||
Regularized Boolean set-operations appear in Constructive Solid
|
||||
Geometry (CSG), because regular sets are closed under regularized
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ using the \f$ d\f$-dimensional \cgal kernel; the models
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We implement Khachyian's algorithm for rounding
|
||||
polytopes \cite cgal:k-rprnm-96. Internally, we use
|
||||
polytopes \cgalCite{cgal:k-rprnm-96}. Internally, we use
|
||||
`double`-arithmetic and (initially a single)
|
||||
Cholesky-decomposition. The algorithm's running time is
|
||||
\f$ {\cal O}(nd^2(\epsilon^{-1}+\ln d + \ln\ln(n)))\f$, where \f$ n=|P|\f$ and
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ can be formulated as an optimization problem with linear constraints and a
|
|||
linear objective
|
||||
function.
|
||||
The solution is obtained using our exact
|
||||
solver for linear and quadratic programs \cite gs-eegqp-00.
|
||||
solver for linear and quadratic programs \cgalCite{gs-eegqp-00}.
|
||||
|
||||
The creation time is almost always linear in the number of points. Access
|
||||
functions and predicates take constant time, inserting a point takes almost
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ two-dimensional \cgal kernel.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We implement the incremental algorithm of Welzl, with move-to-front
|
||||
heuristic \cite w-sedbe-91a. The whole implementation is described
|
||||
in \cite cgal:gs-seceg-98.
|
||||
heuristic \cgalCite{w-sedbe-91a}. The whole implementation is described
|
||||
in \cgalCite{cgal:gs-seceg-98}.
|
||||
|
||||
If randomization is
|
||||
chosen, the creation time is almost always linear in the number of points.
|
||||
|
|
|
|||
|
|
@ -35,9 +35,9 @@ two-dimensional \cgal kernel.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We implement the incremental algorithm of Welzl, with move-to-front
|
||||
heuristic \cite w-sedbe-91a, using the primitives as described
|
||||
in \cite gs-epsee-97, \cite cgal:gs-seefe-97a. The whole implementation is described
|
||||
in \cite cgal:gs-seeeg-98.
|
||||
heuristic \cgalCite{w-sedbe-91a}, using the primitives as described
|
||||
in \cgalCite{gs-epsee-97}, \cgalCite{cgal:gs-seefe-97a}. The whole implementation is described
|
||||
in \cgalCite{cgal:gs-seeeg-98}.
|
||||
|
||||
If randomization is
|
||||
chosen, the creation time is almost always linear in the number of points.
|
||||
|
|
|
|||
|
|
@ -56,9 +56,9 @@ for two-, three-, and \f$ d\f$-dimensional points respectively.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We implement the algorithm of Welzl with move-to-front
|
||||
heuristic \cite w-sedbe-91a for small point sets, combined with a new
|
||||
heuristic \cgalCite{w-sedbe-91a} for small point sets, combined with a new
|
||||
efficient method for large sets, which is particularly tuned for
|
||||
moderately large dimension (\f$ d \leq 20\f$) \cite cgal:g-frseb-99.
|
||||
moderately large dimension (\f$ d \leq 20\f$) \cgalCite{cgal:g-frseb-99}.
|
||||
The creation time is almost
|
||||
always linear in the number of points. Access functions and predicates
|
||||
take constant time, inserting a point might take up to linear time,
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ might still be an option in case your input number type cannot
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We implement two algorithms, the LP-algorithm and a
|
||||
heuristic \cite msw-sblp-92. As described in the documentation of
|
||||
heuristic \cgalCite{msw-sblp-92}. As described in the documentation of
|
||||
concept `MinSphereOfSpheresTraits`, each has its advantages and
|
||||
disadvantages: Our implementation of the LP-algorithm has maximal
|
||||
expected running time \f$ O(2^d n)\f$, while the heuristic comes without
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ type from one the \cgal kernels. In this case, a default traits class
|
|||
|
||||
We use a rotating caliper
|
||||
algorithm
|
||||
\cite stvwe-mepa-95, \cite v-fmep-90 with worst case running time linear
|
||||
\cgalCite{stvwe-mepa-95}, \cgalCite{v-fmep-90} with worst case running time linear
|
||||
in the number of input points.
|
||||
|
||||
\cgalHeading{Example}
|
||||
|
|
@ -115,7 +115,7 @@ is `CGAL::Point_2<K>` for some kernel `K`.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We use a rotating caliper
|
||||
algorithm \cite t-sgprc-83
|
||||
algorithm \cgalCite{t-sgprc-83}
|
||||
with worst case running time linear in the number of input points.
|
||||
|
||||
\cgalHeading{Example}
|
||||
|
|
@ -183,7 +183,7 @@ is `CGAL::Point_2<K>` for some kernel `K`.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
We use a rotating caliper
|
||||
algorithm \cite t-sgprc-83
|
||||
algorithm \cgalCite{t-sgprc-83}
|
||||
with worst case running time linear in the number of input points.
|
||||
|
||||
\cgalHeading{Example}
|
||||
|
|
|
|||
|
|
@ -248,9 +248,9 @@ The runtime is linear for \f$ p \in \{2,\,3\}\f$ and
|
|||
\f$ \mathcal{O}(n \cdot \log n)\f$ for \f$ p = 4\f$ where \f$ n\f$ is the number of
|
||||
input points. These runtimes are worst case optimal. The \f$ 3\f$-center
|
||||
algorithm uses a prune-and-search technique described in
|
||||
\cite cgal:h-slacr-99. The \f$ 4\f$-center implementation uses sorted matrix
|
||||
search \cite fj-fkppc-83, \cite fj-gsrsm-84 and fast algorithms for
|
||||
piercing rectangles \cite sw-rpppp-96.
|
||||
\cgalCite{cgal:h-slacr-99}. The \f$ 4\f$-center implementation uses sorted matrix
|
||||
search \cgalCite{fj-fkppc-83}, \cgalCite{fj-gsrsm-84} and fast algorithms for
|
||||
piercing rectangles \cgalCite{sw-rpppp-96}.
|
||||
|
||||
\cgalHeading{Example}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ with. It must typedef to either `CGAL::Default_algorithm`,
|
|||
The recommended choice is the first, which is a synonym to the one
|
||||
of the other two methods which we consider "the best in practice."
|
||||
In case of `CGAL::LP_algorithm`, the minsphere will be computed
|
||||
using the LP-algorithm \cite msw-sblp-92, which in our
|
||||
using the LP-algorithm \cgalCite{msw-sblp-92}, which in our
|
||||
implementation has maximal expected running time \f$ O(2^d n)\f$ (in the
|
||||
number of operations on the number type `FT`). In case of
|
||||
`CGAL::Farthest_first_heuristic`, a simple heuristic will be
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ complicated geometric primitives contained in the boxes.
|
|||
\image html box_inters.png
|
||||
\image latex box_inters.png
|
||||
|
||||
We provide an efficient algorithm \cite cgal:ze-fsbi-02 for finding all
|
||||
We provide an efficient algorithm \cgalCite{cgal:ze-fsbi-02} for finding all
|
||||
intersecting pairs for large numbers of iso-oriented boxes, i.e.,
|
||||
typically these will be such bounding boxes of more complicated geometries.
|
||||
One immediate application of this algorithm is the detection of all
|
||||
|
|
@ -36,7 +36,7 @@ applying the algorithm on a large set of triangles in space, we give
|
|||
an example program later in this chapter. Not so obvious applications
|
||||
are proximity queries and distance computations among such surfaces,
|
||||
see Section \ref secbox_inters_example_proximity for an example
|
||||
and \cite cgal:ze-fsbi-02 for more details.
|
||||
and \cgalCite{cgal:ze-fsbi-02} for more details.
|
||||
|
||||
\section secboxintersdef Definition
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ Two implementations of iso-oriented boxes are provided;
|
|||
handle that can be used to point to the full geometry that is
|
||||
approximated by the box. Both implementations have template parameters
|
||||
for the number type used for the interval bounds, for the fixed
|
||||
dimension of the box, and for a policy class \cite cgal:a-mcdgp-01
|
||||
dimension of the box, and for a policy class \cgalCite{cgal:a-mcdgp-01}
|
||||
selecting among several solutions for providing the `id`-number.
|
||||
|
||||
The function signatures for the bipartite case look as follows. The
|
||||
|
|
@ -343,11 +343,11 @@ discussion.
|
|||
|
||||
\section secboxintersperformance Runtime Performance
|
||||
|
||||
The implemented algorithm is described in \cite cgal:ze-fsbi-02 as
|
||||
The implemented algorithm is described in \cgalCite{cgal:ze-fsbi-02} as
|
||||
version two. Its performance depends on a `cutoff` parameter.
|
||||
When the size of both iterator ranges drops below the `cutoff`
|
||||
parameter the function switches from the streamed segment-tree
|
||||
algorithm to the two-way-scan algorithm, see \cite cgal:ze-fsbi-02
|
||||
algorithm to the two-way-scan algorithm, see \cgalCite{cgal:ze-fsbi-02}
|
||||
for the details.
|
||||
|
||||
The streamed segment-tree algorithm needs \f$ O(n \log^d (n) + k)\f$
|
||||
|
|
@ -368,7 +368,7 @@ of course the number of boxes to be checked and their distribution. In
|
|||
cases where the callback runtime is dominant, it may be best to make
|
||||
the threshold parameter small. Otherwise a `cutoff`\f$ =\sqrt{n}\f$ can
|
||||
lead to acceptable results. For well distributed boxes the original
|
||||
paper \cite cgal:ze-fsbi-02 gives optimal cutoffs in the thousands.
|
||||
paper \cgalCite{cgal:ze-fsbi-02} gives optimal cutoffs in the thousands.
|
||||
Anyway, for optimal runtime some experiments to compare different
|
||||
cutoff parameters are recommended.
|
||||
|
||||
|
|
@ -462,7 +462,7 @@ stored in the `boxes` so far.
|
|||
\section Box_intersection_dDesign Design and Implementation History
|
||||
|
||||
Lutz Kettner and Andreas Meyer implemented the algorithms starting
|
||||
from the publication \cite cgal:ze-fsbi-02. We had access to the
|
||||
from the publication \cgalCite{cgal:ze-fsbi-02}. We had access to the
|
||||
original C implementation of Afra Zomorodian, which helped clarifying
|
||||
some questions, and we are grateful to the help of Afra Zomorodian in
|
||||
answering our questions during his visit. We thank Steve Robbins for
|
||||
|
|
|
|||
|
|
@ -156,11 +156,11 @@ namespace CGAL {
|
|||
|
||||
\cgalHeading{Implementation}
|
||||
|
||||
The implemented algorithm is described in \cite cgal:ze-fsbi-02 as
|
||||
The implemented algorithm is described in \cgalCite{cgal:ze-fsbi-02} as
|
||||
version two. Its performance depends on a `cutoff` parameter.
|
||||
When the size of both iterator ranges drops below the `cutoff`
|
||||
parameter the function switches from the streamed segment-tree
|
||||
algorithm to the two-way-scan algorithm, see \cite cgal:ze-fsbi-02
|
||||
algorithm to the two-way-scan algorithm, see \cgalCite{cgal:ze-fsbi-02}
|
||||
for the details.
|
||||
|
||||
The streamed segment-tree algorithm needs \f$ O(n \log^d (n) + k)\f$
|
||||
|
|
@ -181,7 +181,7 @@ namespace CGAL {
|
|||
cases where the callback runtime is dominant, it may be best to make
|
||||
the threshold parameter small. Otherwise a `cutoff`\f$ =\sqrt{n}\f$ can
|
||||
lead to acceptable results. For well distributed boxes the original
|
||||
paper \cite cgal:ze-fsbi-02 gives optimal cutoffs in the thousands.
|
||||
paper \cgalCite{cgal:ze-fsbi-02} gives optimal cutoffs in the thousands.
|
||||
Anyway, for optimal runtime some experiments to compare different
|
||||
cutoff parameters are recommended. See also
|
||||
Section \ref secboxintersperformance .
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ namespace CGAL {
|
|||
|
||||
\section CGAL_ipeletsIntroduction Introduction
|
||||
|
||||
The Ipe extensible drawing editor (<A HREF="http://tclab.kaist.ac.kr/ipe/">http://tclab.kaist.ac.kr/ipe/</A>) \cite schwarzkopf1995ede, \cite ipe:man-09
|
||||
The Ipe extensible drawing editor (<A HREF="http://tclab.kaist.ac.kr/ipe/">http://tclab.kaist.ac.kr/ipe/</A>) \cgalCite{schwarzkopf1995ede}, \cgalCite{ipe:man-09}
|
||||
is a tool used by computational geometry researchers to produce 2D figures for inclusion in articles or presentations.
|
||||
The extensible adjective sheds a light on an important feature:
|
||||
the possibility for users to write small extensions (called <I>ipelets</I>)
|
||||
|
|
|
|||
|
|
@ -73,12 +73,12 @@ The following example shows how to use a functor of the kernel.
|
|||
|
||||
The first pieces of prototype code were comparisons of algebraic
|
||||
numbers of degree 2, written by Olivier Devillers
|
||||
\cite cgal:dfmt-amafe-00,cgal:dfmt-amafe-02.
|
||||
\cgalCite{cgal:dfmt-amafe-00},cgal:dfmt-amafe-02.
|
||||
|
||||
Some work was then done in the direction of a "kernel" for
|
||||
\cgal.\cgalFootnote{Monique Teillaud, First Prototype of a \cgal Geometric Kernel with Circular Arcs, Technical Report ECG-TR-182203-01, 2002
|
||||
Sylvain Pion and Monique Teillaud, Towards a \cgal-like kernel for curves, Technical Report ECG-TR-302206-01, 2003} and the first design emerged in
|
||||
\cite cgal:ekptt-tock-04.
|
||||
\cgalCite{cgal:ekptt-tock-04}.
|
||||
|
||||
The code of this package was initially written by Sylvain Pion and
|
||||
Monique Teillaud who also wrote the manual. Athanasios Kakargias had
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ The first version of the package was co-authored by Pedro Machado
|
|||
Manhães de Castro and Monique Teillaud, and integrated in CGAL
|
||||
3.4. Frédéric Cazals and Sébastien Loriot extended the
|
||||
package by providing functionalities restricted on a given sphere
|
||||
\cite cclt-dc3sk-08.
|
||||
\cgalCite{cclt-dc3sk-08}.
|
||||
|
||||
Sylvain Pion is acknowledged for helpful discussions.
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ reference pages. Note that circulators are not part of \stl, but of \cgal.
|
|||
\subsection sectionIntroduction Introduction
|
||||
|
||||
The concept of iterators in \stl is tailored for linear
|
||||
sequences \cite cgal:ansi-is14882-98, \cite cgal:ms-strg-96. In contrast, circular
|
||||
sequences \cgalCite{cgal:ansi-is14882-98}, \cgalCite{cgal:ms-strg-96}. In contrast, circular
|
||||
sequences occur naturally in many combinatorial and geometric
|
||||
structures. Examples are polyhedral surfaces and planar maps, where
|
||||
the edges emanating from a vertex or the edges around a facet form a
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ circulators are a contradiction, since any circulator is supposed to
|
|||
return once to itself. Output circulators are not supported since they
|
||||
would be indistinguishable from output iterators.}. Most requirements
|
||||
for circulators are equal to those for iterators. We present the
|
||||
changes, please refer to [\cite cgal:ms-strg-96, chapter 18 or \cite cgal:ansi-is14882-98]
|
||||
changes, please refer to [\cgalCite{cgal:ms-strg-96}, chapter 18 or \cgalCite{cgal:ansi-is14882-98}]
|
||||
for the iterator requirements.
|
||||
|
||||
<B>Past-the-end value:</B> There is no past-the-end value for circulators.
|
||||
|
|
|
|||
|
|
@ -1423,9 +1423,9 @@ Lastly we remove the dynamic onmerge functor (step 8). This is done by initializ
|
|||
\section sec_definition Mathematical Definitions
|
||||
|
||||
The initial definition of combinatorial map in any dimension is given
|
||||
in \cite cgal:l-tmbrc-91, \cite l-ndgcm-94. But it allows only to
|
||||
in \cgalCite{cgal:l-tmbrc-91}, \cgalCite{l-ndgcm-94}. But it allows only to
|
||||
represent objects without boundaries. This definition was extended
|
||||
\cite cgal:pabl-cco-07, \cite cgal:d-ccccg-10 in order to allow to
|
||||
\cgalCite{cgal:pabl-cco-07}, \cgalCite{cgal:d-ccccg-10} in order to allow to
|
||||
represent objects with boundaries, based on the notions of partial
|
||||
permutations and partial involutions.
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,13 @@ decomposing both polyhedra into convex pieces, compute pair-wise
|
|||
Minkowski sums of the convex pieces, and unite the pair-wise sums.
|
||||
|
||||
While it is desirable to have a decomposition into a minimum number of
|
||||
pieces, this problem is known to be NP-hard \cite c-cpplb-84. Our
|
||||
pieces, this problem is known to be NP-hard \cgalCite{c-cpplb-84}. Our
|
||||
implementation decomposes a Nef polyhedron \f$ N\f$ into \f$ O(r^2)\f$ convex
|
||||
pieces, where \f$ r\f$ is the number of edges that have two adjacent
|
||||
facets that span an angle of more than 180 degrees with respect to the
|
||||
interior of the polyhedron. Those edges are also called reflex edges.
|
||||
The bound of \f$ O(r^2)\f$ convex pieces is worst-case
|
||||
optimal \cite c-cpplb-84.
|
||||
optimal \cgalCite{c-cpplb-84}.
|
||||
|
||||
\cgalFigureBegin{figverticalDecomposition,two_cubes_all_in_one.png}
|
||||
Vertical decomposition based on the insertion of vertical facets (viewed from the top). Left: Non-convex polyhedron. Middle: Non-vertical reflex edges have been resolved. Right: Vertical reflex edges have been resolved. The sub-volumes are convex.
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function uses the algorithm of Akl and
|
||||
Toussaint \cite at-fcha-78 that requires \f$ O(n \log n)\f$ time for \f$ n\f$ input
|
||||
Toussaint \cgalCite{at-fcha-78} that requires \f$ O(n \log n)\f$ time for \f$ n\f$ input
|
||||
points.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function implements the non-recursive variation of
|
||||
Eddy's algorithm \cite e-nchap-77 described in \cite b-chfsp-78.
|
||||
Eddy's algorithm \cgalCite{e-nchap-77} described in \cgalCite{b-chfsp-78}.
|
||||
This algorithm requires \f$ O(n h)\f$ time
|
||||
in the worst case for \f$ n\f$ input points with \f$ h\f$ extreme points.
|
||||
|
||||
|
|
|
|||
|
|
@ -41,8 +41,8 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function implements Eddy's algorithm
|
||||
\cite e-nchap-77, which is the two-dimensional version of the quickhull
|
||||
algorithm \cite bdh-qach-96.
|
||||
\cgalCite{e-nchap-77}, which is the two-dimensional version of the quickhull
|
||||
algorithm \cgalCite{bdh-qach-96}.
|
||||
|
||||
This algorithm requires \f$ O(n h)\f$ time
|
||||
in the worst case for \f$ n\f$ input points with \f$ h\f$ extreme points.
|
||||
|
|
|
|||
|
|
@ -44,8 +44,8 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function implements Andrew's variant of the Graham
|
||||
scan algorithm \cite a-aeach-79 and follows the presentation of Mehlhorn
|
||||
\cite m-mdscg-84. This algorithm requires \f$ O(n \log n)\f$ time
|
||||
scan algorithm \cgalCite{a-aeach-79} and follows the presentation of Mehlhorn
|
||||
\cgalCite{m-mdscg-84}. This algorithm requires \f$ O(n \log n)\f$ time
|
||||
in the worst case for \f$ n\f$ input points.
|
||||
|
||||
|
||||
|
|
@ -93,14 +93,14 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The function uses Andrew's
|
||||
variant of the Graham scan algorithm \cite a-aeach-79. This algorithm
|
||||
variant of the Graham scan algorithm \cgalCite{a-aeach-79}. This algorithm
|
||||
requires \f$ O(n \log n)\f$ time in the worst case for \f$ n\f$ input points.
|
||||
|
||||
\cgalHeading{Example}
|
||||
|
||||
In the following example `ch_graham_andrew_scan()` is used to
|
||||
realize Anderson's variant \cite a-readc-78 of the Graham Scan
|
||||
\cite g-eadch-72. The points are sorted counterclockwise around the leftmost
|
||||
realize Anderson's variant \cgalCite{a-readc-78} of the Graham Scan
|
||||
\cgalCite{g-eadch-72}. The points are sorted counterclockwise around the leftmost
|
||||
point using the `Less_rotate_ccw_2` predicate, as defined in
|
||||
the concept `ConvexHullTraits_2`. According to the definition
|
||||
of `Less_rotate_ccw_2`, the leftmost point is the last point in the sorted
|
||||
|
|
@ -140,7 +140,7 @@ not left of \f$ pq\f$, where \f$ p\f$ is the value of `first` and \f$ q\f$ is
|
|||
the value of `beyond` \f$ -1\f$. The resulting sequence is placed
|
||||
starting at `result` with \f$ p\f$; point \f$ q\f$ is omitted. The
|
||||
past-the-end iterator for the sequence is returned.
|
||||
\pre The range [`first`,`beyond`) contains at least two different points. The points in [`first`,`beyond`) are sorted with respect to \f$ pq\f$, <I>i.e.</I>, the sequence of points in [`first`,`beyond`) define a counterclockwise polygon, for which the Graham-Sklansky-procedure \cite s-mcrm-72 works.
|
||||
\pre The range [`first`,`beyond`) contains at least two different points. The points in [`first`,`beyond`) are sorted with respect to \f$ pq\f$, <I>i.e.</I>, the sequence of points in [`first`,`beyond`) define a counterclockwise polygon, for which the Graham-Sklansky-procedure \cgalCite{s-mcrm-72} works.
|
||||
*/
|
||||
template <class BidirectionalIterator, class OutputIterator,
|
||||
class Traits>
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function uses the Jarvis march (gift-wrapping)
|
||||
algorithm \cite j-ichfs-73. This algorithm requires \f$ O(n h)\f$ time
|
||||
algorithm \cgalCite{j-ichfs-73}. This algorithm requires \f$ O(n h)\f$ time
|
||||
in the worst case for \f$ n\f$ input points with \f$ h\f$ extreme points.
|
||||
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ functions that return instances of these types:
|
|||
|
||||
\cgalHeading{Implementation}
|
||||
|
||||
The function uses the Jarvis march (gift-wrapping) algorithm \cite j-ichfs-73.
|
||||
The function uses the Jarvis march (gift-wrapping) algorithm \cgalCite{j-ichfs-73}.
|
||||
This algorithm requires \f$ O(n h)\f$ time in the worst
|
||||
case for \f$ n\f$ input points with \f$ h\f$ extreme points.
|
||||
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ functions that return instances of these types:
|
|||
|
||||
\cgalHeading{Implementation}
|
||||
|
||||
It uses an implementation of Melkman's algorithm \cite m-olcch-87.
|
||||
It uses an implementation of Melkman's algorithm \cgalCite{m-olcch-87}.
|
||||
Running time of this is linear.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -46,11 +46,11 @@ functions that return instances of these types:
|
|||
|
||||
One of two algorithms is used,
|
||||
depending on the type of iterator used to specify the input points. For
|
||||
input iterators, the algorithm used is that of Bykat \cite b-chfsp-78, which
|
||||
input iterators, the algorithm used is that of Bykat \cgalCite{b-chfsp-78}, which
|
||||
has a worst-case running time of \f$ O(n h)\f$, where \f$ n\f$ is the number of input
|
||||
points and \f$ h\f$ is the number of extreme points. For all other types of
|
||||
iterators, the \f$ O(n \log n)\f$ algorithm of of Akl and Toussaint
|
||||
\cite at-fcha-78 is used.
|
||||
\cgalCite{at-fcha-78} is used.
|
||||
|
||||
|
||||
*/
|
||||
|
|
@ -127,7 +127,7 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function uses Andrew's variant of Graham's scan algorithm
|
||||
\cite a-aeach-79, \cite m-mdscg-84. The algorithm has worst-case running time
|
||||
\cgalCite{a-aeach-79}, \cgalCite{m-mdscg-84}. The algorithm has worst-case running time
|
||||
of \f$ O(n \log n)\f$ for \f$ n\f$ input points.
|
||||
|
||||
|
||||
|
|
@ -191,7 +191,7 @@ functions that return instances of these types:
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function uses Andrew's
|
||||
variant of Graham's scan algorithm \cite a-aeach-79, \cite m-mdscg-84. The algorithm
|
||||
variant of Graham's scan algorithm \cgalCite{a-aeach-79}, \cgalCite{m-mdscg-84}. The algorithm
|
||||
has worst-case running time of \f$ O(n \log n)\f$ for \f$ n\f$ input points.
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -52,17 +52,17 @@ class need not be specified and defaults to types and operations defined
|
|||
in the kernel in which the input point type is defined.
|
||||
|
||||
Given a sequence of \f$ n\f$ input points with \f$ h\f$ extreme points,
|
||||
the function `convex_hull_2()` uses either the output-sensitive \f$ O(n h)\f$ algorithm of Bykat \cite b-chfsp-78
|
||||
(a non-recursive version of the quickhull \cite bdh-qach-96 algorithm) or the algorithm of Akl and Toussaint, which requires \f$ O(n \log n)\f$ time
|
||||
the function `convex_hull_2()` uses either the output-sensitive \f$ O(n h)\f$ algorithm of Bykat \cgalCite{b-chfsp-78}
|
||||
(a non-recursive version of the quickhull \cgalCite{bdh-qach-96} algorithm) or the algorithm of Akl and Toussaint, which requires \f$ O(n \log n)\f$ time
|
||||
in the worst case. The algorithm chosen depends on the kind of
|
||||
iterator used to specify the input points. These two algorithms are
|
||||
also available via the functions `ch_bykat()` and `ch_akl_toussaint()`,
|
||||
respectively. Also available are
|
||||
the \f$ O(n \log n)\f$ Graham-Andrew scan algorithm \cite a-aeach-79, \cite m-mdscg-84
|
||||
the \f$ O(n \log n)\f$ Graham-Andrew scan algorithm \cgalCite{a-aeach-79}, \cgalCite{m-mdscg-84}
|
||||
(`ch_graham_andrew()`),
|
||||
the \f$ O(n h)\f$ Jarvis march algorithm \cite j-ichfs-73
|
||||
the \f$ O(n h)\f$ Jarvis march algorithm \cgalCite{j-ichfs-73}
|
||||
(`ch_jarvis()`),
|
||||
and Eddy's \f$ O(n h)\f$ algorithm \cite e-nchap-77
|
||||
and Eddy's \f$ O(n h)\f$ algorithm \cgalCite{e-nchap-77}
|
||||
(`ch_eddy()`), which corresponds to the
|
||||
two-dimensional version of the quickhull algorithm.
|
||||
The linear-time algorithm of Melkman for producing the convex hull of
|
||||
|
|
@ -89,7 +89,7 @@ The functions `lower_hull_points_2()` and `upper_hull_points_2()`
|
|||
provide the computation of the counterclockwise
|
||||
sequence of extreme points on the lower hull and upper hull,
|
||||
respectively. The algorithm used in these functions is
|
||||
Andrew's variant of Graham's scan algorithm \cite a-aeach-79, \cite m-mdscg-84,
|
||||
Andrew's variant of Graham's scan algorithm \cgalCite{a-aeach-79}, \cgalCite{m-mdscg-84},
|
||||
which has worst-case running time of \f$ O(n \log n)\f$.
|
||||
|
||||
There are also functions available for computing certain subsequences
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ then the default traits class of `::convex_hull_3()` is `Convex_hull_traits_3<R>
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The algorithm implemented by these functions is the quickhull algorithm of
|
||||
Barnard <I>et al.</I> \cite bdh-qach-96.
|
||||
Barnard <I>et al.</I> \cgalCite{bdh-qach-96}.
|
||||
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace CGAL {
|
|||
computes the convex hull polyhedron
|
||||
of the three-dimensional points in the range [`first`,`beyond`)
|
||||
and assigns it to `P`. If `test_correctness` is set to
|
||||
`true`, the tests described in \cite mnssssu-cgpvg-96 are
|
||||
`true`, the tests described in \cgalCite{mnssssu-cgpvg-96} are
|
||||
used to determine the correctness of the resulting polyhedron.
|
||||
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ the representation class `R` required by
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
This function uses the `d`-dimensional convex hull incremental construction
|
||||
algorithm \cite cms-frric-93
|
||||
algorithm \cgalCite{cms-frric-93}
|
||||
with `d` fixed to 3. The algorithm requires \f$ O(n^2)\f$ time in the
|
||||
worst case and \f$ O(n \log n)\f$ expected time.
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ the facet type must be `ConvexHullPolyhedronFacet_3`.
|
|||
|
||||
\cgalHeading{Implementation}
|
||||
|
||||
This function implements the tests described in \cite mnssssu-cgpvg-96 to
|
||||
This function implements the tests described in \cgalCite{mnssssu-cgpvg-96} to
|
||||
determine convexity and requires \f$ O(e + f)\f$ time for a polyhedron with
|
||||
\f$ e\f$ edges and \f$ f\f$ faces.
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ triangulation to get a fully dynamic computation.
|
|||
|
||||
The function
|
||||
`convex_hull_3()` provides an
|
||||
implementation of the quickhull algorithm \cite bdh-qach-96 for three
|
||||
implementation of the quickhull algorithm \cgalCite{bdh-qach-96} for three
|
||||
dimensionsquickhull, 3D. There are two versions of this
|
||||
function available, one that can be used when it is known that the output
|
||||
will be a polyhedron (<I>i.e.</I>, there are more than three points and
|
||||
|
|
@ -59,7 +59,7 @@ account.
|
|||
\subsection Convex_hull_3ConvexityChecking Convexity Checking
|
||||
|
||||
The function `is_strongly_convex_3()`
|
||||
implements the algorithm of Mehlhorn <I>et al.</I> \cite mnssssu-cgpvg-96
|
||||
implements the algorithm of Mehlhorn <I>et al.</I> \cgalCite{mnssssu-cgpvg-96}
|
||||
to determine if the vertices of a given polytope constitute a strongly convex
|
||||
point set or not. This function is used in postcondition testing for
|
||||
`convex_hull_3()`.
|
||||
|
|
@ -79,7 +79,7 @@ of the convex hull.
|
|||
|
||||
The function `convex_hull_incremental_3()` provides an
|
||||
interface similar to `convex_hull_3()` for the `d`-dimensional
|
||||
incremental construction algorithm \cite cms-frric-93
|
||||
incremental construction algorithm \cgalCite{cms-frric-93}
|
||||
implemented by the class `Convex_hull_d<R>` that is specialized
|
||||
to three dimensions. This function accepts an iterator range over a set of
|
||||
input points and returns a polyhedron, but it does not have a traits class
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ successively assigned to \f$ f\f$ \f$ \}\f$
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation of type `Convex_hull_d` is based on
|
||||
\cite cms-frric-93 and \cite bms-dgc-94. The details
|
||||
\cgalCite{cms-frric-93} and \cgalCite{bms-dgc-94}. The details
|
||||
of the implementation can be found in the implementation document
|
||||
available at the download site of this package.
|
||||
|
||||
|
|
|
|||
|
|
@ -43,12 +43,12 @@ model <I>e.g.</I>, `Homogeneous<RT>` or `Cartesian<FT>` for use
|
|||
with `Convex_hull_d`, where the dimension is fixed to three.
|
||||
The validity of the computed convex hull can be checked using the
|
||||
member function `Convex_hull_d::is_valid`, which implements the algorithm
|
||||
of Mehlhorn <I>et al.</I>\cite mnssssu-cgpvg-96 to determine if
|
||||
of Mehlhorn <I>et al.</I>\cgalCite{mnssssu-cgpvg-96} to determine if
|
||||
the vertices of a given polytope constitute a strongly convex point
|
||||
set or not.
|
||||
|
||||
The implementation follows the papers \cite cms-frric-93 and
|
||||
\cite bms-dgc-94.
|
||||
The implementation follows the papers \cgalCite{cms-frric-93} and
|
||||
\cgalCite{bms-dgc-94}.
|
||||
|
||||
\section Convex_hull_dDelaunay Delaunay Triangulation
|
||||
|
||||
|
|
|
|||
|
|
@ -981,7 +981,7 @@ public:
|
|||
|
||||
|
||||
/*{\Mimplementation The implementation of type |\Mtype| is based on
|
||||
\cite{cms:fourresults} and \cite{BMS:degeneracy}. The details of the
|
||||
\cgalCite{cms:fourresults} and \cgalCite{BMS:degeneracy}. The details of the
|
||||
implementation can be found in the implementation document available
|
||||
at the download site of this package.
|
||||
|
||||
|
|
|
|||
|
|
@ -203,9 +203,9 @@ package you can find a sentence similar to the following.
|
|||
Some parts of the library use exceptions, but there is no general specific
|
||||
policy concerning exception handling in \cgal. It is nevertheless good to
|
||||
target exception safety, as much as possible. Good references on exception
|
||||
safety are: Appendix E of \cite cgal:s-cpl-97 (also available at
|
||||
safety are: Appendix E of \cgalCite{cgal:s-cpl-97} (also available at
|
||||
<A HREF="http://www.research.att.com/~bs/3rd_safe0.html"><TT>http://www.research.att.com/~bs/3rd_safe0.html</TT></A>),
|
||||
and \cite cgal:a-esgc-98 (also available at
|
||||
and \cgalCite{cgal:a-esgc-98} (also available at
|
||||
<A HREF="http://www.boost.org/more/generic_exception_safety.html"><TT>http://www.boost.org/more/generic_exception_safety.html</TT></A>).
|
||||
|
||||
\section secchecks_req_and_rec Requirements and recommendations
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ The first list of items are meant as rules, <I>i.e.</I>, you should follow them.
|
|||
that are declared `m`utable. An example
|
||||
is the caching of results from expensive computations. For more
|
||||
information about conceptually `c`onst functions and mutable data
|
||||
members see \cite cgal:m-ec-97.
|
||||
members see \cgalCite{cgal:m-ec-97}.
|
||||
- Prefer \cpp-style to C-style casts, <I>e.g.</I>, use `static_cast<double>( i)` instead of `(`double)i.
|
||||
- Protect header files against multiple inclusion, <I>e.g.</I> the file <TT>This_is_an_example.h</TT> should begin/end with
|
||||
\code{.cpp}
|
||||
|
|
|
|||
|
|
@ -4,18 +4,18 @@
|
|||
|
||||
The following books and papers are recommended as references:
|
||||
|
||||
- \cite cgal:a-gps-98 - Mathew Austern's introduction to the \stl
|
||||
- \cgalCite{cgal:a-gps-98} - Mathew Austern's introduction to the \stl
|
||||
using the concept/model style of presentation. Austern wrote the
|
||||
WWW \stl documentation at SGI.
|
||||
- \cite cgal:s-cpl-97 - Bjarne Stroustrup's introduction to
|
||||
- \cgalCite{cgal:s-cpl-97} - Bjarne Stroustrup's introduction to
|
||||
\cpp and the \stl for those who already know some \cpp.
|
||||
Stroustrup is the designer and original implementer of \cpp.
|
||||
- \cite cgal:ll-cp-98 - Stanley Lippman and Josee Lajoie's
|
||||
- \cgalCite{cgal:ll-cp-98} - Stanley Lippman and Josee Lajoie's
|
||||
\cpp primer.
|
||||
- \cite cgal:m-ec-97 - Scott Meyers's book on ways to improve
|
||||
- \cgalCite{cgal:m-ec-97} - Scott Meyers's book on ways to improve
|
||||
your \cpp programs. Items 21 and 29 discuss the concept of
|
||||
const-correctness.
|
||||
- \cite fgkss-dccga-00 - The \cgal design paper.
|
||||
- \cite hhkps-aegk-01 - The new \cgal kernel design paper.
|
||||
- \cgalCite{fgkss-dccga-00} - The \cgal design paper.
|
||||
- \cgalCite{hhkps-aegk-01} - The new \cgal kernel design paper.
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ projects 21957 (CGAL) and 28155 (GALIA).
|
|||
|
||||
\section secdesign_goals Primary design goals
|
||||
|
||||
The primary design goals of \cgal are described in \cite fgkss-dccga-00:
|
||||
The primary design goals of \cgal are described in \cgalCite{fgkss-dccga-00:}
|
||||
|
||||
\subsection Developer_manualCorrectness Correctness
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ integrate new classes and algorithms into \cgal.
|
|||
|
||||
\cgal should be open to coexist with other libraries, or better, to
|
||||
work together with other libraries and programs. The \cpp
|
||||
Standard \cite cgal:ansi-is14882-98
|
||||
Standard \cgalCite{cgal:ansi-is14882-98}
|
||||
|
||||
defines with the \cpp Standard Library a common
|
||||
foundation for all \cpp platforms.
|
||||
|
|
@ -132,7 +132,7 @@ maps library.
|
|||
|
||||
A goal with similar implications as uniformity is a design
|
||||
with complete and minimal interfaces, see for example Item 18
|
||||
in Ref. \cite cgal:m-ec-97.
|
||||
in Ref. \cgalCite{cgal:m-ec-97}.
|
||||
An object or module should be complete in its
|
||||
functionality, but should
|
||||
not provide additional decorating functionality. Even if a certain
|
||||
|
|
@ -167,7 +167,7 @@ clearly documented which degeneracies are handled and which are not.
|
|||
For most geometric algorithms theoretical results for the time and space
|
||||
complexity are known. Also, the theoretic interest in efficiency for
|
||||
realistic inputs, as opposed to worst-case situations, is
|
||||
growing \cite v-ffrim-97.
|
||||
growing \cgalCite{v-ffrim-97}.
|
||||
For practical purposes, insight into the constant factors hidden in the
|
||||
\f$ O\f$-notation is necessary, especially if there are several competing
|
||||
algorithms.
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ Section \ref sechandle_vs_it_vs_circ below discusses when handles
|
|||
should be used in your code.
|
||||
|
||||
The concepts of iterators is relatively well described in textbooks such as
|
||||
Stroustrup's book (<I>The C++ Programming Language</I> \cite cgal:s-cpl-97)
|
||||
and Austern's book (<I>Generic Programming and the \stl</I> \cite cgal:a-gps-98)
|
||||
Stroustrup's book (<I>The C++ Programming Language</I> \cgalCite{cgal:s-cpl-97})
|
||||
and Austern's book (<I>Generic Programming and the \stl</I> \cgalCite{cgal:a-gps-98})
|
||||
and in chapter <A HREF="http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Circulator/Chapter_main.html">Handles and Circulators</A> of the
|
||||
<I>Support Library</I> part of the \cgal manual.
|
||||
which also presents the concepts of handles and circulators.
|
||||
|
|
@ -343,7 +343,7 @@ for more information and examples.
|
|||
Every container class in \cgal should strive to be a model for the
|
||||
\stl concept of a container. As for all concepts, this means that
|
||||
certain types and functions are provided, as detailed, for example
|
||||
in \cite cgal:a-gps-98. For the purposes of this discussion, the relevant
|
||||
in \cgalCite{cgal:a-gps-98}. For the purposes of this discussion, the relevant
|
||||
types are:
|
||||
|
||||
<TABLE><TR><TD ALIGN=LEFT VALIGN=TOP NOWRAP>
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ stand-alone class, which is parameterized by a kernel class, and as a
|
|||
type in the kernel class. Each operation in the kernel is provided via
|
||||
a functor class\cgalFootnote{A class which defines a member `operator()`.} in the kernel
|
||||
class and also as either a member function or a global function.
|
||||
See \cite hhkps-aegk-01 for more details about this design.
|
||||
See \cgalCite{hhkps-aegk-01} for more details about this design.
|
||||
Ideally, if the kernel provides all the primitives required, you can
|
||||
use any kernel as a traits class directly with your algorithm or data
|
||||
structure; see also Chapter \ref chaptraits_classes . If you need
|
||||
|
|
@ -58,14 +58,14 @@ Each kernel object is provided as both a stand-alone class, which is
|
|||
parameterized by a kernel class (`Geo_object_D<K>`), and as a type
|
||||
in the kernel class (`K::Geo_object_D`). While the former use may
|
||||
be more natural for users not interested in the flexibility of the kernel
|
||||
(and is compatible with the original kernel design \cite fgkss-dccga-00), the
|
||||
(and is compatible with the original kernel design \cgalCite{fgkss-dccga-00}), the
|
||||
latter syntax should be used in all code distributed with the library
|
||||
as it allows types in the kernel to be easily exchanged and modified.
|
||||
Similarly, each operation and construction in the kernel is provided via
|
||||
a function object class in the
|
||||
kernel class and also as either a member function or a global function;
|
||||
developers should use the function object classes to gain access to the
|
||||
functionality. See \cite hhkps-aegk-01 for more details about this
|
||||
functionality. See \cgalCite{hhkps-aegk-01} for more details about this
|
||||
design and how it is accomplished.
|
||||
|
||||
The classes for the geometric objects in the kernel have a
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ describe one way to address this using allocators. An allocator
|
|||
encapsulates the information about an allocation model.
|
||||
|
||||
We adopted the definition of the Standard \cpp
|
||||
allocator \cite cgal:ansi-is14882-98. The `std::allocator` is the
|
||||
allocator \cgalCite{cgal:ansi-is14882-98}. The `std::allocator` is the
|
||||
only predefined and required allocator imposed by [\cpp] on all \cpp
|
||||
compiler implementations. The exact specification can also be found at
|
||||
<A HREF="http://en.wikipedia.org/wiki/Allocator_(C++)"><TT>http://en.wikipedia.org/wiki/Allocator_(C++)</TT></A>.
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ Linux
|
|||
|
||||
For (good) reasons that will not be discussed here, it was decided to
|
||||
use \cpp for the development of \cgal. An international standard for
|
||||
\cpp has been sanctioned in 1998 \cite cgal:ansi-is14882-98 and the
|
||||
\cpp has been sanctioned in 1998 \cgalCite{cgal:ansi-is14882-98} and the
|
||||
level of compliance varies widely between different
|
||||
compilers, let alone bugs.
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
The concept of a traits class is central to %CGAL. The name <i>traits
|
||||
class</i> comes from a standard \cpp design pattern
|
||||
\cite cgal:m-tnutt-95; you may have heard about iterator traits which
|
||||
\cgalCite{cgal:m-tnutt-95}; you may have heard about iterator traits which
|
||||
follow this design pattern.
|
||||
The traits class is used in template code to reflect properties (traits)
|
||||
of the actual template argument.
|
||||
|
|
@ -126,7 +126,7 @@ the actual functors. Reasons for this are the following.
|
|||
carry data. For example, repeated calls to a function with only
|
||||
slightly different parameters might be handled efficiently by
|
||||
storing intermediate results. Functors are the natural framework
|
||||
here. See \cite hhkps-aegk-01 for more exposition.
|
||||
here. See \cgalCite{hhkps-aegk-01} for more exposition.
|
||||
</UL>
|
||||
|
||||
If you really look up the documentation of the
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ the lines that form the lower envelope of \f$ {\cal P}^{*}\f$ are dual to the
|
|||
points along the <I>upper</I> part of \f$ {\cal P}\f$'s convex hull, and the
|
||||
lines that form the upper envelope of \f$ {\cal P}^{*}\f$ are dual to the
|
||||
points along the <I>lower</I> part of the convex hull; see,
|
||||
e.g., [\cite Section 11.4 for more details.
|
||||
e.g., [\cgalCite{Section} 11.4 for more details.
|
||||
Note that the leftmost edge of the minimization diagram is associated
|
||||
with the same line as the rightmost edge of the maximization diagram,
|
||||
and vice-verse. We can therefore skip the rightmost edges of both
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ compute their envelope diagrams recursively. Finally, we merge the
|
|||
diagrams, and we do this by overlaying them and then applying some
|
||||
post-processing on the resulting diagram. The post-processing stage is
|
||||
non-trivial and involves the projection of intersection curves onto
|
||||
the \f$ xy\f$-plane - see \cite cgal:m-rgece-06 for more details.
|
||||
the \f$ xy\f$-plane - see \cgalCite{cgal:m-rgece-06} for more details.
|
||||
|
||||
\section Envelope_3The The Envelope-Traits Concept
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ R >` for some representation class `R`,
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses the centroid method
|
||||
described in \cite cgal:s-zkm-96 and has a worst case running time of \f$ O(r
|
||||
described in \cgalCite{cgal:s-zkm-96} and has a worst case running time of \f$ O(r
|
||||
\cdot n + n \cdot \log n)\f$, where \f$ r\f$ is the time needed by `pg`
|
||||
to generate a random point.
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ The implementation is based on the method of eliminating self-intersections in
|
|||
a polygon by using so-called "2-opt" moves. Such a move eliminates an
|
||||
intersection between two edges by reversing the order of the vertices between
|
||||
the edges. No more than \f$ O(n^3)\f$ such moves are required to simplify a polygon
|
||||
defined on \f$ n\f$ points \cite ls-utstp-82.
|
||||
defined on \f$ n\f$ points \cgalCite{ls-utstp-82}.
|
||||
Intersecting edges are detected using a simple sweep through the vertices
|
||||
and then one intersection is chosen at random to eliminate after each sweep.
|
||||
The worse-case running time is therefore \f$ O(n^4 \log n)\f$.
|
||||
|
|
|
|||
|
|
@ -10,17 +10,17 @@ combinatorial data structure, geometric interpretation is added by
|
|||
classes built on top of the halfedge data structure.
|
||||
|
||||
The data structure defined here is known as the
|
||||
FE-structure \cite w-ebdss-85, as
|
||||
halfedges \cite m-ism-88, \cite cgal:bfh-mgedm-95 or as the doubly connected edge
|
||||
list (DCEL) \cite bkos-cgaa-97, although the original reference for
|
||||
the DCEL \cite mp-fitcp-78 describes a different data structure. The
|
||||
FE-structure \cgalCite{w-ebdss-85}, as
|
||||
halfedges \cgalCite{m-ism-88}, \cgalCite{cgal:bfh-mgedm-95} or as the doubly connected edge
|
||||
list (DCEL) \cgalCite{bkos-cgaa-97}, although the original reference for
|
||||
the DCEL \cgalCite{mp-fitcp-78} describes a different data structure. The
|
||||
halfedge data structure can also be seen as one of the variants of the
|
||||
quad-edge data structure \cite gs-pmgsc-85. In general, the quad-edge
|
||||
quad-edge data structure \cgalCite{gs-pmgsc-85}. In general, the quad-edge
|
||||
data can represent non-orientable 2-manifolds, but the variant here is
|
||||
restricted to orientable 2-manifolds only. An overview and comparison
|
||||
of these different data structures together with a thorough
|
||||
description of the design implemented here can be found
|
||||
in \cite k-ugpdd-99.
|
||||
in \cgalCite{k-ugpdd-99}.
|
||||
|
||||
Each edge is represented by two halfedges with opposite orientations.
|
||||
Each halfedge can store a reference to an incident face and an
|
||||
|
|
|
|||
|
|
@ -33,17 +33,17 @@ structure is meant as an implementation layer. See for example the
|
|||
`Polyhedron_3` class in Chapter \ref chapterPolyhedron "Polyhedral Surface".
|
||||
|
||||
The data structure provided here is also known as the
|
||||
FE-structure \cite w-ebdss-85, as
|
||||
halfedges \cite m-ism-88, \cite cgal:bfh-mgedm-95 or as the doubly connected edge
|
||||
list (DCEL) \cite bkos-cgaa-97, although the original reference for
|
||||
the DCEL \cite mp-fitcp-78 describes a different data structure. The
|
||||
FE-structure \cgalCite{w-ebdss-85}, as
|
||||
halfedges \cgalCite{m-ism-88}, \cgalCite{cgal:bfh-mgedm-95} or as the doubly connected edge
|
||||
list (DCEL) \cgalCite{bkos-cgaa-97}, although the original reference for
|
||||
the DCEL \cgalCite{mp-fitcp-78} describes a different data structure. The
|
||||
halfedge data structure can also be seen as one of the variants of the
|
||||
quad-edge data structure \cite gs-pmgsc-85. In general, the quad-edge
|
||||
quad-edge data structure \cgalCite{gs-pmgsc-85}. In general, the quad-edge
|
||||
data can represent non-orientable 2-manifolds, but the variant here is
|
||||
restricted to orientable 2-manifolds only. An overview and comparison
|
||||
of these different data structures together with a thorough
|
||||
description of the design implemented here can be found
|
||||
in \cite k-ugpdd-99.
|
||||
in \cgalCite{k-ugpdd-99}.
|
||||
|
||||
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ class searches in the positive direction along the face for the
|
|||
previous halfedge. But if the `HalfedgeDSHalfedge::prev()` member function is provided,
|
||||
the `HalfedgeDS_items_decorator::find_prev()` member function simply calls it. This distinction is
|
||||
resolved at compile time with a technique called <I>compile-time
|
||||
tags</I>, similar to iterator tags in \cite cgal:sl-stl-95.
|
||||
tags</I>, similar to iterator tags in \cgalCite{cgal:sl-stl-95}.
|
||||
|
||||
The `Polyhedron_3` as an example for the third layer adds the
|
||||
geometric interpretation, provides an easy-to-use interface of
|
||||
|
|
@ -181,10 +181,10 @@ member variable `color`.
|
|||
|
||||
The halfedge data structure as presented here is slightly less space
|
||||
efficient as, for example, the winged-edge data
|
||||
structure \cite b-prcv-75, the DCEL \cite mp-fitcp-78 or variants of
|
||||
the quad-edge data structure \cite gs-pmgsc-85. On the other hand,
|
||||
structure \cgalCite{b-prcv-75}, the DCEL \cgalCite{mp-fitcp-78} or variants of
|
||||
the quad-edge data structure \cgalCite{gs-pmgsc-85}. On the other hand,
|
||||
it does not require any search operations during traversals. A
|
||||
comparison can be found in \cite k-ugpdd-99.
|
||||
comparison can be found in \cgalCite{k-ugpdd-99}.
|
||||
|
||||
The following example trades traversal time for a compact storage
|
||||
representation using traditional C techniques (i.e., type casting and
|
||||
|
|
|
|||
|
|
@ -46,17 +46,17 @@ implementation layer.See for example the `Polyhedron_3`
|
|||
class in the package \ref Chapter_3D_Polyhedral_Surfaces "3D Polyhedral Surface".
|
||||
|
||||
The data structure provided here is known as the
|
||||
FE-structure \cite w-ebdss-85, as
|
||||
halfedges \cite m-ism-88, \cite cgal:bfh-mgedm-95 or as the doubly connected edge
|
||||
list (DCEL) \cite bkos-cgaa-97, although the original reference for
|
||||
the DCEL \cite mp-fitcp-78 describes a related but different data
|
||||
FE-structure \cgalCite{w-ebdss-85}, as
|
||||
halfedges \cgalCite{m-ism-88}, \cgalCite{cgal:bfh-mgedm-95} or as the doubly connected edge
|
||||
list (DCEL) \cgalCite{bkos-cgaa-97}, although the original reference for
|
||||
the DCEL \cgalCite{mp-fitcp-78} describes a related but different data
|
||||
structure. The halfedge data structure can also be seen as one of the
|
||||
variants of the quad-edge data structure \cite gs-pmgsc-85. In
|
||||
variants of the quad-edge data structure \cgalCite{gs-pmgsc-85}. In
|
||||
general, the quad-edge data can represent non-orientable 2-manifolds,
|
||||
but the variant here is restricted to orientable 2-manifolds only. An
|
||||
overview and comparison of these different data structures together
|
||||
with a thorough description of the design implemented here can be
|
||||
found in \cite k-ugpdd-99.
|
||||
found in \cgalCite{k-ugpdd-99}.
|
||||
|
||||
\cgalClassifedRefPages
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ that do not contain any point of the point set.
|
|||
|
||||
\cgalHeading{Implementation}
|
||||
|
||||
The algorithm is an implementation of \cite o-naler-90. The runtime of an
|
||||
The algorithm is an implementation of \cgalCite{o-naler-90}. The runtime of an
|
||||
insertion or a removal is \f$ O(\log n)\f$. A query takes \f$ O(n^2)\f$ worst
|
||||
case time and \f$ O(n \log n)\f$ expected time. The working storage is \f$
|
||||
O(n)\f$.
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ convex polygon (oriented clock- or counterclockwise).
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses monotone matrix search
|
||||
\cite akmsw-gamsa-87 and has a worst case running time of \f$ O(k
|
||||
\cgalCite{akmsw-gamsa-87} and has a worst case running time of \f$ O(k
|
||||
\cdot n + n \cdot \log n)\f$, where \f$ n\f$ is the number of vertices in
|
||||
\f$ P\f$.
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ where `K` is a model of `Kernel`.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses monotone matrix search
|
||||
\cite akmsw-gamsa-87 and has a worst case running time of \f$ O(k
|
||||
\cgalCite{akmsw-gamsa-87} and has a worst case running time of \f$ O(k
|
||||
\cdot n + n \cdot \log n)\f$, where \f$ n\f$ is the number of vertices in
|
||||
\f$ P\f$.
|
||||
|
||||
|
|
@ -158,7 +158,7 @@ defined that computes the squareroot of a number.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses monotone matrix search
|
||||
\cite akmsw-gamsa-87 and has a worst case running time of \f$ O(k
|
||||
\cgalCite{akmsw-gamsa-87} and has a worst case running time of \f$ O(k
|
||||
\cdot n + n \cdot \log n)\f$, where \f$ n\f$ is the number of vertices in
|
||||
\f$ P\f$.
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ generates the interpolated function value computed by Farin's interpolant.
|
|||
\pre `norm` \f$ \neq0\f$. `function_value(p).second == true` for all points `p` of the point/coordinate pairs in the range `[first, beyond)`.
|
||||
\pre The range `[first, beyond)` contains either one or more than three elements.
|
||||
The function `farin_c1_interpolation()` interpolates the function values and the
|
||||
gradients that are provided by functors using the method described in \cite f-sodt-90.
|
||||
gradients that are provided by functors using the method described in \cgalCite{f-sodt-90}.
|
||||
|
||||
\cgalHeading{Parameters}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
|||
These functions approximate the gradient of a
|
||||
function at a point `p` given natural neighbor coordinates for `p` and
|
||||
its neighbors' function values. The approximation method is described
|
||||
in \cite s-bdnni-81. Further functions are provided to fit the
|
||||
in \cgalCite{s-bdnni-81}. Further functions are provided to fit the
|
||||
gradient for all data points that lie inside the convex hull of the
|
||||
data points. One function exists for each type of natural neighbor
|
||||
coordinates.
|
||||
|
|
@ -42,7 +42,7 @@ provide a multiplication and addition operation with the type
|
|||
|
||||
This function implements Sibson's gradient
|
||||
estimation method based on natural neighbor coordinates
|
||||
\cite s-bdnni-81.
|
||||
\cgalCite{s-bdnni-81}.
|
||||
|
||||
*/
|
||||
/// @{
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ the surface. The coordinates are computed from the intersection of the
|
|||
Voronoi cell of the query point `p` with the tangent plane to the
|
||||
surface at `p`. If the sampling is sufficiently dense, the
|
||||
coordinate system meets the properties described in the manual pages
|
||||
and in \cite bf-lcss-02,\cite cgal:f-csapc-03. The query
|
||||
and in \cgalCite{bf-lcss-02},\cgalCite{cgal:f-csapc-03}. The query
|
||||
point `p` needs to lie inside the convex hull of the projection of
|
||||
the sample points onto the tangent plane at `p`.
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Given a set of sample points issued from a surface and a query point
|
|||
the surface within the sample points. If the sampling is sufficiently
|
||||
dense, the neighbors are provably close to the point `p` on the
|
||||
surface (cf. the manual pages and
|
||||
\cite bf-lcss-02,\cite cgal:f-csapc-03). They are defined to
|
||||
\cgalCite{bf-lcss-02},\cgalCite{cgal:f-csapc-03}). They are defined to
|
||||
be the neighbors of `p` in the regular triangulation dual
|
||||
to the power diagram which is equivalent to the intersection of the
|
||||
Voronoi cell of the query point `p` with the tangent plane to the
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ at \f$ \mathbf{p_i}\f$. It is denoted \f$ \mathbf{g_i}= \nabla
|
|||
\subsection InterpolationIntroduction Introduction
|
||||
|
||||
Natural neighbor interpolation has been introduced by Sibson
|
||||
\cite s-bdnni-81 to interpolate multivariate scattered data. Given
|
||||
\cgalCite{s-bdnni-81} to interpolate multivariate scattered data. Given
|
||||
a set of data points \f$ \mathcal{P}\f$, the natural neighbor coordinates
|
||||
associated to \f$ \mathcal{P}\f$ are defined from the Voronoi diagram of
|
||||
\f$ \mathcal{P}\f$. When simulating the insertion of a query point
|
||||
|
|
@ -60,8 +60,8 @@ with respect to the data point \f$ \mathbf{p_i}\in \mathcal{P}\f$ is defined by
|
|||
A two-dimensional example
|
||||
is depicted in \cgalFigureRef{fignn_coords}.
|
||||
|
||||
Various papers (\cite s-vidt-80, \cite f-sodt-90,
|
||||
\cite cgal:p-plcbd-93, \cite b-scaps-97, \cite hs-vbihc-00) show that
|
||||
Various papers (\cgalCite{s-vidt-80}, \cgalCite{f-sodt-90},
|
||||
\cgalCite{cgal:p-plcbd-93}, \cgalCite{b-scaps-97}, \cgalCite{hs-vbihc-00}) show that
|
||||
the natural neighbor coordinates have the following properties:
|
||||
<OL>
|
||||
<LI>\f$ \mathbf{x} = \sum_{i=1}^n \lambda_i(\mathbf{x}) \mathbf{p_i}\f$
|
||||
|
|
@ -84,7 +84,7 @@ The natural neighbor coordinate of \f$ \mathbf{x}\f$ with respect to these endpo
|
|||
|
||||
\f$ \lambda_q(\mathbf{x}) = \frac{\|\mathbf{x} - \mathbf{p}\| }{ \|\mathbf{q} - \mathbf{p}\|} \f$
|
||||
|
||||
Furthermore, Piper \cite cgal:p-plcbd-93 shows that the coordinate
|
||||
Furthermore, Piper \cgalCite{cgal:p-plcbd-93} shows that the coordinate
|
||||
functions are continuous in the convex hull of \f$ \mathcal{P}\f$ and
|
||||
continuously differentiable except on the data points \f$ \mathcal{P}\f$.<BR>
|
||||
|
||||
|
|
@ -137,9 +137,9 @@ issued from a surface \f$ \mathcal{S}\f$ and given a query point
|
|||
\f$ \mathbf{x}\f$ on \f$ \mathcal{S}\f$. We suppose that \f$ \mathcal{S}\f$ is a
|
||||
closed and compact surface of \f$ \mathbb{R}^3\f$, and let \f$ \mathcal{P}=
|
||||
\{\mathbf{p_1}, \ldots,\mathbf{p_n}\}\f$ be an \f$ \epsilon\f$-sample of
|
||||
\f$ \mathcal{S}\f$ (refer to Amenta and Bern \cite ab-srvf-99). The
|
||||
\f$ \mathcal{S}\f$ (refer to Amenta and Bern \cgalCite{ab-srvf-99}). The
|
||||
concepts are based on the definition of Boissonnat and Flötotto
|
||||
\cite bf-lcss-02, \cite cgal:f-csapc-03. Both references
|
||||
\cgalCite{bf-lcss-02}, \cgalCite{cgal:f-csapc-03}. Both references
|
||||
contain a thorough description of the requirements and the
|
||||
mathematical properties.
|
||||
|
||||
|
|
@ -149,7 +149,7 @@ Two observations lead to the definition of surface neighbors and
|
|||
surface neighbor coordinates: First, it is clear that the tangent
|
||||
plane \f$ \mathcal{T}_x\f$ of the surface \f$ \mathcal{S}\f$ at the point
|
||||
\f$ \mathbf{x} \in \mathcal{S}\f$ approximates \f$ \mathcal{S}\f$ in the
|
||||
neighborhood of \f$ \mathbf{x}\f$. It has been shown in \cite bf-lcss-02
|
||||
neighborhood of \f$ \mathbf{x}\f$. It has been shown in \cgalCite{bf-lcss-02}
|
||||
that, if the surface \f$ \mathcal{S}\f$ is well sampled with respect to the
|
||||
curvature and the local thickness of \f$ \mathcal{S}\f$, i.e.\ it is an \f$ \epsilon\f$-sample, the intersection
|
||||
of the tangent plane \f$ \mathcal{T}_x\f$ with the Voronoi cell of
|
||||
|
|
@ -237,7 +237,7 @@ provided.
|
|||
|
||||
\subsubsection InterpolationLinearPrecisionInterpolation Linear Precision Interpolation
|
||||
|
||||
Sibson \cite s-bdnni-81 defines a very simple interpolant that
|
||||
Sibson \cgalCite{s-bdnni-81} defines a very simple interpolant that
|
||||
re-produces linear functions exactly. The interpolation of
|
||||
\f$ \Phi(\mathbf{x})\f$ is given as the linear combination of the neighbors' function
|
||||
values weighted by the coordinates:
|
||||
|
|
@ -253,7 +253,7 @@ called.
|
|||
|
||||
\subsubsection InterpolationSibson Sibson's C^1 Continuous Interpolant
|
||||
|
||||
In \cite s-bdnni-81, Sibson describes a second interpolation method
|
||||
In \cgalCite{s-bdnni-81}, Sibson describes a second interpolation method
|
||||
that relies also on the function gradient \f$ \mathbf{g_i}\f$ for all \f$ \mathbf{p_i} \in \mathcal{P}\f$. It is \f$ C^1\f$ continuous with gradient \f$ \mathbf{g_i}\f$ at
|
||||
\f$ \mathbf{p_i}\f$. Spherical quadrics of the form \f$ \Phi(\mathbf{x}) =a +
|
||||
\mathbf{b}^t \mathbf{x} +\gamma\ \mathbf{x}^t\mathbf{x}\f$ are reproduced
|
||||
|
|
@ -261,7 +261,7 @@ exactly. The
|
|||
proof relies on the barycentric coordinate property of the natural
|
||||
neighbor coordinates and assumes that the gradient of \f$ \Phi\f$ at the
|
||||
data points is known or approximated from the function values as
|
||||
described in \cite s-bdnni-81 (see Section \ref sgradient_fitting).
|
||||
described in \cgalCite{s-bdnni-81} (see Section \ref sgradient_fitting).
|
||||
|
||||
Sibson's \f$ Z^1\f$ interpolant is a combination of the linear interpolant
|
||||
\f$ Z^0\f$ and an interpolant \f$ \xi\f$ which is the weighted sum of the first
|
||||
|
|
@ -289,19 +289,19 @@ where in Sibson's original work,
|
|||
demanding on the number type because it avoids the square-root
|
||||
computation needed to compute the distance \f$ \|\mathbf{x} -
|
||||
\mathbf{p_i}\|\f$. The theoretical guarantees are the same (see
|
||||
\cite cgal:f-csapc-03). Simply, the smaller the slope of \f$ f\f$
|
||||
\cgalCite{cgal:f-csapc-03}). Simply, the smaller the slope of \f$ f\f$
|
||||
around \f$ f(0)\f$, the faster the interpolant approaches \f$ \xi_i\f$ as
|
||||
\f$ \mathbf{x} \rightarrow \mathbf{p_i}\f$.
|
||||
|
||||
\subsubsection InterpolationFarin Farin's C^1 Continuous Interpolant
|
||||
|
||||
Farin \cite f-sodt-90 extended Sibson's work and realizes a \f$ C^1\f$
|
||||
Farin \cgalCite{f-sodt-90} extended Sibson's work and realizes a \f$ C^1\f$
|
||||
continuous interpolant by embedding natural neighbor coordinates in
|
||||
the Bernstein-Bézier representation of a cubic simplex. If the
|
||||
gradient of \f$ \Phi\f$ at the data points is known, this interpolant
|
||||
reproduces quadratic functions exactly. The function gradient can be
|
||||
approximated from the function values by Sibson's method
|
||||
\cite s-bdnni-81 (see Section \ref sgradient_fitting) which is exact only
|
||||
\cgalCite{s-bdnni-81} (see Section \ref sgradient_fitting) which is exact only
|
||||
for spherical quadrics.
|
||||
|
||||
\subsubsection InterpolationQuadraticPrecisionInterpolants Quadratic Precision Interpolants
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ two-dimensional power diagram for weighted points (i. e., from their
|
|||
regular triangulation). Natural neighbor coordinates on closed and
|
||||
well-sampled surfaces can also be computed if the normal to the
|
||||
surface at the query point is known. The latter coordinates are only
|
||||
approximately barycentric, see \cite bf-lcss-02.
|
||||
approximately barycentric, see \cgalCite{bf-lcss-02}.
|
||||
|
||||
For a more thorough introduction see the user manual.
|
||||
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ mix calls to the methods `insert(..)`, `remove(..)`,
|
|||
|
||||
The interval skip list class is parameterized with an interval class.
|
||||
|
||||
The data structure was introduced by Hanson \cite h-islds-91, and it is called
|
||||
The data structure was introduced by Hanson \cgalCite{h-islds-91}, and it is called
|
||||
interval skip list, because it is an extension of the randomized list
|
||||
structure known as skip list \cite p-slpab-90.
|
||||
structure known as skip list \cgalCite{p-slpab-90}.
|
||||
|
||||
\section Interval_skip_listExample Example Programs
|
||||
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@
|
|||
\cgalPkgShortInfoEnd
|
||||
\cgalPkgDescriptionEnd
|
||||
|
||||
This chapter presents the interval skip list introduced by Hanson \cite h-islds-91,
|
||||
and derived from the skip list data structure \cite p-slpab-90.
|
||||
This chapter presents the interval skip list introduced by Hanson \cgalCite{h-islds-91},
|
||||
and derived from the skip list data structure \cgalCite{p-slpab-90}.
|
||||
|
||||
The data structure stores intervals and allows to perform stabbing queries,
|
||||
that is to test whether a point is covered by any of the intervals.
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ estimating first and second order differential quantities is
|
|||
sufficient. However, some applications involving shape analysis
|
||||
require estimating third and fourth order differential quantities.
|
||||
Many different estimators have been proposed in the vast literature of
|
||||
applied geometry \cite cgal:p-smrqt-01 (section 3, page 7), and all
|
||||
applied geometry \cgalCite{cgal:p-smrqt-01} (section 3, page 7), and all
|
||||
of them need to define a neighborhood around the point at which the
|
||||
estimation is computed. Our method relies on smooth differential
|
||||
geometry calculations, carried out on smooth objects <I>fitted</I> from
|
||||
|
|
@ -52,7 +52,7 @@ properties, so that any estimation method must come with an
|
|||
asymptotic convergence analysis of the results returned. For the
|
||||
method developed in this \cgal package, the
|
||||
interested will find such an analysis in
|
||||
\cite cgal:cp-edqpf-05, (Theorem 3) - it should be stressed
|
||||
\cgalCite{cgal:cp-edqpf-05}, (Theorem 3) - it should be stressed
|
||||
the error bounds proved therein are optimal.
|
||||
|
||||
On the other hand, any estimation method may be applied to arbitrarily
|
||||
|
|
@ -140,7 +140,7 @@ approximation reduces to linear algebra operations.
|
|||
</OL>
|
||||
|
||||
Further details can be found in section \ref Jet_fitting_3Mathematical and in
|
||||
\cite cgal:cp-edqpf-05 (section 6).
|
||||
\cgalCite{cgal:cp-edqpf-05} (section 6).
|
||||
|
||||
\subsection secdegcases Degenerate Cases
|
||||
|
||||
|
|
@ -151,7 +151,7 @@ cases:
|
|||
vector may not be good. The nearer this direction to the tangent
|
||||
plane the worse the estimation.
|
||||
|
||||
<LI>As observed in \cite cgal:cp-edqpf-05 (section 3.1), the
|
||||
<LI>As observed in \cgalCite{cgal:cp-edqpf-05} (section 3.1), the
|
||||
interpolating problem is not well posed if the points project,
|
||||
into the fitting frame, onto an algebraic curve of degree \f$ d\f$. More
|
||||
generally, the problem is ill posed if the condition number is too
|
||||
|
|
@ -429,7 +429,7 @@ definite positive when \f$ M\f$ has full rank.
|
|||
The advantages of the \f$ SVD\f$
|
||||
is that it works directly on the rectangular system and gives the
|
||||
condition number of the system. For more on these alternatives, see
|
||||
\cite gl-mc-83 (Chap. 5).
|
||||
\cgalCite{gl-mc-83} (Chap. 5).
|
||||
|
||||
\subsection Jet_fitting_3PrincipalCurvatureDirections Principal Curvature / Directions
|
||||
|
||||
|
|
@ -458,7 +458,7 @@ estimation is performed, is \f$ (0,0,A_{0,0})\f$.
|
|||
<LI>The normal is
|
||||
\f$ n=(-A_{1,0},-A_{0,1},1)/\sqrt{A_{1,0}^2+A_{0,1}^2+1}\f$.
|
||||
<LI>Curvature related properties are retrieved resorting to
|
||||
standard differential calculus \cite c-dgcs-76 (Chap. 3). More precisely, the
|
||||
standard differential calculus \cgalCite{c-dgcs-76} (Chap. 3). More precisely, the
|
||||
Weingarten operator \f$ W=-I^{-1}II\f$ is first computed in the basis of
|
||||
the tangent plane \f$ \{ (1,0,A_{1,0}), (0,1,A_{0,1}) \}\f$. We compute
|
||||
an orthonormal basis of the tangent plane using the Gram-Schmidt
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ namespace CGAL {
|
|||
/*!
|
||||
\ingroup kernel_classes
|
||||
|
||||
\brief `Filtered_kernel_adaptor` is a kernel that uses the filtering technique from \cite cgal:bbp-iayed-01 to obtain a kernel with exact and efficient predicate functors.
|
||||
\brief `Filtered_kernel_adaptor` is a kernel that uses the filtering technique from \cgalCite{cgal:bbp-iayed-01} to obtain a kernel with exact and efficient predicate functors.
|
||||
|
||||
\details
|
||||
The geometric constructions are exactly those
|
||||
|
|
@ -53,10 +53,10 @@ namespace CGAL {
|
|||
\ingroup kernel_classes
|
||||
|
||||
`Filtered_kernel` is a kernel that uses the filtering technique based
|
||||
on interval arithmetic from \cite cgal:bbp-iayed-01 to achieve
|
||||
on interval arithmetic from \cgalCite{cgal:bbp-iayed-01} to achieve
|
||||
exact and efficient predicates. In addition, a few selected important
|
||||
predicates are implemented using the formally proved, semi-static, filtering
|
||||
techniques from \cite cgal:mp-fcafg-05.
|
||||
techniques from \cgalCite{cgal:mp-fcafg-05}.
|
||||
|
||||
The geometric constructions are exactly those
|
||||
of the kernel `CK`, which means that they are not necessarily exact.
|
||||
|
|
|
|||
|
|
@ -59,12 +59,12 @@ There are many approaches to this problem, one of them is to compute
|
|||
exactly (compute so accurate that all decisions made by the algorithm
|
||||
are exact) which is possible in many cases but more expensive
|
||||
than standard floating-point arithmetic.
|
||||
C. M. Hoffmann \cite h-gsm-89, \cite h-pargc-89 illustrates some
|
||||
C. M. Hoffmann \cgalCite{h-gsm-89}, \cgalCite{h-pargc-89} illustrates some
|
||||
of the problems arising in the implementation of geometric algorithms
|
||||
and discusses some approaches to solve them.
|
||||
A more recent overview is given in \cite s-rpigc-00.
|
||||
A more recent overview is given in \cgalCite{s-rpigc-00}.
|
||||
The exact computation paradigm is discussed by Yap and Dubé
|
||||
\cite yd-ecp-95 and Yap \cite y-tegc-97.
|
||||
\cgalCite{yd-ecp-95} and Yap \cgalCite{y-tegc-97}.
|
||||
|
||||
In \cgal you can choose the underlying number types and arithmetic.
|
||||
You can use different types of arithmetic simultaneously and the choice can
|
||||
|
|
@ -282,7 +282,7 @@ Other valid `FieldNumberType`s are `leda_rational` and
|
|||
If it is crucial for you that the computation is reliable, the right
|
||||
choice is probably a number type that guarantees exact computation.
|
||||
The `Filtered_kernel` provides a way to apply filtering techniques
|
||||
\cite cgal:bbp-iayed-01 to achieve a kernel with exact and efficient
|
||||
\cgalCite{cgal:bbp-iayed-01} to achieve a kernel with exact and efficient
|
||||
predicates. Still other people will prefer the built-in
|
||||
type <TT>double</TT>, because they need speed and can live with
|
||||
approximate results, or even algorithms that, from time to time,
|
||||
|
|
|
|||
|
|
@ -36,12 +36,12 @@ unexpected failures for some correct input data. There are many
|
|||
approaches to this problem, one of them is to compute exactly (compute
|
||||
so accurate that all decisions made by the algorithm are exact) which
|
||||
is possible in many cases but more expensive than standard
|
||||
floating-point arithmetic. C. M. Hoffmann \cite h-gsm-89, \cite h-pargc-89
|
||||
floating-point arithmetic. C. M. Hoffmann \cgalCite{h-gsm-89}, \cgalCite{h-pargc-89}
|
||||
illustrates some of the problems arising in the implementation of
|
||||
geometric algorithms and discusses some approaches to solve them. A
|
||||
more recent overview is given in \cite s-rpigc-00. The exact
|
||||
computation paradigm is discussed by Yap and Dubé \cite yd-ecp-95
|
||||
and Yap \cite y-tegc-97.
|
||||
more recent overview is given in \cgalCite{s-rpigc-00}. The exact
|
||||
computation paradigm is discussed by Yap and Dubé \cgalCite{yd-ecp-95}
|
||||
and Yap \cgalCite{y-tegc-97}.
|
||||
|
||||
In \cgal you can choose the underlying number types and arithmetic.
|
||||
You can use different types of arithmetic simultaneously and the
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ We are working on that one, but you will have to wait.
|
|||
\section seckds_intro An Overview of Kinetic Data Structures and Sweep Algorithms
|
||||
|
||||
%Kinetic data structures were first introduced in by Basch et. al. in
|
||||
1997 \cite cgal:bgh-dsmd-97. The idea stems from the observation that
|
||||
1997 \cgalCite{cgal:bgh-dsmd-97}. The idea stems from the observation that
|
||||
most, if not all, computational geometry structures are built using
|
||||
<I>predicates</I> - functions on quantities defining the geometric
|
||||
input (e.g. point coordinates), which return a discrete set of
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ in Section \ref seckds_examples. The framework makes heavy use of
|
|||
our `Polynomial_kernel` package to provide models of the
|
||||
`Kinetic::FunctionKernel` concept.
|
||||
|
||||
The framework was first presented at ALENEX \cite cgal:gkr-cfhm-04.
|
||||
The framework was first presented at ALENEX \cgalCite{cgal:gkr-cfhm-04}.
|
||||
|
||||
\section seckds_architecture Architecture
|
||||
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ binary function: `Matrix::Value` \f$ \times\f$
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses an algorithm by Aggarwal
|
||||
et al.\cite akmsw-gamsa-87. The runtime is linear in the number
|
||||
et al.\cgalCite{akmsw-gamsa-87}. The runtime is linear in the number
|
||||
of rows and columns of the matrix.
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ true.
|
|||
\cgalHeading{Implementation}
|
||||
|
||||
The implementation uses an algorithm by
|
||||
Frederickson and Johnson\cite fj-fkppc-83, \cite fj-gsrsm-84 and runs in
|
||||
Frederickson and Johnson\cgalCite{fj-fkppc-83}, \cgalCite{fj-gsrsm-84} and runs in
|
||||
\f$ \mathcal{O}(n \cdot k + f \cdot \log (n \cdot k))\f$, where \f$ n\f$ is
|
||||
the number of input matrices, \f$ k\f$ denotes the maximal dimension of
|
||||
any input matrix and \f$ f\f$ the time needed for one feasibility test.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
|||
\cgalAutoToc
|
||||
\author Laurent Rineau
|
||||
|
||||
This package implements Shewchuk's algorithm \cite s-mgdsa-00 to construct
|
||||
This package implements Shewchuk's algorithm \cgalCite{s-mgdsa-00} to construct
|
||||
conforming triangulations and 2D meshes. Conforming triangulations will be
|
||||
described in Section \ref secMesh_2_conforming_triangulation and
|
||||
meshes in Section \ref secMesh_2_meshes.
|
||||
|
|
@ -183,7 +183,7 @@ If some input angles are smaller than \f$ 60\f$ degrees, the algorithm will
|
|||
end up with a mesh in which some triangles violate the criteria near small
|
||||
input angles. This is unavoidable since small angles formed
|
||||
by input segments cannot be suppressed. Furthermore, it has been
|
||||
shown (\cite s-mgdsa-00), that some domains with small input angles
|
||||
shown (\cgalCite{s-mgdsa-00}), that some domains with small input angles
|
||||
cannot be meshed with angles even smaller than the small input angles.
|
||||
Note that if the domain is a polygonal region, the resulting mesh will
|
||||
satisfy size and shape criteria except for the small input angles.
|
||||
|
|
|
|||
|
|
@ -44,14 +44,14 @@ for instance in terms of sizing field
|
|||
or with respect to some user customized quality criteria.
|
||||
|
||||
The meshing engine used in this mesh generator
|
||||
is based on Delaunay refinement \cite c-gqmgc-93, \cite r-draq2d-95, \cite s-tmgdr-98.
|
||||
is based on Delaunay refinement \cgalCite{c-gqmgc-93}, \cgalCite{r-draq2d-95}, \cgalCite{s-tmgdr-98}.
|
||||
It uses the notion of restricted Delaunay triangulation
|
||||
to approximate 1-dimensional curve segments and surface patches \cite cgal:bo-pgsms-05.
|
||||
to approximate 1-dimensional curve segments and surface patches \cgalCite{cgal:bo-pgsms-05}.
|
||||
Before the refinement, a mechanism of protecting balls is set up on 1-dimensional features, if any,
|
||||
to ensure a fair representation
|
||||
of those features in the mesh, and also to guarantee the termination of the refinement process,
|
||||
whatever may be the input geometry, in particular whatever small angles
|
||||
the boundary and subdivision surface patches may form \cite cgal:cdl-pdma-07, \cite cgal:cdr-drpsc-07.
|
||||
the boundary and subdivision surface patches may form \cgalCite{cgal:cdl-pdma-07}, \cgalCite{cgal:cdr-drpsc-07}.
|
||||
The Delaunay refinement is followed by a mesh optimization phase
|
||||
to remove slivers and provide a good quality mesh.
|
||||
|
||||
|
|
@ -184,7 +184,7 @@ the corresponding points are inserted into the Delaunay triangulation
|
|||
from the start.
|
||||
|
||||
If the domain has 1-dimensional exposed features,
|
||||
the method of protecting balls \cite cgal:cdr-drpsc-07, \cite cgal:cdl-pdma-07
|
||||
the method of protecting balls \cgalCite{cgal:cdr-drpsc-07}, \cgalCite{cgal:cdl-pdma-07}
|
||||
is used to achieve an accurate representation of those features in the mesh
|
||||
and to guarantee that the refinement process terminates
|
||||
whatever may be the dihedral angles formed by input surface patches incident to a
|
||||
|
|
@ -238,7 +238,7 @@ a perturber and an exuder.
|
|||
The Lloyd and odt-smoother are global optimizers
|
||||
moving the mesh vertices to minimize
|
||||
a mesh energy. Those optimizers are described respectively in
|
||||
\cite cgal:dfg-cvtaa-99t, \cite cgal:dw-tmgob-02 and in \cite cgal::c-mssbo-04, \cite cgal:acyd-vtm-05.
|
||||
\cgalCite{cgal:dfg-cvtaa-99t}, \cgalCite{cgal:dw-tmgob-02} and in \cgalCite{cgal::c-mssbo-04}, \cgalCite{cgal:acyd-vtm-05}.
|
||||
In both cases the mesh energy
|
||||
is the `L1` error resulting from the interpolation
|
||||
of the function \f$ f(x) =x^2\f$ by a piecewise linear function.
|
||||
|
|
@ -263,9 +263,9 @@ to be very efficient as a preliminary step of optimization, as they tend to enha
|
|||
efficiency of the perturber and/or exuder applied next, see \cgalFigureRef{figureoptimization}
|
||||
|
||||
The perturber and the exuder focus on improving the worst mesh elements.
|
||||
The perturber \cite cgal:tsa-ps3dd-09 improves the meshes by local changes
|
||||
The perturber \cgalCite{cgal:tsa-ps3dd-09} improves the meshes by local changes
|
||||
in the vertices positions
|
||||
aiming to make sliver disappear. The exuder \cite cgal:cdeft-slive-00
|
||||
aiming to make sliver disappear. The exuder \cgalCite{cgal:cdeft-slive-00}
|
||||
chases the remaining slivers by
|
||||
re-weighting mesh vertices with optimal weights.
|
||||
|
||||
|
|
@ -980,33 +980,33 @@ vertices/second
|
|||
\subsection Mesh_3TheoreticalFoundations Theoretical Foundations
|
||||
|
||||
The \cgal mesh generation package implements a meshing engine based
|
||||
on the method of Delaunay refinement introduced by Chew \cite c-gqmgc-93 and Ruppert \cite r-draq2d-95
|
||||
and pioneered in 3D by Shewchuk \cite s-tmgdr-98.
|
||||
on the method of Delaunay refinement introduced by Chew \cgalCite{c-gqmgc-93} and Ruppert \cgalCite{r-draq2d-95}
|
||||
and pioneered in 3D by Shewchuk \cgalCite{s-tmgdr-98}.
|
||||
It uses the notion of restricted Delaunay triangulation
|
||||
to approximate 1-dimensional curved features and curved surface patches
|
||||
and rely on the work of Boissonnat and Oudot \cite cgal:bo-pgsms-05
|
||||
and Oudot et al. \cite cgal:ory-mvbss-05
|
||||
and rely on the work of Boissonnat and Oudot \cgalCite{cgal:bo-pgsms-05}
|
||||
and Oudot et al. \cgalCite{cgal:ory-mvbss-05}
|
||||
to achieve accurate representation of boundary and subdividing surfaces in the mesh.
|
||||
The mechanism of protecting balls, used to ensure a fair representation
|
||||
of 1-dimensional features, if any, and the termination of the refinement process
|
||||
whatever may be the input geometry, in particular whatever small dihedral angles may form
|
||||
the boundary and subdivision surface patches,
|
||||
was pioneered by Cheng et al. \cite cgal:cdr-drpsc-07 and further experimented by Dey, Levine et al.
|
||||
\cite cgal:cdl-pdma-07.
|
||||
was pioneered by Cheng et al. \cgalCite{cgal:cdr-drpsc-07} and further experimented by Dey, Levine et al.
|
||||
\cgalCite{cgal:cdl-pdma-07}.
|
||||
The optimization phase involves global optimization processes, a perturbation process
|
||||
and a sliver exudation process. The global optimizers are based on Lloyd smoothing \cite cgal:dfg-cvtaa-99t, \cite cgal:dw-tmgob-02
|
||||
and odt smoothing \cite cgal::c-mssbo-04, \cite cgal:acyd-vtm-05, where odt means
|
||||
and a sliver exudation process. The global optimizers are based on Lloyd smoothing \cgalCite{cgal:dfg-cvtaa-99t}, \cgalCite{cgal:dw-tmgob-02}
|
||||
and odt smoothing \cgalCite{cgal::c-mssbo-04}, \cgalCite{cgal:acyd-vtm-05}, where odt means
|
||||
<I>optimal Delaunay triangulation</I>. The perturbation process
|
||||
is mainly based on the work of Tournois \cite cgal:t-om-09
|
||||
and Tournois et al. \cite cgal:twad-iropitmg-09,
|
||||
is mainly based on the work of Tournois \cgalCite{cgal:t-om-09}
|
||||
and Tournois et al. \cgalCite{cgal:twad-iropitmg-09},
|
||||
while the exudation process is, the now famous, optimization by weighting described
|
||||
in Edelsbrunner et al. \cite cgal:cdeft-slive-00.
|
||||
in Edelsbrunner et al. \cgalCite{cgal:cdeft-slive-00}.
|
||||
|
||||
\subsection Mesh_3ImplementationHistory Implementation History
|
||||
|
||||
Work on the package `Mesh_3` started during the PhD thesis of Laurent Rineau
|
||||
advised by Mariette Yvinec. A code prototype, together
|
||||
with a first version of design and specifications \cite cgal:ry-gsddrm-06
|
||||
with a first version of design and specifications \cgalCite{cgal:ry-gsddrm-06}
|
||||
came out of their collaboration.
|
||||
|
||||
From the beginning of 2009, most of the work has been performed by Stéphane
|
||||
|
|
@ -1022,7 +1022,7 @@ and appeared first in release 3.6 of \cgal.
|
|||
|
||||
In collaboration with Laurent Rineau, Stéphane also added demos and examples.
|
||||
After some experiments on medical imaging data performed by
|
||||
Dobrina Boltcheva et al. \cite cgal:byb-mgmmi-09, \cite cgal:-byb-fpdmgmmi-09, the handling
|
||||
Dobrina Boltcheva et al. \cgalCite{cgal:byb-mgmmi-09}, \cgalCite{cgal:-byb-fpdmgmmi-09}, the handling
|
||||
of 1-dimensional features was worked out by Laurent Rineau, Stéphane Tayeb
|
||||
and Mariette Yvinec. It appeared first in the release 3.8 of \cgal.
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
|||
|
||||
The `Greene_convex_decomposition_2` class implements the approximation algorithm of
|
||||
Greene for the decomposition of an input polygon into convex
|
||||
sub-polygons \cite g-dpcp-83. This algorithm takes \f$ O(n \log n)\f$
|
||||
sub-polygons \cgalCite{g-dpcp-83}. This algorithm takes \f$ O(n \log n)\f$
|
||||
time and \f$ O(n)\f$ space, where \f$ n\f$ is the size of the input polygon,
|
||||
and outputs a decomposition whose size is guaranteed to be no more
|
||||
than four times the size of the optimal decomposition.
|
||||
|
|
@ -41,7 +41,7 @@ namespace CGAL {
|
|||
|
||||
The `Hertel_Mehlhorn_convex_decomposition_2` class implements the approximation algorithm of Hertel
|
||||
and Mehlhorn for decomposing a polygon into convex
|
||||
sub-polygons \cite hm-ftsp-83. This algorithm constructs a
|
||||
sub-polygons \cgalCite{hm-ftsp-83}. This algorithm constructs a
|
||||
triangulation of the input polygon and proceeds by removing
|
||||
unnecessary triangulation edges. Given the triangulation, the
|
||||
algorithm requires \f$ O(n)\f$ time and space to construct a convex
|
||||
|
|
@ -78,7 +78,7 @@ namespace CGAL {
|
|||
|
||||
The `Optimal_convex_decomposition_2` class provides an implementation of Greene's
|
||||
dynamic programming algorithm for optimal decomposition of a
|
||||
polygon into convex sub-polygons \cite g-dpcp-83. Note that
|
||||
polygon into convex sub-polygons \cgalCite{g-dpcp-83}. Note that
|
||||
this algorithm requires \f$ O(n^4)\f$ time and \f$ O(n^3)\f$ space in
|
||||
the worst case, where \f$ n\f$ is the size of the input polygon.
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CGAL {
|
|||
|
||||
The `Small_side_angle_bisector_decomposition_2` class implements a simple yet efficient heuristic for
|
||||
decomposing an input polygon into convex sub-polygons. It is based
|
||||
on the algorithm suggested by Flato and Halperin \cite fh-recpm-00,
|
||||
on the algorithm suggested by Flato and Halperin \cgalCite{fh-recpm-00},
|
||||
but without introducing Steiner points. The algorithm operates in two
|
||||
major steps. In the first step, it tries to subdivide the polygon by
|
||||
connect two reflex vertices with an edge. When this is not possible any
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ Let us denote the vertices of the input polygons by
|
|||
\f$ Q = \left( q_0, \ldots, q_{n-1} \right)\f$. We assume that both \f$ P\f$ and \f$ Q\f$
|
||||
have positive orientations (i.e.\ their boundaries wind in a counterclockwise
|
||||
order around their interiors) and compute the convolution of the two polygon
|
||||
boundaries. The <I>convolution</I> of these two polygons \cite grs-kfcg-83,
|
||||
boundaries. The <I>convolution</I> of these two polygons \cgalCite{grs-kfcg-83},
|
||||
denoted \f$ P * Q\f$, is a collection of line segments of the form
|
||||
\f$ [p_i + q_j, p_{i+1} + q_j]\f$, \cgalFootnote{Throughout this chapter, we increment
|
||||
or decrement an index of a vertex modulo the size of the polygon.}
|
||||
|
|
@ -146,31 +146,31 @@ The Minkowski-sum package includes four models of the concept
|
|||
`PolygonConvexDecomposition_2`. The first three are classes that wrap
|
||||
the decomposition functions included in the Planar Polygon Partitioning
|
||||
package, while the fourth is an implementation of a decomposition algorithm
|
||||
introduced in \cite cgal:afh-pdecm-02. The convex decompositions that it
|
||||
introduced in \cgalCite{cgal:afh-pdecm-02}. The convex decompositions that it
|
||||
creates usually yield efficient running times for Minkowski sum computations:
|
||||
<UL>
|
||||
<LI>The class `Optimal_convex_decomposition_2<Kernel>` uses the
|
||||
dynamic-programming algorithm of Greene \cite g-dpcp-83 for computing an
|
||||
dynamic-programming algorithm of Greene \cgalCite{g-dpcp-83} for computing an
|
||||
optimal decomposition of a polygon into a minimal number of convex
|
||||
sub-polygons. The main drawback of this strategy is that it runs in \f$ O(n^4)\f$
|
||||
time and \f$ O(n^3)\f$ in the worst case,where \f$ n\f$ is the number of vertices in
|
||||
the input polygon.
|
||||
<LI>The class `Hertel_Mehlhorn_convex_decomposition_2<Kernel>` implements the
|
||||
approximation algorithm suggested by Hertel and Mehlhorn \cite hm-ftsp-83,
|
||||
approximation algorithm suggested by Hertel and Mehlhorn \cgalCite{hm-ftsp-83},
|
||||
which triangulates the input polygon and proceeds by throwing away
|
||||
unnecessary triangulation edges.
|
||||
This algorithm requires \f$ O(n)\f$ time and space and guarantees that
|
||||
the number of sub-polygons it generates is not more than four
|
||||
times the optimum.
|
||||
<LI>The class `Greene_convex_decomposition_2<Kernel>` is an implementation of
|
||||
Greene's approximation algorithm \cite g-dpcp-83, which computes a
|
||||
Greene's approximation algorithm \cgalCite{g-dpcp-83}, which computes a
|
||||
convex decomposition of the polygon based on its partitioning into
|
||||
\f$ y\f$-monotone polygons. This algorithm runs in \f$ O(n \log n)\f$ time
|
||||
and \f$ O(n)\f$ space, and has the same approximation guarantee as
|
||||
Hertel and Mehlhorn's algorithm.
|
||||
<LI>The class `Small_side_angle_bisector_decomposition_2<Kernel>` uses
|
||||
a heuristic improvement to the angle-bisector decomposition method
|
||||
suggested by Chazelle and Dobkin \cite cd-ocd-85, which runs in
|
||||
suggested by Chazelle and Dobkin \cgalCite{cd-ocd-85}, which runs in
|
||||
\f$ O(n^2)\f$ time. It starts by examining each pair of reflex vertices
|
||||
in the input polygon such that the entire interior of the diagonal
|
||||
connecting these vertices is contained in the polygon. Out of all
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ The Minkowski sum of a spoon and a star.
|
|||
The Minkowski sum of two point sets \f$ P\f$ and \f$ Q\f$ in \f$ \mathbb{R}^d\f$, denoted by
|
||||
\f$ P \oplus Q\f$, is defined as the set \f$ \{p+q:p \in P, q \in Q
|
||||
\}\f$. Minkowski sums are used in a wide range of applications such as
|
||||
robot motion planning \cite l-rmp-91 and computer-aided
|
||||
design \cite cgal:ek-sicad-99. \cgalFigureRef{figmotionPlanning} shows
|
||||
robot motion planning \cgalCite{l-rmp-91} and computer-aided
|
||||
design \cgalCite{cgal:ek-sicad-99}. \cgalFigureRef{figmotionPlanning} shows
|
||||
an example how Minkowski sums can be used to plan the motion of a
|
||||
translational robot. We want to know which are legal positions of the
|
||||
robot, and where can the robot go to from a specified starting
|
||||
|
|
@ -59,7 +59,7 @@ The decomposition method for computing the Minkowski sum of non-convex
|
|||
polyhedra makes use of the fact that Minkowski sums of convex
|
||||
polyhedra are rather easy to compute. It decomposes both polyhedra
|
||||
into convex pieces, computes all pairwise Minkowski sums of the convex
|
||||
pieces, and merges the pairwise sums \cite bkos-cgaa-97.
|
||||
pieces, and merges the pairwise sums \cgalCite{bkos-cgaa-97}.
|
||||
|
||||
\cgalFigureBegin{Mink3decomp,decomposition_method.png}
|
||||
The decomposition method decomposes both input polyhedra into convex parts, computes all pairwise Minkowski sums of the convex parts, and merges the pairwise sums.
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ rehashing when set to the number of expected elements in the map.
|
|||
The design is derived from the \stl `hash_map` and the \leda type
|
||||
`map`. Its specialization on insertion only and unique hash values
|
||||
allow for a more time- and space-efficient implementation, see also
|
||||
\cite mn-lpcgc-00, Chapter 5. This implementation makes also use
|
||||
\cgalCite{mn-lpcgc-00}, Chapter 5. This implementation makes also use
|
||||
of sentinels that lead to defined keys that have not been inserted.
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ Class diagram for the modifier. It illustrates the safe access to an internal re
|
|||
\cgalFigureEnd
|
||||
|
||||
The solution provided here is inspired by the strategy
|
||||
pattern \cite cgal:ghjv-dpero-95, though it serves a different intent.
|
||||
pattern \cgalCite{cgal:ghjv-dpero-95}, though it serves a different intent.
|
||||
The abstract base class
|
||||
`Modifier_base<R>` declares a pure virtual member function
|
||||
`operator()` that accepts a single reference parameter of the
|
||||
|
|
|
|||
|
|
@ -77,10 +77,10 @@ next nearest value. This can be ensured using `Protect_FPU_rounding` with
|
|||
\section Modular_arithmeticDesign Design and Implementation History
|
||||
|
||||
The class `Residue` is based on the C-code of Sylvain Pion et. al.
|
||||
as it was presented in \cite bepp-sdrns-99.
|
||||
as it was presented in \cgalCite{bepp-sdrns-99}.
|
||||
|
||||
The remaining part of the package is the result of the integration process
|
||||
of the NumeriX library of <span class="textsc">Exacus</span> \cite beh-eeeafcs-05 into \cgal.
|
||||
of the NumeriX library of <span class="textsc">Exacus</span> \cgalCite{beh-eeeafcs-05} into \cgal.
|
||||
|
||||
*/
|
||||
} /* namespace CGAL */
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ namespace CGAL {
|
|||
In solid modeling, two major representation schemes are used:
|
||||
<I>constructive solid geometry</I> (CSG) and <I>boundary
|
||||
representations</I> (B-rep). Both have inherent strengths and
|
||||
weaknesses, see \cite cgal:h-gsmi-89 for a discussion.
|
||||
weaknesses, see \cgalCite{cgal:h-gsmi-89} for a discussion.
|
||||
|
||||
In CSG a solid is represented as a set-theoretic Boolean combination
|
||||
of primitive solid objects, such as blocks, prisms, cylinders, or
|
||||
|
|
@ -240,7 +240,7 @@ which are excluded from the volume.
|
|||
For each face we store a label, e.g., a set-selection mark, which
|
||||
indicates whether the face is part of the solid or if it is
|
||||
excluded. We call the resulting data structure <I>Selective Nef
|
||||
Complex</I>, <I>SNC</I> for short \cite cgal:ghhkm-bosnc-03. However, in
|
||||
Complex</I>, <I>SNC</I> for short \cgalCite{cgal:ghhkm-bosnc-03}. However, in
|
||||
\cgal we identify the names and call the <I>SNC</I> data structure
|
||||
`Nef_polyhedron_3`.
|
||||
|
||||
|
|
@ -266,7 +266,7 @@ unspecified value, which is finite but larger than all coordinate
|
|||
values that may occur in the bounded part of the polyhedron. As a
|
||||
result, each Nef polyhedron becomes bounded. We call the boundary of
|
||||
the bounding volume the <I>infimaximal
|
||||
box</I> \cite cgal:sm-iftml-00.
|
||||
box</I> \cgalCite{cgal:sm-iftml-00}.
|
||||
|
||||
We clip lines and rays at the infimaximal box. The intersection points
|
||||
with the infimaximal box are called <I>non-standard points</I>, which
|
||||
|
|
@ -290,7 +290,7 @@ polynomial), and runtime performance.
|
|||
\section sectoinRegularized Regularized Set Operations
|
||||
|
||||
Since manifolds are not closed under Boolean operations, Requicha
|
||||
proposes to use <I>regularized set operations</I> \cite cgal:km-st-76,
|
||||
proposes to use <I>regularized set operations</I> \cgalCite{cgal:km-st-76},
|
||||
cgal:r-rrstm-80. A set is <I>regular</I>, if it equals the closure
|
||||
of its interior. A regularized set operation is defined as the
|
||||
standard set operation followed by a regularization of the result.
|
||||
|
|
@ -509,7 +509,7 @@ The other shalfloop lies on the inwards oriented halffacet and is
|
|||
oriented inwards, too. This shalfloop belongs to the third shell.
|
||||
|
||||
`Nef_polyhedron_3` offers a visitor interface to explore a shell
|
||||
following the well-known visitor pattern \cite cgal:ghjv-dpero-95.
|
||||
following the well-known visitor pattern \cgalCite{cgal:ghjv-dpero-95}.
|
||||
The interface is illustrated by the following example.
|
||||
|
||||
\cgalExample{Nef_3/shell_exploration.cpp}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ Rounding mode and precision (i.e.\ mantissa length) of
|
|||
`CORE::BigFloat` can be set.
|
||||
Since it also carries the error of a computed value.
|
||||
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cite klpy-clp-99.
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cgalCite{klpy-clp-99}.
|
||||
|
||||
\cgal defines the necessary functions so that this class complies to the
|
||||
requirements on number types.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace CORE {
|
|||
The class `CORE::BigInt` provides exact computation in \f$ \Z\f$.
|
||||
Operations and comparisons between objects of this type are guaranteed
|
||||
to be exact.
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cite klpy-clp-99.
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cgalCite{klpy-clp-99}.
|
||||
|
||||
\cgal defines the necessary functions so that this class complies to the
|
||||
requirements on number types.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace CORE {
|
|||
|
||||
The class `CORE::BigRat` provides exact computation in \f$ \Q\f$.
|
||||
Operations and comparisons between objects of this type are guaranteed to be exact.
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cite klpy-clp-99.
|
||||
This number type is provided by the <span class="textsc">Core</span> library \cgalCite{klpy-clp-99}.
|
||||
|
||||
\cgal defines the necessary functions so that this class complies to the
|
||||
requirements on number types.
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue