mirror of https://github.com/CGAL/cgal
Completely remove the concepts to simplify things
This commit is contained in:
parent
220be3d365
commit
1a2061cf96
|
|
@ -1,48 +0,0 @@
|
||||||
/*!
|
|
||||||
\ingroup PkgConeBasedSpannersConcepts
|
|
||||||
\cgalConcept
|
|
||||||
|
|
||||||
The concept `ComputeConeBoundaries_2` describes the set of requirements for the functor that
|
|
||||||
computes the directions of cone boundaries with a given cone number and a given initial direction
|
|
||||||
either exactly or inexactly.
|
|
||||||
|
|
||||||
\cgalHasModel `CGAL::Compute_cone_boundaries_2`
|
|
||||||
|
|
||||||
*/
|
|
||||||
template <typename Traits>
|
|
||||||
class ComputeConeBoundaries_2 {
|
|
||||||
public:
|
|
||||||
|
|
||||||
/// \name Types
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! The CGAL kernel type used by the functor.
|
|
||||||
Its requirements are described in the concept `ConeBasedSpannerTraits_2`.
|
|
||||||
*/
|
|
||||||
typedef Traits Kernel_type;
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
|
|
||||||
/// \name Operator
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! \brief The operator().
|
|
||||||
*
|
|
||||||
* Compute the directions of cone boundaries with a given
|
|
||||||
* cone number and a given initial direction. The results are returned by the reference
|
|
||||||
* argument: vector \p rays.
|
|
||||||
*
|
|
||||||
* \param[in] cone_number The number of cones
|
|
||||||
* \param[in] initial_direction The direction of the first ray
|
|
||||||
* \param[out] rays Storing the results, a vector of directions. It should contain no
|
|
||||||
* elements when passed to this operator.
|
|
||||||
*/
|
|
||||||
void operator()(const unsigned int cone_number,
|
|
||||||
Direction_2& initial_direction,
|
|
||||||
std::vector<Direction_2>& rays);
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
}; /* end ComputeConeBoundaries_2 */
|
|
||||||
|
|
||||||
|
|
@ -1,96 +0,0 @@
|
||||||
/*!
|
|
||||||
\ingroup PkgConeBasedSpannersConcepts
|
|
||||||
\cgalConcept
|
|
||||||
|
|
||||||
The concept `ConeBasedSpannerTraits_2` specifies the requirements
|
|
||||||
for the CGAL kernels that can be used in this package.
|
|
||||||
Basically, this concept describes all the types and primitives (predicates and construction objects)
|
|
||||||
that the CGAL kernel should include to make this package work properly.
|
|
||||||
Simply put, for the exact construction of the cone-based spanners,
|
|
||||||
the kernel `CGAL::Exact_predicates_exact_constructions_kernel_with_root_of`
|
|
||||||
should be used; and for the inexact construction, the kernel
|
|
||||||
`CGAL::Exact_predicates_inexact_constructions_kernel` should be used.
|
|
||||||
|
|
||||||
\cgalHasModel `CGAL::Exact_predicates_exact_constructions_kernel_with_root_of`
|
|
||||||
\cgalHasModel `CGAL::Exact_predicates_inexact_constructions_kernel`
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
class ConeBasedSpannerTraits_2 {
|
|
||||||
public:
|
|
||||||
|
|
||||||
/// \name Types
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*!
|
|
||||||
The point type.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Point_2;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
The line type.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Line_2;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
The direction type.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Direction_2;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
The affine transformation type. This is needed to rotate directions.
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Aff_transformation_2;
|
|
||||||
|
|
||||||
/*!
|
|
||||||
The polynomial type. When the cone angle \f$ \theta \f$ is in the form of
|
|
||||||
\f$ 2\pi / n \f$, where \f$ n \f$ is a positive integer, \f$ \sin(\theta) \f$
|
|
||||||
and \f$ \cos(\theta) \f$ can be represented exactly by roots of polynomials.
|
|
||||||
Thus, this polynomial type is needed to avoid the computation by calling
|
|
||||||
sin() and cos().
|
|
||||||
*/
|
|
||||||
typedef unspecified_type Polynomial;
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
|
|
||||||
/// \name Functions
|
|
||||||
/// The following functions are needed to construct cone-based spanners.
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*!
|
|
||||||
This function should return the k-th real root of an univariate polynomial, which is defined
|
|
||||||
by the iterator range, where 'begin' refers to the constant term.
|
|
||||||
It is needed in calculating cone boundaries exactly.
|
|
||||||
*/
|
|
||||||
NT CGAL::root_of(int k, InputIterator begin, InputIterator end);
|
|
||||||
|
|
||||||
/*
|
|
||||||
This function should return the square root of the argument `x`.
|
|
||||||
It is needed in calculating cone boundaries exactly.
|
|
||||||
|
|
||||||
NT CGAL::sqrt(const NT & x);
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*!
|
|
||||||
This functor should return the bisector of the two lines l1 and l2.
|
|
||||||
And the bisector should have the direction of the vector which is the sum of
|
|
||||||
the normalized directions of the two lines.
|
|
||||||
It is needed in constructing Theta graphs, not in constructing Yao graphs.
|
|
||||||
*/
|
|
||||||
Kernel::Line_2 Kernel::ConstructBisector_2::operator() ( const Kernel::Line_2 & l1,
|
|
||||||
const Kernel::Line_2 & l2 );
|
|
||||||
|
|
||||||
/*!
|
|
||||||
This function should return CGAL::LARGER iff the signed distance of p and l
|
|
||||||
is larger than the signed distance of q and l, CGAL::SMALLER, iff it is smaller,
|
|
||||||
and CGAL::EQUAL iff both are equal.
|
|
||||||
It is needed in sorting the points on the plane based on a certain direction.
|
|
||||||
*/
|
|
||||||
Comparison_result CGAL::compare_signed_distance_to_line(
|
|
||||||
const CGAL::Line_2<Kernel> &l,
|
|
||||||
const CGAL::Point_2<Kernel> &p,
|
|
||||||
const CGAL::Point_2<Kernel> &q);
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
}; /* end ConeBasedSpannerTraits_2 */
|
|
||||||
|
|
@ -1,97 +0,0 @@
|
||||||
/*!
|
|
||||||
\ingroup PkgConeBasedSpannersConcepts
|
|
||||||
\cgalConcept
|
|
||||||
|
|
||||||
The concept `ConstructConeBasedSpanner_2` describes the set of requirements to be fulfilled by any functor class that
|
|
||||||
constructs a cone based spanner, such as a Theta graph and a Yao graph, etc.
|
|
||||||
|
|
||||||
\cgalHasModel `CGAL::Construct_theta_graph_2`
|
|
||||||
\cgalHasModel `CGAL::Construct_yao_graph_2`
|
|
||||||
|
|
||||||
*/
|
|
||||||
template <typename Traits, typename Graph_>
|
|
||||||
class ConstructConeBasedSpanner_2 {
|
|
||||||
public:
|
|
||||||
|
|
||||||
/// \name Types
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! The CGAL kernel type used by the functor. Its requirements are described in
|
|
||||||
the concept `ConeBasedSpannerTraits_2`.
|
|
||||||
*/
|
|
||||||
typedef Traits Kernel_type;
|
|
||||||
|
|
||||||
/*! The graph type to store the constructed cone based spanner.
|
|
||||||
This package requires the use of the `boost::adjacency_list` in the Boost Graph Library as
|
|
||||||
the graph type. Note that there are seven template parameters for
|
|
||||||
`boost::adjacency_list`: `OutEdgeList`, `VertexList`, `Directed`, `VertexProperties`, `EdgeProperties`,
|
|
||||||
`GraphProperties`, `EdgeList`, of which we require the `VertexProperties` be `CGAL::Point_2`,
|
|
||||||
while other parameters can be chosen freely. Here the CGAL kernel type used by `CGAL::Point_2` is
|
|
||||||
determined by the first template parameter `Traits`, and we pass `CGAL::Point_2` directly
|
|
||||||
to `adjacency_list` as bundled properties because this makes our implementation much more
|
|
||||||
straightforward than using property maps.
|
|
||||||
For detailed information about bundled properties, please refer to
|
|
||||||
http://www.boost.org/doc/libs/1_58_0/libs/graph/doc/bundles.html.
|
|
||||||
If more properties for vertices are needed, they can be added later as external properties using
|
|
||||||
property maps.
|
|
||||||
*/
|
|
||||||
typedef Graph_ Graph_type;
|
|
||||||
|
|
||||||
/*! The directon type.
|
|
||||||
*/
|
|
||||||
typedef Traits::Direction_2 Direction_2;
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
|
|
||||||
/// \name Creation
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! \brief Constructor.
|
|
||||||
|
|
||||||
\param k Number of cones to divide the plane
|
|
||||||
\param initial_direction A direction denoting one of the rays dividing the
|
|
||||||
cones. This allows arbitary rotations of the rays that divide
|
|
||||||
the plane. (default: positive x-axis)
|
|
||||||
*/
|
|
||||||
Construct_spanner_2(unsigned int k, Direction_2 initial_direction = Direction_2(1,0) );
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
/// \name Operator
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! \brief Function operator to construct a cone based spanner.
|
|
||||||
*
|
|
||||||
* \tparam PointInputIterator This template parameter is to give the application developer freedom
|
|
||||||
* in choosing whichever iterator he will use to input the coordinates of the points.
|
|
||||||
* If omitted, the type of the Iterator can be inferred from the arguments passed to the
|
|
||||||
* operator().
|
|
||||||
*
|
|
||||||
* \param[in] start An iterator pointing to the first point (vertex).
|
|
||||||
* \param[in] end Past-the-end iterator.
|
|
||||||
* \param[out] g The constructed graph object.
|
|
||||||
*/
|
|
||||||
template <typename PointInputIterator>
|
|
||||||
Graph_& operator()(const PointInputIterator& start,
|
|
||||||
const PointInputIterator& end,
|
|
||||||
Graph_& g);
|
|
||||||
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
/// \name Member Access Functions
|
|
||||||
/// @{
|
|
||||||
|
|
||||||
/*! \brief returns the number of cones in this graph.
|
|
||||||
*/
|
|
||||||
const unsigned int number_of_cones() const;
|
|
||||||
|
|
||||||
/*! \brief returns the vector of the directions of the rays dividing the plane.
|
|
||||||
*/
|
|
||||||
const std::vector<Direction_2>& directions() const;
|
|
||||||
|
|
||||||
/// @}
|
|
||||||
|
|
||||||
}; /* end ConstructConeBasedSpanner_2 */
|
|
||||||
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
// PRETTY PACKAGE NAME should equal the project title in Doxyfile.in
|
// PRETTY PACKAGE NAME should equal the project title in Doxyfile.in
|
||||||
|
|
||||||
/// \defgroup PkgConeBasedSpanners Cone-Based Spanners Reference
|
/// \defgroup PkgConeBasedSpanners Cone-Based Spanners Reference
|
||||||
/// \defgroup PkgConeBasedSpannersConcepts Concepts
|
|
||||||
/// \ingroup PkgConeBasedSpanners
|
/// \ingroup PkgConeBasedSpanners
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
|
|
@ -34,10 +33,6 @@ generate the data and script files used by Gnuplot to plot the constructed graph
|
||||||
|
|
||||||
\cgalClassifedRefPages
|
\cgalClassifedRefPages
|
||||||
|
|
||||||
## Concepts ##
|
|
||||||
- `ConeBasedSpannerTraits_2`
|
|
||||||
- `ComputeConeBoundaries_2`
|
|
||||||
- `ConstructConeBasedSpanner_2`
|
|
||||||
|
|
||||||
## Functors ##
|
## Functors ##
|
||||||
- `CGAL::Compute_cone_boundaries_2`
|
- `CGAL::Compute_cone_boundaries_2`
|
||||||
|
|
|
||||||
|
|
@ -47,34 +47,31 @@ namespace CGAL {
|
||||||
* \brief The functor for computing the directions of cone boundaries with a given
|
* \brief The functor for computing the directions of cone boundaries with a given
|
||||||
* cone number and a given initial direction.
|
* cone number and a given initial direction.
|
||||||
*
|
*
|
||||||
* This computation can be either inexact by simply dividing an approximate Pi by the cone number
|
* This computation can be either inexact by simply dividing an approximate \f$ \pi \f$ by the cone number
|
||||||
* (which is quick), or exact by using roots of polynomials (requiring number types such as `CORE::Expr` or `LEDA::Real`,
|
* (which is quick), or exact by using roots of polynomials (requiring number types such as `CORE::Expr` or `leda_real`,
|
||||||
* which are slow). The inexact computation is done by the general functor definition,
|
* which are slow). The inexact computation is done by the general functor definition,
|
||||||
* while the exact computation is done by a specialization of this functor.
|
* while the exact computation is done by a specialization of this functor.
|
||||||
*
|
*
|
||||||
* \tparam Traits must be a model of `ConeBasedSpannerTraits_2`.
|
|
||||||
* Simply put, if this parameter is
|
|
||||||
* `Exact_predicates_exact_constructions_kernel_with_root_of`,
|
|
||||||
* the specialization functor will be called; otherwise, the general functor will
|
|
||||||
* be called.
|
|
||||||
*
|
|
||||||
* In the construction of cone-based spanners such as Yao graph and Theta graph implemented by this package,
|
* In the construction of cone-based spanners such as Yao graph and Theta graph implemented by this package,
|
||||||
* this functor is called first to compute the cone boundaries.
|
* this functor is called first to compute the cone boundaries.
|
||||||
* Of course, this functor can also be used in other applications where the plane needs to be divided
|
* Of course, this functor can also be used in other applications where the plane needs to be divided
|
||||||
* into equally-angled cones.
|
* into equally-angled cones.
|
||||||
*
|
*
|
||||||
* \cgalModels `ComputeConeBoundaries_2`
|
* \tparam Traits_ must be either `CGAL::Exact_predicates_exact_constructions_kernel_with_root_of` or `CGAL::Exact_predicates_inexact_constructions_kernel`.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
template <typename Traits>
|
template <typename Traits_>
|
||||||
class Compute_cone_boundaries_2 {
|
class Compute_cone_boundaries_2 {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*! Indicate the type of the \cgal kernel. */
|
/*! the geometric traits class. */
|
||||||
typedef Traits Kernel_type;
|
typedef Traits_ Traits;
|
||||||
|
|
||||||
|
/*! the direction type. */
|
||||||
|
typedef typename Traits::Direction_2 Direction_2;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef typename Traits::Direction_2 Direction_2;
|
|
||||||
typedef typename Traits::Aff_transformation_2 Transformation;
|
typedef typename Traits::Aff_transformation_2 Transformation;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
@ -90,6 +87,7 @@ public:
|
||||||
* and output them to `result` in the counterclockwise order.
|
* and output them to `result` in the counterclockwise order.
|
||||||
* Finally, the past-the-end iterator for the resulting directions is returned.
|
* Finally, the past-the-end iterator for the resulting directions is returned.
|
||||||
*
|
*
|
||||||
|
* \tparam DirectionOutputIterator an `OutputIterator` with value type `Direction_2`.
|
||||||
* \param cone_number The number of cones
|
* \param cone_number The number of cones
|
||||||
* \param initial_direction The direction of the first ray
|
* \param initial_direction The direction of the first ray
|
||||||
* \param result The output iterator
|
* \param result The output iterator
|
||||||
|
|
@ -100,7 +98,7 @@ public:
|
||||||
DirectionOutputIterator result) {
|
DirectionOutputIterator result) {
|
||||||
if (cone_number<2) {
|
if (cone_number<2) {
|
||||||
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
||||||
std::exit(1);
|
CGAL_assertion(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
*result++ = initial_direction;
|
*result++ = initial_direction;
|
||||||
|
|
|
||||||
|
|
@ -44,23 +44,31 @@ namespace CGAL {
|
||||||
\brief A template functor for constructing Theta graphs with a given set of 2D points and
|
\brief A template functor for constructing Theta graphs with a given set of 2D points and
|
||||||
a given initial direction for the cone boundaries.
|
a given initial direction for the cone boundaries.
|
||||||
|
|
||||||
For the meaning and use of its template parameters, please refer to the concept
|
\tparam Traits_ must be either `CGAL::Exact_predicates_exact_constructions_kernel_with_root_of` or `CGAL::Exact_predicates_inexact_constructions_kernel`.
|
||||||
`ConstructConeBasedSpanner_2`.
|
|
||||||
|
\tparam Graph_ is the graph type to store the constructed cone based spanner.
|
||||||
\cgalModels `ConstructConeBasedSpanner_2`
|
It must be <A HREF="http://www.boost.org/libs/graph/doc/adjacency_list.html">`boost::adjacency_list`</A> with `Traits_::Point_2` as `VertexProperties`.
|
||||||
*/
|
*/
|
||||||
template <typename Traits, typename Graph_>
|
template <typename Traits_, typename Graph_>
|
||||||
class Construct_theta_graph_2 {
|
class Construct_theta_graph_2 {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*! Indicate the type of the \cgal kernel. */
|
|
||||||
typedef Traits Kernel_type;
|
/*! the geometric traits class. */
|
||||||
/*! Indicate the specific type of `boost::adjacency_list`. */
|
typedef Traits_ Traits;
|
||||||
typedef Graph_ Graph_type;
|
|
||||||
|
/*! the specific type of `boost::adjacency_list`. */
|
||||||
|
typedef Graph_ Graph;
|
||||||
|
|
||||||
|
/*! the point type */
|
||||||
|
typedef typename Traits::Point_2 Point_2;
|
||||||
|
|
||||||
|
/*! the direction type */
|
||||||
|
typedef typename Traits::Direction_2 Direction_2;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef typename Traits::Direction_2 Direction_2;
|
|
||||||
typedef typename Traits::Point_2 Point_2;
|
|
||||||
typedef typename Traits::Line_2 Line_2;
|
typedef typename Traits::Line_2 Line_2;
|
||||||
typedef typename Traits::Aff_transformation_2 Transformation;
|
typedef typename Traits::Aff_transformation_2 Transformation;
|
||||||
typedef Less_by_direction_2<Traits, Graph_> Less_by_direction;
|
typedef Less_by_direction_2<Traits, Graph_> Less_by_direction;
|
||||||
|
|
@ -88,7 +96,7 @@ public:
|
||||||
{
|
{
|
||||||
if (k<2) {
|
if (k<2) {
|
||||||
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
||||||
std::exit(1);
|
CGAL_assertion(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize a functor, specialization will happen here depending on the kernel type to
|
/* Initialize a functor, specialization will happen here depending on the kernel type to
|
||||||
|
|
@ -99,7 +107,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/* \brief Copy constructor. As commented by Michael Hemmer, copy constructor is not needed for
|
/* \brief Copy constructor. As commented by Michael Hemmer, copy constructor is not needed for
|
||||||
a funtor.
|
a functor.
|
||||||
\param x another Construct_theta_graph_2 object to copy from.
|
\param x another Construct_theta_graph_2 object to copy from.
|
||||||
|
|
||||||
Construct_theta_graph_2 (const Construct_theta_graph_2& x) : cone_number(x.cone_number), rays(x.rays) {}
|
Construct_theta_graph_2 (const Construct_theta_graph_2& x) : cone_number(x.cone_number), rays(x.rays) {}
|
||||||
|
|
@ -108,9 +116,9 @@ public:
|
||||||
/*!
|
/*!
|
||||||
\brief Function operator to construct a Theta graph.
|
\brief Function operator to construct a Theta graph.
|
||||||
|
|
||||||
\details This operator implements the algorithm for constructing the Theta graph.
|
\details For the details of this algorithm, please refer to the User Manual.
|
||||||
For the details of this algorithm, please refer to the user manual.
|
|
||||||
|
|
||||||
|
\tparam PointInputIterator an `InputIterator` with value type `Point_2`.
|
||||||
\param[in] start An iterator pointing to the first vertex of the input.
|
\param[in] start An iterator pointing to the first vertex of the input.
|
||||||
\param[in] end An iterator pointing to the past-the-end location of the input.
|
\param[in] end An iterator pointing to the past-the-end location of the input.
|
||||||
\param[out] g The constructed graph object.
|
\param[out] g The constructed graph object.
|
||||||
|
|
@ -143,8 +151,9 @@ public:
|
||||||
return cone_number;
|
return cone_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief outputs the directions in the vector rays to the iterator `result`.
|
/*! \brief outputs the set of directions to the iterator `result`.
|
||||||
|
|
||||||
|
\tparam DirectionOutputIterator an `OutputIterator` with value type `Direction_2`.
|
||||||
\return `result`
|
\return `result`
|
||||||
*/
|
*/
|
||||||
template<class DirectionOutputIterator>
|
template<class DirectionOutputIterator>
|
||||||
|
|
|
||||||
|
|
@ -42,23 +42,28 @@ namespace CGAL {
|
||||||
\brief A template functor for constructing Yao graphs with a given set of 2D points and
|
\brief A template functor for constructing Yao graphs with a given set of 2D points and
|
||||||
a given initial direction for the cone boundaries.
|
a given initial direction for the cone boundaries.
|
||||||
|
|
||||||
For the meaning and use of its template parameters, please refer to the concept
|
\tparam Traits_ must be either `CGAL::Exact_predicates_exact_constructions_kernel_with_root_of` or `CGAL::Exact_predicates_inexact_constructions_kernel`.
|
||||||
`ConstructConeBasedSpanner_2`.
|
|
||||||
|
\tparam Graph_ is the graph type to store the constructed cone based spanner.
|
||||||
|
It must be <A HREF="http://www.boost.org/libs/graph/doc/adjacency_list.html">`boost::adjacency_list`</A> with `Traits_::Point_2` as `VertexProperties`
|
||||||
|
|
||||||
\cgalModels `ConstructConeBasedSpanner_2`
|
|
||||||
*/
|
*/
|
||||||
template <typename Traits, typename Graph_>
|
template <typename Traits_, typename Graph_>
|
||||||
class Construct_yao_graph_2 {
|
class Construct_yao_graph_2 {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*! Indicate the type of the \cgal kernel. */
|
/*! the geometric traits class. */
|
||||||
typedef Traits Kernel_type;
|
typedef Traits_ Traits;
|
||||||
/*! Indicate the specific type of `boost::adjacency_list`. */
|
/*! the specific type of `boost::adjacency_list`. */
|
||||||
typedef Graph_ Graph_type;
|
typedef Graph_ Graph;
|
||||||
|
|
||||||
|
/*! the point type */
|
||||||
|
typedef typename Traits::Point_2 Point_2;
|
||||||
|
|
||||||
|
/*! the direction type */
|
||||||
|
typedef typename Traits::Direction_2 Direction_2;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef typename Traits::Direction_2 Direction_2;
|
|
||||||
typedef typename Traits::Point_2 Point_2;
|
|
||||||
typedef typename Traits::Line_2 Line_2;
|
typedef typename Traits::Line_2 Line_2;
|
||||||
typedef Less_by_direction_2<Traits, Graph_> Less_by_direction;
|
typedef Less_by_direction_2<Traits, Graph_> Less_by_direction;
|
||||||
// a type for the set to store vertices sorted by a direction
|
// a type for the set to store vertices sorted by a direction
|
||||||
|
|
@ -87,7 +92,7 @@ public:
|
||||||
{
|
{
|
||||||
if (k<2) {
|
if (k<2) {
|
||||||
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
std::cout << "The number of cones must be larger than 1!" << std::endl;
|
||||||
std::exit(1);
|
CGAL_assertion(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Initialize a functor, specialization will happen here depending on the kernel type to
|
/* Initialize a functor, specialization will happen here depending on the kernel type to
|
||||||
|
|
@ -104,12 +109,12 @@ public:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief Function operator to construct a Yao graph.
|
\brief Function operator to construct a Yao graph.
|
||||||
|
|
||||||
\details This operator implements the algorithm for constructing the Yao graph.
|
\details For the details of this algorithm, please refer to the User Manual.
|
||||||
The algorithm implemented is an adaptation from the algorithm for constructing Theta graph.
|
|
||||||
For more details, please refer to the user manual.
|
|
||||||
|
|
||||||
|
\tparam PointInputIterator an `InputIterator` with value type `Point_2`.
|
||||||
|
|
||||||
\param[in] start An iterator pointing to the first vertex of the input.
|
\param[in] start An iterator pointing to the first vertex of the input.
|
||||||
\param[in] end An iterator pointing to the past-the-end location of the input.
|
\param[in] end An iterator pointing to the past-the-end location of the input.
|
||||||
\param[out] g The constructed graph object.
|
\param[out] g The constructed graph object.
|
||||||
|
|
@ -142,8 +147,9 @@ public:
|
||||||
return cone_number;
|
return cone_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief outputs the directions in the vector rays to the iterator `result`.
|
/*! \brief outputs the set of directions to the iterator `result`.
|
||||||
|
|
||||||
|
\tparam DirectionOutputIterator an `OutputIterator` with value type `Direction_2`.
|
||||||
\return `result`
|
\return `result`
|
||||||
*/
|
*/
|
||||||
template<class DirectionOutputIterator>
|
template<class DirectionOutputIterator>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue