Merge remote-tracking branch 'cgal/releases/CGAL-5.0-branch'

This commit is contained in:
Sébastien Loriot 2020-04-29 14:12:29 +02:00
commit 3b6c100ca6
18 changed files with 106 additions and 124 deletions

View File

@ -430,7 +430,11 @@ public:
Curve_analysis_2 operator() Curve_analysis_2 operator()
(const Polynomial_2& f) const { (const Polynomial_2& f) const {
return _m_kernel->curve_cache_2()(f); if (_m_kernel->is_square_free_2_object()(f)) {
return _m_kernel->curve_cache_2()(f);
} else {
return _m_kernel->curve_cache_2()(_m_kernel->make_square_free_2_object()(f));
}
} }
protected: protected:

View File

@ -125,9 +125,9 @@ extLong& extLong::operator*= (const extLong& y) {
if (std::fabs(d - p) <= std::fabs(d) * relEps) { if (std::fabs(d - p) <= std::fabs(d) * relEps) {
val = p; val = p;
flag = 0; flag = 0;
} else if (d > EXTLONG_MAX) { } else if (d > static_cast<double>(EXTLONG_MAX)) {
*this = CORE_posInfty; *this = CORE_posInfty;
} else if (d < EXTLONG_MIN) { } else if (d < static_cast<double>(EXTLONG_MIN)) {
*this = CORE_negInfty; *this = CORE_negInfty;
} else { } else {
#ifdef CORE_DEBUG #ifdef CORE_DEBUG

View File

@ -887,16 +887,6 @@ public:
base().clear_sources(); base().clear_sources();
} }
/**
* get estimated distance from the current source set to a vertex `vd`.
* \warning The return type is `double` even when used with an exact kernel.
*/
double
estimate_geodesic_distance(vertex_descriptor vd) const
{
return base().estimate_geodesic_distance(vd);
}
/** /**
* returns the source set. * returns the source set.
*/ */
@ -906,7 +896,6 @@ public:
return base().sources(); return base().sources();
} }
/** /**
* fills the distance property map with the estimated geodesic distance of each vertex to the closest source vertex. * fills the distance property map with the estimated geodesic distance of each vertex to the closest source vertex.
* \tparam VertexDistanceMap a property map model of `WritablePropertyMap` * \tparam VertexDistanceMap a property map model of `WritablePropertyMap`

View File

@ -335,7 +335,6 @@ private:
//then go back to top of the stack //then go back to top of the stack
} }
} }
std::cout<< a << " edges were flipped: " << std::endl;
} }

View File

@ -180,9 +180,9 @@ public:
int bit_offset = 3 * vhi; int bit_offset = 3 * vhi;
// first reset the bit to 0 (AND), then assign the value given in input (OR) // first reset the bit to 0 (AND), then assign the value given in input (OR)
off = off & ~(1 << bit_offset) | (offo[0] << bit_offset); off = (off & ~(1 << bit_offset)) | (offo[0] << bit_offset);
off = off & ~(1 << (bit_offset + 1)) | (offo[1] << (bit_offset + 1)); off = (off & ~(1 << (bit_offset + 1))) | (offo[1] << (bit_offset + 1));
off = off & ~(1 << (bit_offset + 2)) | (offo[2] << (bit_offset + 2)); off = (off & ~(1 << (bit_offset + 2))) | (offo[2] << (bit_offset + 2));
CGAL_postcondition(offset(vhi) == o); CGAL_postcondition(offset(vhi) == o);
} }

View File

@ -186,15 +186,19 @@ void Rich_grid<Kernel>::init(std::vector<Rich_point<Kernel> > &vert,
radius = _radius; radius = _radius;
x_side = (unsigned int)ceil((bbox.xmax() - bbox.xmin()) / radius); std::size_t x_size = (std::size_t)ceil((bbox.xmax() - bbox.xmin()) / radius);
y_side = (unsigned int)ceil((bbox.ymax() - bbox.ymin()) / radius); std::size_t y_size = (std::size_t)ceil((bbox.ymax() - bbox.ymin()) / radius);
z_side = (unsigned int)ceil((bbox.zmax() - bbox.zmin()) / radius); std::size_t z_size = (std::size_t)ceil((bbox.zmax() - bbox.zmin()) / radius);
x_side = (x_side > 0) ? x_side : 1; x_size = (x_size > 0) ? x_size : 1;
y_side = (y_side > 0) ? y_side : 1; y_size = (y_size > 0) ? y_size : 1;
z_side = (z_side > 0) ? z_side : 1; z_size = (z_size > 0) ? z_size : 1;
indices.resize(x_side * y_side * z_side + 1, -1); indices.resize(x_size * y_size * z_size + 1, -1);
x_side = int(x_size);
y_side = int(y_size);
z_side = int(z_size);
std::sort(rich_points.begin(), rich_points.end(), Z_Sort<Kernel>()); std::sort(rich_points.begin(), rich_points.end(), Z_Sort<Kernel>());

View File

@ -377,7 +377,7 @@ edge_aware_upsample_point_set(
// copy rich point set // copy rich point set
std::vector<Rich_point> rich_point_set(number_of_input); std::vector<Rich_point> rich_point_set(number_of_input);
CGAL::Bbox_3 bbox(0., 0., 0., 0., 0., 0.); CGAL::Bbox_3 bbox;
typename PointRange::const_iterator it = begin; // point iterator typename PointRange::const_iterator it = begin; // point iterator
for(unsigned int i = 0; it != end; ++it, ++i) for(unsigned int i = 0; it != end; ++it, ++i)

View File

@ -21,7 +21,6 @@ follows:
\cgalHasModel `CGAL::Eigen_diagonalize_traits` \cgalHasModel `CGAL::Eigen_diagonalize_traits`
*/ */
template <typename FT, unsigned int dim = 3> template <typename FT, unsigned int dim = 3>
class DiagonalizeTraits class DiagonalizeTraits
{ {

View File

@ -1,16 +1,13 @@
class MixedIntegerProgramTraits class MixedIntegerProgramTraits
/*! /*!
\ingroup PkgSolverInterfaceConcepts
\cgalConcept \cgalConcept
`MixedIntegerProgramVariable` is a concept of a variable in `MixedIntegerProgramVariable` is a concept of a variable in
a Mixed Integer Programming (MIP) problem. a Mixed Integer Programming (MIP) problem.
\cgalHasModel `CGAL::Variable<FT>` \cgalHasModel `CGAL::Variable<FT>`
*/ */
template <typename FT> template <typename FT>
class MixedIntegerProgramVariable class MixedIntegerProgramVariable
@ -25,7 +22,7 @@ public:
typedef unspecified_type FT; typedef unspecified_type FT;
/*! /*!
A variable can be continuous, integer, or binary A variable can be continuous, integer, or binary.
*/ */
enum Variable_type { CONTINUOUS, INTEGER, BINARY }; enum Variable_type { CONTINUOUS, INTEGER, BINARY };
@ -43,10 +40,10 @@ public:
/// \name Operations /// \name Operations
/// @{ /// @{
/// Returns the variable type /// Returns the variable type.
Variable_type variable_type() const; Variable_type variable_type() const;
/// Sets/Changes the variable type /// Sets/Changes the variable type.
void set_variable_type(Variable_type t); void set_variable_type(Variable_type t);
/*! /*!
@ -69,26 +66,26 @@ public:
*/ */
void set_index(int idx); void set_index(int idx);
/// Returns the solver that owns this variable /// Returns the solver that owns this variable.
const MixedIntegerProgramTraits* solver() const; const MixedIntegerProgramTraits* solver() const;
MixedIntegerProgramTraits* solver(); MixedIntegerProgramTraits* solver();
/// Sets the lower bound /// Sets the lower bound.
void set_lower_bound(FT lb); void set_lower_bound(FT lb);
/// Sets the upper bound /// Sets the upper bound.
void set_upper_bound(FT ub); void set_upper_bound(FT ub);
/// Sets both lower and upper bounds /// Sets both lower and upper bounds.
void set_bounds(FT lb, FT ub); void set_bounds(FT lb, FT ub);
/// Gets the lower bound /// Gets the lower bound.
FT lower_bound() const; FT lower_bound() const;
/// Gets the upper bound /// Gets the upper bound.
FT upper_bound() const; FT upper_bound() const;
/// Gets both lower and upper bounds /// Gets both lower and upper bounds.
void get_bounds(FT& lb, FT& ub) const; void get_bounds(FT& lb, FT& ub) const;
/// Gets the infinity threshold (e.g., 1e20). /// Gets the infinity threshold (e.g., 1e20).
@ -108,17 +105,15 @@ public:
}; /* end MixedIntegerProgramVariable */ }; /* end MixedIntegerProgramVariable */
/*!
\ingroup PkgSolverInterfaceConcepts
\cgalConcept
`MixedIntegerProgramLinearConstraint` is a concept of a linear
constraint in a Mixed Integer Programming (MIP) problem.
/*! \cgalHasModel `CGAL::Linear_constraint<FT>`
*/
\cgalConcept
`MixedIntegerProgramLinearConstraint` is a concept of a linear
constraint in a Mixed Integer Programming (MIP) problem.
\cgalHasModel `CGAL::Linear_constraint<FT>`
*/
template <typename FT> template <typename FT>
class MixedIntegerProgramLinearConstraint class MixedIntegerProgramLinearConstraint
{ {
@ -155,26 +150,26 @@ public:
*/ */
void set_index(int idx); void set_index(int idx);
/// Returns the solver that owns this constraint /// Returns the solver that owns this constraint.
const MixedIntegerProgramTraits* solver() const; const MixedIntegerProgramTraits* solver() const;
MixedIntegerProgramTraits* solver(); MixedIntegerProgramTraits* solver();
/// Sets the lower bound /// Sets the lower bound.
void set_lower_bound(FT lb); void set_lower_bound(FT lb);
/// Sets the upper bound /// Sets the upper bound.
void set_upper_bound(FT ub); void set_upper_bound(FT ub);
/// Sets both lower and upper bounds /// Sets both lower and upper bounds.
void set_bounds(FT lb, FT ub); void set_bounds(FT lb, FT ub);
/// Gets the lower bound /// Gets the lower bound.
FT lower_bound() const; FT lower_bound() const;
/// Gets the upper bound /// Gets the upper bound.
FT upper_bound() const; FT upper_bound() const;
/// Gets both lower and upper bounds /// Gets both lower and upper bounds.
void get_bounds(FT& lb, FT& ub) const; void get_bounds(FT& lb, FT& ub) const;
/// Gets the infinity threshold (e.g., 1e20). /// Gets the infinity threshold (e.g., 1e20).
@ -207,17 +202,15 @@ public:
}; /* end MixedIntegerProgramLinearConstraint */ }; /* end MixedIntegerProgramLinearConstraint */
/*!
\ingroup PkgSolverInterfaceConcepts
\cgalConcept
`MixedIntegerProgramLinearObjective` is a concept of the linear
objective function in a Mixed Integer Programming (MIP) problem.
/*! \cgalHasModel `CGAL::Linear_objective<FT>`
*/
\cgalConcept
`MixedIntegerProgramLinearObjective` is a concept of the linear
objective function in a Mixed Integer Programming (MIP) problem.
\cgalHasModel `CGAL::Linear_objective<FT>`
*/
template <typename FT> template <typename FT>
class MixedIntegerProgramLinearObjective class MixedIntegerProgramLinearObjective
{ {
@ -225,7 +218,7 @@ public:
/// \name Types /// \name Types
/// @{ /// @{
/// The objective sense (i.e., optimization direction) /// The objective sense (i.e., optimization direction).
enum Sense { MINIMIZE, MAXIMIZE, UNDEFINED }; enum Sense { MINIMIZE, MAXIMIZE, UNDEFINED };
/// @} /// @}
@ -275,10 +268,8 @@ public:
}; /* end MixedIntegerProgramLinearObjective */ }; /* end MixedIntegerProgramLinearObjective */
/*! /*!
\ingroup PkgSolverConcepts \ingroup PkgSolverInterfaceConcepts
\cgalConcept \cgalConcept
@brief Concept describing the set of requirements for (constrained or unconstrained) @brief Concept describing the set of requirements for (constrained or unconstrained)
@ -290,12 +281,10 @@ to solve the problem.
\cgalHasModel `CGAL::GLPK_mixed_integer_program_traits<T>` \cgalHasModel `CGAL::GLPK_mixed_integer_program_traits<T>`
\cgalHasModel `CGAL::SCIP_mixed_integer_program_traits<T>` \cgalHasModel `CGAL::SCIP_mixed_integer_program_traits<T>`
*/ */
template <typename FT> template <typename FT>
class MixedIntegerProgramTraits class MixedIntegerProgramTraits
{ {
public: public:
/// \name Creation /// \name Creation
/// @{ /// @{
@ -335,42 +324,42 @@ public:
/// solver is destroyed. /// solver is destroyed.
MixedIntegerProgramLinearObjective* create_objective(Sense sense); MixedIntegerProgramLinearObjective* create_objective(Sense sense);
/// Returns the number of variables /// Returns the number of variables.
std::size_t number_of_variables() const; std::size_t number_of_variables() const;
/// Returns the variables /// Returns the variables.
const std::vector<MixedIntegerProgramVariable*>& variables() const; const std::vector<MixedIntegerProgramVariable*>& variables() const;
std::vector<MixedIntegerProgramVariable*>& variables(); std::vector<MixedIntegerProgramVariable*>& variables();
/// Returns the number of constraints /// Returns the number of constraints.
std::size_t number_of_constraints() const; std::size_t number_of_constraints() const;
/// Returns the constraints /// Returns the constraints.
const std::vector<MixedIntegerProgramLinearConstraint*>& constraints() const; const std::vector<MixedIntegerProgramLinearConstraint*>& constraints() const;
std::vector<MixedIntegerProgramLinearConstraint*>& constraints(); std::vector<MixedIntegerProgramLinearConstraint*>& constraints();
/// Returns the number of continuous variables /// Returns the number of continuous variables.
std::size_t number_of_continuous_variables() const; std::size_t number_of_continuous_variables() const;
/// Returns the number of integer variables /// Returns the number of integer variables.
std::size_t number_of_integer_variables() const; std::size_t number_of_integer_variables() const;
/// Returns the number of binary variables /// Returns the number of binary variables.
std::size_t number_of_binary_variables() const; std::size_t number_of_binary_variables() const;
/// Returns true if all variables are continuous /// Returns true if all variables are continuous.
bool is_continuous() const; bool is_continuous() const;
/// Returns true if this is a mixed integer program /// Returns true if this is a mixed integer program.
bool is_mixed_integer_program() const; bool is_mixed_integer_program() const;
/// Returns true if this is an integer program /// Returns true if this is an integer program.
bool is_integer_program() const; bool is_integer_program() const;
/// Returns true if binary program /// Returns true if binary program.
bool is_binary_program() const; bool is_binary_program() const;
/// Returns the objective /// Returns the objective.
const MixedIntegerProgramLinearObjective * objective() const; const MixedIntegerProgramLinearObjective * objective() const;
MixedIntegerProgramLinearObjective * objective(); MixedIntegerProgramLinearObjective * objective();
@ -391,4 +380,5 @@ public:
void clear(); void clear();
/// @} /// @}
}; /* end MixedIntegerProgramTraits */ }; /* end MixedIntegerProgramTraits */

View File

@ -1,6 +1,5 @@
/*! /*!
\ingroup PkgSolverInterfaceConcepts \ingroup PkgSolverInterfaceConcepts
\cgalConcept \cgalConcept
Concept describing the set of requirements for solving the normal equation \f$ A^t A X = A^t B \f$, Concept describing the set of requirements for solving the normal equation \f$ A^t A X = A^t B \f$,
@ -10,7 +9,6 @@ Concept describing the set of requirements for solving the normal equation \f$ A
\cgalHasModel `CGAL::Eigen_solver_traits<T>` \cgalHasModel `CGAL::Eigen_solver_traits<T>`
*/ */
class NormalEquationSparseLinearAlgebraTraits_d class NormalEquationSparseLinearAlgebraTraits_d
{ {
public: public:
@ -70,4 +68,3 @@ bool normal_equation_solver(const Matrix& A, const Vector& B, Vector& X);
/// @} /// @}
}; /* end NormalEquationSparseLinearAlgebraTraits_d */ }; /* end NormalEquationSparseLinearAlgebraTraits_d */

View File

@ -1,13 +1,11 @@
/*! /*!
\ingroup PkgSolverInterfaceConcepts \ingroup PkgSolverInterfaceConcepts
\cgalConcept \cgalConcept
The concept `SparseLinearAlgebraTraits_d` is used to solve sparse linear systems <I>A\f$ \times \f$ X = B</I>. The concept `SparseLinearAlgebraTraits_d` is used to solve sparse linear systems <I>A\f$ \times \f$ X = B</I>.
\cgalHasModel `CGAL::Eigen_solver_traits<T>` \cgalHasModel `CGAL::Eigen_solver_traits<T>`
*/ */
class SparseLinearAlgebraTraits_d class SparseLinearAlgebraTraits_d
{ {
public: public:
@ -68,7 +66,6 @@ by a sparse matrix.
\sa `SparseLinearAlgebraTraits_d` \sa `SparseLinearAlgebraTraits_d`
\sa `SparseLinearAlgebraTraits_d::Matrix` \sa `SparseLinearAlgebraTraits_d::Matrix`
*/ */
class SparseLinearAlgebraTraits_d::Vector class SparseLinearAlgebraTraits_d::Vector
{ {
@ -126,7 +123,6 @@ NT& operator[](Index row);
}; /* end Vector */ }; /* end Vector */
/*! /*!
\cgalConcept \cgalConcept
`SparseLinearAlgebraTraits_d::Matrix` is a concept of a sparse matrix class. `SparseLinearAlgebraTraits_d::Matrix` is a concept of a sparse matrix class.
@ -150,7 +146,6 @@ Index type
*/ */
typedef unspecified_type Index; typedef unspecified_type Index;
/*! /*!
*/ */
@ -214,8 +209,8 @@ in the matrix by setting `new_coef` to `true`.
void set_coef(Index row, Index column, NT value, bool new_coef = false); void set_coef(Index row, Index column, NT value, bool new_coef = false);
/*! /*!
swaps the content of `*this` and `m` Swaps the content of `*this` and `m`.
*/ */
void swap(Matrix& m); void swap(Matrix& m);
/// Multiplication with a scalar. /// Multiplication with a scalar.

View File

@ -1,4 +1,3 @@
/*! /*!
\ingroup PkgSolverInterfaceConcepts \ingroup PkgSolverInterfaceConcepts
\cgalConcept \cgalConcept
@ -11,7 +10,6 @@ method to solve the system for different right-hand vectors.
\cgalHasModel `CGAL::Eigen_solver_traits<T>` \cgalHasModel `CGAL::Eigen_solver_traits<T>`
*/ */
class SparseLinearAlgebraWithFactorTraits_d { class SparseLinearAlgebraWithFactorTraits_d {
public: public:
@ -48,4 +46,3 @@ bool linear_solver(const Matrix& B, Vector& X);
/// @} /// @}
}; /* end SparseLinearAlgebraWithFactorTraits_d */ }; /* end SparseLinearAlgebraWithFactorTraits_d */

View File

@ -101,12 +101,12 @@ public:
/*! /*!
Return the number of rows of the matrix. Return the number of rows of the matrix.
*/ */
size_t number_of_rows(); size_t number_of_rows();
/*! /*!
Return the number of columns of the matrix. Return the number of columns of the matrix.
*/ */
size_t number_of_columns(); size_t number_of_columns();
/*! /*!
@ -120,4 +120,3 @@ public:
*/ */
void set(size_t i, size_t j, const FT value); void set(size_t i, size_t j, const FT value);
}; };

View File

@ -27,6 +27,7 @@ high performance libraries, e.g.,
<a href = "http://www.gurobi.com/"> Gurobi </a>. <a href = "http://www.gurobi.com/"> Gurobi </a>.
\section SectionSolverDiagonalize Matrix Diagonalization \section SectionSolverDiagonalize Matrix Diagonalization
The concept `DiagonalizeTraits<T,dim>` defines an interface for the The concept `DiagonalizeTraits<T,dim>` defines an interface for the
@ -41,6 +42,7 @@ class:
\cgalExample{Solver_interface/diagonalize_matrix.cpp} \cgalExample{Solver_interface/diagonalize_matrix.cpp}
\section SectionSolverSVD Singular Value Decomposition \section SectionSolverSVD Singular Value Decomposition
The concept `SvdTraits` defines an interface for solving in the least The concept `SvdTraits` defines an interface for solving in the least
@ -55,7 +57,6 @@ and this solver:
\section SectionSolverSparse Sparse Solvers \section SectionSolverSparse Sparse Solvers
We define 3 concepts for sparse linear algebra: We define 3 concepts for sparse linear algebra:
@ -102,17 +103,16 @@ formulating and solving (constrained or unconstrained) mixed integer
programs. It can also be used for general linear programs. programs. It can also be used for general linear programs.
The field type is `double`. We provide two models of this concept: The field type is `double`. We provide two models of this concept:
`GLPK_mixed_integer_program_traits` using \ref thirdpartyGLPK and `CGAL::GLPK_mixed_integer_program_traits` using \ref thirdpartyGLPK and
`SCIP_mixed_integer_program_traits` using \ref thirdpartySCIP. `CGAL::SCIP_mixed_integer_program_traits` using \ref thirdpartySCIP.
Here is an example that shows how to formulate and solve a simple Here is an example that shows how to formulate and solve a simple
mixed integer programs using this solver. mixed integer program using this solver.
\cgalExample{Solver_interface/mixed_integer_program.cpp} \cgalExample{Solver_interface/mixed_integer_program.cpp}
\section SolversHistory Implementation History \section SolversHistory Implementation History
This package is the result of the increasing needs for linear solvers This package is the result of the increasing needs for linear solvers
in \cgal. The first packages that introduced the solver concepts were in \cgal. The first packages that introduced the solver concepts were
@ -132,4 +132,3 @@ with the help of Andreas Fabri.
*/ */
} /* namespace CGAL */ } /* namespace CGAL */

View File

@ -46,15 +46,15 @@ int bound_type(FT lb, FT ub)
} // namespace internal } // namespace internal
/// \ingroup PkgSolver /// \ingroup PkgSolverInterfaceRef
/// ///
/// This class provides an interface for formulating and solving /// This class provides an interface for formulating and solving
/// constrained or unconstrained mixed integer programs using /// constrained or unconstrained mixed integer programs using
/// \ref thirdpartyGLPK, which must be available on the system. /// \ref thirdpartyGLPK, which must be available on the system.
/// ///
/// \note For better performance, please consider using /// \note For better performance, please consider using
/// `SCIP_mixed_integer_program_traits`, or derive a new /// `CGAL::SCIP_mixed_integer_program_traits`, or derive a new
/// model from `Mixed_integer_program_traits`. /// model from `CGAL::Mixed_integer_program_traits`.
/// ///
/// \cgalModels `MixedIntegerProgramTraits` /// \cgalModels `MixedIntegerProgramTraits`
/// ///

View File

@ -96,7 +96,9 @@ namespace CGAL {
}; };
/// \endcond /// \endcond
/// The variables of mixed integer programs. /// \ingroup PkgSolverInterfaceRef
///
/// The variable of a mixed integer program.
/// ///
/// \cgalModels `MixedIntegerProgramVariable` /// \cgalModels `MixedIntegerProgramVariable`
template <typename FT> template <typename FT>
@ -193,7 +195,10 @@ namespace CGAL {
}; };
/// \endcond /// \endcond
/// The linear constraint. /// \ingroup PkgSolverInterfaceRef
///
/// The linear constraint of a mixed integer program.
///
/// \cgalModels `MixedIntegerProgramLinearConstraint` /// \cgalModels `MixedIntegerProgramLinearConstraint`
template <typename FT> template <typename FT>
class Linear_constraint : public Linear_expression<FT>, public Bound<FT> class Linear_constraint : public Linear_expression<FT>, public Bound<FT>
@ -222,7 +227,9 @@ namespace CGAL {
}; };
/// The linear objective. /// \ingroup PkgSolverInterfaceRef
///
/// The linear objective of a mixed integer program.
/// ///
/// \cgalModels `MixedIntegerProgramLinearObjective` /// \cgalModels `MixedIntegerProgramLinearObjective`
/// ///
@ -256,16 +263,16 @@ namespace CGAL {
/// \endcond /// \endcond
}; };
/// \ingroup PkgSolver /// \ingroup PkgSolverInterfaceRef
/// ///
/// The class `Mixed_integer_program_traits` provides an interface for /// The class `CGAL::Mixed_integer_program_traits` provides an interface for
/// formulating and solving (constrained or unconstrained) mixed integer /// formulating and solving (constrained or unconstrained) mixed integer
/// programs. It can also be used for general linear programs. /// programs. It can also be used for general linear programs.
/// \note The solve() function is virtual and thus this class cannot be /// \note The solve() function is virtual and thus this class cannot be
/// instantiated directly. Client code should use the inherited /// instantiated directly. Client code should use the inherited
/// classes, i.e., `GLPK_mixed_integer_program_traits` or /// classes, i.e., `CGAL::GLPK_mixed_integer_program_traits` or
/// `SCIP_mixed_integer_program_traits`. Alternatively, use /// `CGAL::SCIP_mixed_integer_program_traits`. Alternatively, use
/// `Mixed_integer_program_traits` as a base to derive a new model /// `CGAL::Mixed_integer_program_traits` as a base to derive a new model
/// (using e.g., <a href = "https://projects.coin-or.org/Cbc"> CBC </a>, /// (using e.g., <a href = "https://projects.coin-or.org/Cbc"> CBC </a>,
/// <a href = "http://www.gurobi.com/"> Gurobi </a> for better /// <a href = "http://www.gurobi.com/"> Gurobi </a> for better
/// performance). /// performance).
@ -275,7 +282,6 @@ namespace CGAL {
/// \endcond /// \endcond
/// ///
/// \cgalModels `MixedIntegerProgramTraits` /// \cgalModels `MixedIntegerProgramTraits`
template <typename FT> template <typename FT>
class Mixed_integer_program_traits class Mixed_integer_program_traits
{ {

View File

@ -25,7 +25,7 @@
namespace CGAL { namespace CGAL {
/// \ingroup PkgSolver /// \ingroup PkgSolverInterfaceRef
/// ///
/// This class provides an interface for formulating and solving /// This class provides an interface for formulating and solving
/// constrained or unconstrained mixed integer programs using /// constrained or unconstrained mixed integer programs using

View File

@ -479,11 +479,15 @@ namespace CGAL {
// On enleve la facette de la liste des mauvaises facettes // On enleve la facette de la liste des mauvaises facettes
#ifdef CGAL_SURFACE_MESHER_TAG_BAD #ifdef CGAL_SURFACE_MESHER_TAG_BAD
if(f.first->is_bad(f.second)) if(f.first->is_bad(f.second))
{
#endif // CGAL_SURFACE_MESHER_TAG_BAD
if(f.first < other_side.first)
facets_to_refine.erase(f);
else
facets_to_refine.erase(other_side);
#ifdef CGAL_SURFACE_MESHER_TAG_BAD
}
#endif // CGAL_SURFACE_MESHER_TAG_BAD #endif // CGAL_SURFACE_MESHER_TAG_BAD
if(f.first < other_side.first)
facets_to_refine.erase(f);
else
facets_to_refine.erase(other_side);
// Le compteur des visites est remis a zero // Le compteur des visites est remis a zero
reset_visited(f); reset_visited(f);
reset_visited(other_side); reset_visited(other_side);