mirror of https://github.com/CGAL/cgal
Merge remote-tracking branch 'cgal/master' into Mesh-3-rework-make-mesh-point-initialization-2-aclement
# Conflicts: # Installation/CHANGES.md
This commit is contained in:
commit
f77f9c6847
|
|
@ -58,7 +58,6 @@ Scripts/developer_scripts/check_svn_keywords text eol=lf
|
|||
Scripts/developer_scripts/create_cgal_test text eol=lf
|
||||
Scripts/developer_scripts/create_cgal_test_with_cmake text eol=lf
|
||||
Scripts/developer_scripts/create_internal_release text eol=lf
|
||||
Scripts/developer_scripts/create_macosx_installer text eol=lf
|
||||
Scripts/developer_scripts/create_new_release text eol=lf
|
||||
Scripts/developer_scripts/detect_files_with_mixed_eol_styles text eol=lf
|
||||
Scripts/developer_scripts/detect_packages_licenses text eol=lf
|
||||
|
|
|
|||
|
|
@ -1058,7 +1058,7 @@ cmake_install.cmake
|
|||
*~
|
||||
.#*
|
||||
|
||||
# MacOS file https://en.wikipedia.org/wiki/.DS_Store
|
||||
# macOS file https://en.wikipedia.org/wiki/.DS_Store
|
||||
.DS_Store
|
||||
|
||||
# Binaries:
|
||||
|
|
|
|||
|
|
@ -551,7 +551,7 @@ public:
|
|||
traits.intersection(query, singleton_data());
|
||||
break;
|
||||
default: // if(size() >= 2)
|
||||
root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
|
||||
root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ public:
|
|||
/**
|
||||
* @brief General traversal query
|
||||
* @param query the query
|
||||
* @param traits the traversal traits that define the traversal behaviour
|
||||
* @param traits the traversal traits that define the traversal behavior
|
||||
* @param nb_primitives the number of primitive
|
||||
*
|
||||
* General traversal query. The traits class allows using it for the various
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ class Bitstream_descartes;
|
|||
|
||||
|
||||
/*
|
||||
* \brief Thrown whenever a non-specialised virtual member function is called
|
||||
* \brief Thrown whenever a non-specialized virtual member function is called
|
||||
*/
|
||||
class Virtual_method_exception {};
|
||||
|
||||
|
|
@ -128,7 +128,7 @@ public:
|
|||
|
||||
/*!
|
||||
* Constructor computing an interval containing all real roots of \c f,
|
||||
* and initialising the Bitstream Descartes tree
|
||||
* and initializing the Bitstream Descartes tree
|
||||
*/
|
||||
Generic_descartes_rep(Bitstream_descartes_type type,
|
||||
Polynomial f,
|
||||
|
|
@ -170,7 +170,7 @@ public:
|
|||
|
||||
/*!
|
||||
* Constructor that copies the Bitstream tree given from outside
|
||||
* and initialising the Bitstream Descartes tree
|
||||
* and initializing the Bitstream Descartes tree
|
||||
* The tree must "fit" to the polynomial
|
||||
*/
|
||||
Generic_descartes_rep(Bitstream_descartes_type type,
|
||||
|
|
@ -367,7 +367,7 @@ public:
|
|||
/*!
|
||||
* \brief When does the isolation algorithm terminate?
|
||||
*
|
||||
* This method must be specialised by derived classes
|
||||
* This method must be specialized by derived classes
|
||||
*/
|
||||
virtual bool termination_condition() {
|
||||
throw Virtual_method_exception();
|
||||
|
|
@ -378,7 +378,7 @@ public:
|
|||
* \brief gives an opportunity to process the nodes after
|
||||
* the subdivision steps are finished
|
||||
*
|
||||
* This method must be specialised by derived classes, but can
|
||||
* This method must be specialized by derived classes, but can
|
||||
* remain empty in many cases.
|
||||
*/
|
||||
virtual void process_nodes() {
|
||||
|
|
@ -389,7 +389,7 @@ public:
|
|||
/*! \brief returns whether the \c i th root is definitely a simple root
|
||||
* of the isolated polynomial
|
||||
*
|
||||
* Must be specialised by derived class
|
||||
* Must be specialized by derived class
|
||||
*/
|
||||
virtual bool is_certainly_simple_root(int) const {
|
||||
throw Virtual_method_exception();
|
||||
|
|
@ -399,7 +399,7 @@ public:
|
|||
/*! \brief returns whether the \c i th root is definitely a multiple root
|
||||
* of the isolated polynomial
|
||||
*
|
||||
* Must be specialised by derived class
|
||||
* Must be specialized by derived class
|
||||
*/
|
||||
virtual bool is_certainly_multiple_root(int) const {
|
||||
throw Virtual_method_exception();
|
||||
|
|
@ -1082,7 +1082,7 @@ protected:
|
|||
* variant of the Bitstream Descartes method: The Square_free_descartes_tag
|
||||
* starts the usual Bitstream method for square free integer polynomials.
|
||||
* With the M_k_descartes tag, it is able to handle one multiple root in
|
||||
* favourable situations, the Backshear_descartes_tag allows to isolate
|
||||
* favorable situations, the Backshear_descartes_tag allows to isolate
|
||||
* even more complicated polynomials, if the multiple roots with even
|
||||
* multiplicity can be refined from outside. See the corresponding
|
||||
* constructors for more information.
|
||||
|
|
|
|||
|
|
@ -865,7 +865,7 @@ public:
|
|||
by trying randomly and checking. This randomization means
|
||||
the same polynomial and same initial interval may give rise
|
||||
to different intervals each time this class is used.
|
||||
As indicated in the paper, we favour subdivision ratios
|
||||
As indicated in the paper, we favor subdivision ratios
|
||||
with a small denominator. Hence we first try denominator
|
||||
2 (subdivision at midpoint), then denominator 16, and
|
||||
only then the "proper" denominator prescribed by theory.
|
||||
|
|
|
|||
|
|
@ -469,7 +469,7 @@ public:
|
|||
* (\c SHEAR_ONLY_AT_IRRATIONAL_STRATEGY)
|
||||
* is to \c shear the curve
|
||||
* if a degenerate situation is detected during the analysis,
|
||||
* except at rational x-coordinates where the curve can be analysed
|
||||
* except at rational x-coordinates where the curve can be analyzed
|
||||
* more directly. The analysis
|
||||
* is then performed in the sheared system, and finally translated back
|
||||
* into the original system.
|
||||
|
|
@ -520,7 +520,7 @@ private:
|
|||
void set_event_lines(InputIterator1 event_begin,
|
||||
InputIterator1 event_end,
|
||||
InputIterator2 intermediate_begin,
|
||||
InputIterator2 CGAL_precondition_code(intermediate_end)) const {
|
||||
InputIterator2 CGAL_assertion_code(intermediate_end)) const {
|
||||
|
||||
if(! this->ptr()->event_coordinates) {
|
||||
|
||||
|
|
|
|||
|
|
@ -875,7 +875,7 @@ private:
|
|||
* Checks intersection with symbolic methods
|
||||
*/
|
||||
bool check_candidate_symbolically(Status_line_CA_1& e1,size_type ,
|
||||
Status_line_CA_1& CGAL_precondition_code(e2),size_type ,
|
||||
Status_line_CA_1& CGAL_assertion_code(e2),size_type ,
|
||||
size_type k) const {
|
||||
Polynomial_1 p = -coprincipal_subresultants(k-1);
|
||||
Polynomial_1 q = principal_subresultants(k)*Coefficient(k);
|
||||
|
|
@ -1173,7 +1173,7 @@ private:
|
|||
/*
|
||||
* \brief reduces the number of possible intersections
|
||||
*
|
||||
* At the position given by the event lins \c e1 and \c e2 and the slice
|
||||
* At the position given by the event lines \c e1 and \c e2 and the slice
|
||||
* info object \c slice, the points on the event lines are further refined
|
||||
* until there are only \c n possible intersection points. The method can
|
||||
* be interrupted if all possible intersection points are known to have
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ public:
|
|||
virtual ~LRU_hashed_map()
|
||||
{ }
|
||||
|
||||
/*! \brief implements cache-like behaviour of the map
|
||||
/*! \brief implements cache-like behavior of the map
|
||||
*
|
||||
* If the object is not in the map, it is constructed using \c Creator
|
||||
* and added to the map
|
||||
|
|
@ -312,7 +312,7 @@ public:
|
|||
~LRU_hashed_map_with_kernel()
|
||||
{ }
|
||||
|
||||
/*! \brief implements cache-like behaviour of the map
|
||||
/*! \brief implements cache-like behavior of the map
|
||||
*
|
||||
* If the object is not in the map, it is constructed using \c Creator
|
||||
* and added to the map
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ template < class PolynomialIterator,
|
|||
int gen_agebraic_reals_with_mults( PolynomialIterator fac,
|
||||
PolynomialIterator fac_end,
|
||||
IntIterator mul,
|
||||
IntIterator CGAL_precondition_code(mul_end),
|
||||
IntIterator CGAL_assertion_code(mul_end),
|
||||
AlgebraicRealOutputIterator oi_root,
|
||||
IntOutputIterator oi_mult){
|
||||
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ public:
|
|||
const typename Curve_pair_analysis_2
|
||||
::Curve_analysis_2& c1,
|
||||
const typename Curve_pair_analysis_2
|
||||
::Curve_analysis_2& CGAL_precondition_code(c2)) const
|
||||
::Curve_analysis_2& CGAL_assertion_code(c2)) const
|
||||
{
|
||||
|
||||
CGAL_precondition(0 <= j && j < number_of_events());
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace CGAL {
|
|||
/*!
|
||||
* \brief Exception class for not sufficiently generic positions.
|
||||
*
|
||||
* Must be thrown whenever a curve cannot be analysed because its position
|
||||
* Must be thrown whenever a curve cannot be analyzed because its position
|
||||
* is not "good enough".
|
||||
*/
|
||||
class Non_generic_position_exception {
|
||||
|
|
@ -40,7 +40,7 @@ namespace CGAL {
|
|||
/*!
|
||||
* \brief Exception class for not sufficiently generic positions.
|
||||
*
|
||||
* Must be thrown whenever a curve cannot be analysed because its position
|
||||
* Must be thrown whenever a curve cannot be analyzed because its position
|
||||
* is not "good enough".
|
||||
*/
|
||||
template<typename Polynomial>
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@
|
|||
|
||||
/**
|
||||
* If set, the curve and curve pair analysis are using specialized code
|
||||
* to analyse conic curves, i.e. curves of degree 2
|
||||
* to analyze conic curves, i.e. curves of degree 2
|
||||
*/
|
||||
#ifndef CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX
|
||||
#define CGAL_ACK_USE_SPECIAL_TREATMENT_FOR_CONIX 0
|
||||
|
|
|
|||
|
|
@ -330,7 +330,7 @@ template<typename Arithmetic_kernel> void test_routine() {
|
|||
#endif
|
||||
}
|
||||
|
||||
{ // More tests...just analyse some curves and compute their segments
|
||||
{ // More tests...just analyze some curves and compute their segments
|
||||
Poly_int2 f = from_string<Poly_int2>("P[8(0,P[8(0,24)(1,-8)(2,-162)(3,204)(4,106)(5,-340)(6,240)(7,-72)(8,8)])(1,P[6(0,-60)(1,8)(2,304)(3,-400)(4,148)(5,8)(6,-8)])(2,P[6(0,18)(1,80)(2,-165)(3,-132)(4,367)(5,-212)(6,38)])(3,P[4(0,-30)(1,-136)(2,264)(3,-72)(4,-26)])(4,P[4(0,-15)(1,36)(2,89)(3,-144)(4,49)])(5,P[2(0,30)(1,-24)(2,-6)])(6,P[2(0,-6)(1,-28)(2,22)])(8,P[0(0,3)])]");
|
||||
Curve_analysis_2 curve= construct_curve_2(f);
|
||||
#if CGAL_ACK_DEBUG_FLAG
|
||||
|
|
|
|||
|
|
@ -1638,7 +1638,7 @@ compute_edge_status( const Cell_handle& c,
|
|||
last=ccirc;
|
||||
while (is_infinite(ccirc) ) ++ccirc; //skip infinite incident cells
|
||||
alpha = (*ccirc).get_alpha();
|
||||
as.set_alpha_mid(alpha); // initialise as.alpha_mid to alpha value of an incident cell
|
||||
as.set_alpha_mid(alpha); // initialize as.alpha_mid to alpha value of an incident cell
|
||||
as.set_alpha_max(alpha); // same for as.alpha_max
|
||||
while (++ccirc != last)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ test_filtration(AS &A, bool verbose)
|
|||
typename AS::NT alpha;
|
||||
if(verbose) {
|
||||
std::cerr << std::endl;
|
||||
std::cerr << "Analyse filtration " << std::endl;
|
||||
std::cerr << "Analyze filtration " << std::endl;
|
||||
}
|
||||
for (; filtre_it != filtration.end(); filtre_it++) {
|
||||
if(assign(vertex, *filtre_it)) {
|
||||
|
|
|
|||
|
|
@ -24,18 +24,18 @@
|
|||
<class name="cls241" key="increment walk Segments Lazy Simple Cartesian Cgal Gmpq"/>
|
||||
<class name="cls242" key="aggregate Segments Lazy Simple Cartesian Cgal Gmpq"/>
|
||||
<class name="cls251" key="increment walk Segments Exact Cgal Gmpq"/>
|
||||
<class name="cls252" key="aggregate Segments Exact Cgal Gmpq"/>
|
||||
<class name="cls252" key="aggregate Segments Exact Cgal Gmpq"/>
|
||||
<class name="cls261" key=""/>
|
||||
<class name="cls262" key=""/>
|
||||
<class name="cls271" key=""/>
|
||||
<class name="cls272" key=""/>
|
||||
<class name="cls272" key=""/>
|
||||
|
||||
<clo name="verbose" string="--verbose"/>
|
||||
<clo name="samples" string="--samples"/>
|
||||
<clo name="print_header" string="--print-header"/>
|
||||
<clo name="name_length" string="--name-length"/>
|
||||
<clo name="type_mask" string="--type-mask"/>
|
||||
<clo name="strategy_mask" string="--strategy-mask"/>
|
||||
<clo name="verbose" string="--verbose"/>
|
||||
<clo name="samples" string="--samples"/>
|
||||
<clo name="print_header" string="--print-header"/>
|
||||
<clo name="name_length" string="--name-length"/>
|
||||
<clo name="type_mask" string="--type-mask"/>
|
||||
<clo name="strategy_mask" string="--strategy-mask"/>
|
||||
|
||||
<file name="eurcut.bff" format="rat" curves="3099"
|
||||
vertices="3078" halfedges="6198" faces="39"></file>
|
||||
|
|
@ -150,7 +150,7 @@
|
|||
<benchArrCgalGmpqCartesianSegment print_header="1"/>
|
||||
<benchArrCgalGmpqCartesianSegment/>
|
||||
<benchArrCgalGmpqLazyCartesianSegment/>
|
||||
<benchArrCgalGmpqLazyCartesianSegment/>
|
||||
<benchArrCgalGmpqLazySimpleCartesianSegment/>
|
||||
<benchArrCgalGmpqExactSegment/>
|
||||
<benchArrDoubleCartesianSegment enable="false"/>
|
||||
<benchArrLazyCgalGmpqCartesianSegment/>
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ namespace {
|
|||
Flag(bool init) : v{ init } {}
|
||||
};
|
||||
|
||||
// EXTENDED AOS for analysing the arrangement
|
||||
// EXTENDED AOS for analyzing the arrangement
|
||||
using Ext_dcel = CGAL::Arr_extended_dcel<Geom_traits, Flag, Flag, Flag>;
|
||||
using Ext_topol_traits =
|
||||
CGAL::Arr_spherical_topology_traits_2<Geom_traits, Ext_dcel>;
|
||||
|
|
|
|||
|
|
@ -4260,7 +4260,7 @@ public:
|
|||
// Compute the radi of the hyperbola:
|
||||
ts = std::asinh(ys_t/b);
|
||||
tt = std::asinh(yt_t/b);
|
||||
assert(std::signbit(xs_t) == std::signbit(xt_t));
|
||||
CGAL_assertion(std::signbit(xs_t) == std::signbit(xt_t));
|
||||
|
||||
if (std::signbit(xs_t)) a = -a;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -342,13 +342,13 @@ public:
|
|||
{}
|
||||
|
||||
/*! Operate */
|
||||
bool operator()(const X_monotone_curve_2& xc1,
|
||||
const X_monotone_curve_2& xc2) const
|
||||
{ ++m_counter1; return m_object(xc1, xc2); }
|
||||
bool operator()(const Point_2& p1, const Point_2& p2) const
|
||||
{ ++m_counter1; return m_object(p1, p2); }
|
||||
|
||||
/*! Operate */
|
||||
bool operator()(const Point_2& p1, const Point_2& p2) const
|
||||
{ ++m_counter2; return m_object(p1, p2); }
|
||||
bool operator()(const X_monotone_curve_2& xc1,
|
||||
const X_monotone_curve_2& xc2) const
|
||||
{ ++m_counter2; return m_object(xc1, xc2); }
|
||||
};
|
||||
|
||||
/*! A functor that compares compares the y-coordinates of two x-monotone
|
||||
|
|
@ -563,7 +563,7 @@ public:
|
|||
*/
|
||||
class Is_on_x_identification_2 {
|
||||
private:
|
||||
typename Base::Is_on_x_identificiation_2 m_object;
|
||||
typename Base::Is_on_x_identification_2 m_object;
|
||||
size_t& m_counter1;
|
||||
size_t& m_counter2;
|
||||
|
||||
|
|
@ -571,17 +571,17 @@ public:
|
|||
/*! Construct */
|
||||
Is_on_x_identification_2(const Base* base,
|
||||
size_t& counter1, size_t& counter2) :
|
||||
m_object(base->is_on_x_identificiation_2_object()),
|
||||
m_object(base->is_on_x_identification_2_object()),
|
||||
m_counter1(counter1),
|
||||
m_counter2(counter2)
|
||||
{}
|
||||
|
||||
/*! Operate */
|
||||
Arr_parameter_space operator()(const Point_2& p) const
|
||||
bool operator()(const Point_2& p) const
|
||||
{ ++m_counter1; return m_object(p); }
|
||||
|
||||
/*! Operate */
|
||||
Arr_parameter_space operator()(const X_monotone_curve_2& xc) const
|
||||
bool operator()(const X_monotone_curve_2& xc) const
|
||||
{ ++m_counter2; return m_object(xc); }
|
||||
};
|
||||
|
||||
|
|
@ -666,7 +666,7 @@ public:
|
|||
*/
|
||||
class Is_on_y_identification_2 {
|
||||
private:
|
||||
typename Base::Is_on_y_identificiation_2 m_object;
|
||||
typename Base::Is_on_y_identification_2 m_object;
|
||||
size_t& m_counter1;
|
||||
size_t& m_counter2;
|
||||
|
||||
|
|
@ -674,18 +674,18 @@ public:
|
|||
/*! Construct */
|
||||
Is_on_y_identification_2(const Base* base,
|
||||
size_t& counter1, size_t& counter2) :
|
||||
m_object(base->is_on_y_identificiation_2_object()),
|
||||
m_object(base->is_on_y_identification_2_object()),
|
||||
m_counter1(counter1),
|
||||
m_counter2(counter2)
|
||||
{}
|
||||
|
||||
/*! Operate */
|
||||
Arr_parameter_space operator()(const Point_2& p) const
|
||||
bool operator()(const Point_2& p) const
|
||||
{ ++m_counter1; return m_object(p); }
|
||||
|
||||
|
||||
/*! Operate */
|
||||
Arr_parameter_space operator()(const X_monotone_curve_2& xc) const
|
||||
bool operator()(const X_monotone_curve_2& xc) const
|
||||
{ ++m_counter2; return m_object(xc); }
|
||||
};
|
||||
|
||||
|
|
@ -824,10 +824,10 @@ public:
|
|||
m_counters[IS_ON_X_IDENTIFICATION_CURVE_OP]);
|
||||
}
|
||||
|
||||
Compare_y_on_boundary_2 compare_on_boundary_2_object() const
|
||||
Compare_y_on_boundary_2 compare_y_on_boundary_2_object() const
|
||||
{ return Compare_y_on_boundary_2(this, m_counters[COMPARE_Y_ON_BOUNDARY_OP]); }
|
||||
|
||||
Compare_y_near_boundary_2 compare_near_boundary_2_object() const
|
||||
Compare_y_near_boundary_2 compare_y_near_boundary_2_object() const
|
||||
{
|
||||
return Compare_y_near_boundary_2(this,
|
||||
m_counters[COMPARE_Y_NEAR_BOUNDARY_OP]);
|
||||
|
|
@ -943,7 +943,7 @@ Out_stream& operator<<(Out_stream& os,
|
|||
<< traits.count_parameter_space_in_x_point() << std::endl
|
||||
<< "# of PARAMETER_SPACE_IN_X curve operation = "
|
||||
<< traits.count_parameter_space_in_x_curve() << std::endl
|
||||
<< "# of IS_ON_X_IDENTIFICIATION point operation = "
|
||||
<< "# of IS_ON_X_IDENTIFICATION point operation = "
|
||||
<< traits.count_is_on_x_identification_point() << std::endl
|
||||
<< "# of IS_ON_X_IDENTIFICATION curve operation = "
|
||||
<< traits.count_is_on_x_identification_curve() << std::endl
|
||||
|
|
@ -958,7 +958,7 @@ Out_stream& operator<<(Out_stream& os,
|
|||
<< traits.count_parameter_space_in_y_point() << std::endl
|
||||
<< "# of PARAMETER_SPACE_IN_Y curve operation = "
|
||||
<< traits.count_parameter_space_in_y_curve() << std::endl
|
||||
<< "# of IS_ON_Y_IDENTIFICIATION point operation = "
|
||||
<< "# of IS_ON_Y_IDENTIFICATION point operation = "
|
||||
<< traits.count_is_on_y_identification_point() << std::endl
|
||||
<< "# of IS_ON_Y_IDENTIFICATION curve operation = "
|
||||
<< traits.count_is_on_y_identification_curve() << std::endl
|
||||
|
|
|
|||
|
|
@ -339,7 +339,7 @@ public:
|
|||
if (! valid)
|
||||
return;
|
||||
|
||||
// Analyze the behaviour of the rational function at x = -oo (the source).
|
||||
// Analyze the behavior of the rational function at x = -oo (the source).
|
||||
Algebraic y0;
|
||||
const Arr_parameter_space inf_s =
|
||||
_analyze_at_minus_infinity (_numer, _denom, y0);
|
||||
|
|
@ -351,7 +351,7 @@ public:
|
|||
else // if (inf_s == ARR_INTERIOR)
|
||||
_ps = Point_2 (0, y0);
|
||||
|
||||
// Analyze the behaviour of the rational function at x = +oo (the target).
|
||||
// Analyze the behavior of the rational function at x = +oo (the target).
|
||||
const Arr_parameter_space inf_t =
|
||||
_analyze_at_plus_infinity (_numer, _denom, y0);
|
||||
|
||||
|
|
@ -735,7 +735,7 @@ public:
|
|||
*/
|
||||
Self split_at_pole (const Algebraic& x0)
|
||||
{
|
||||
// Analyze the behaviour of the function near the given pole.
|
||||
// Analyze the behavior of the function near the given pole.
|
||||
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole (x0);
|
||||
const CGAL::Sign sign_left = signs.first;
|
||||
const CGAL::Sign sign_right = signs.second;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -591,8 +591,7 @@ public:
|
|||
Comparison_result dir = cmp_seg_endpts(xcv[0]);
|
||||
|
||||
// Locate the subcurve on the polycurve xcv that contains p.
|
||||
std::size_t i = m_poly_traits.locate(xcv, p);
|
||||
|
||||
auto i = m_poly_traits.locate_impl(xcv, p, All_sides_oblivious_category());
|
||||
CGAL_precondition(i != Polycurve_traits_2::INVALID_INDEX);
|
||||
|
||||
// Clear the output curves.
|
||||
|
|
|
|||
|
|
@ -450,7 +450,7 @@ public:
|
|||
_info = (_info | IS_DIRECTED_RIGHT);
|
||||
|
||||
|
||||
// Analyze the behaviour of the rational function at x = -oo (the source).
|
||||
// Analyze the behavior of the rational function at x = -oo (the source).
|
||||
Algebraic_real_1 y0;
|
||||
const Arr_parameter_space inf_s = _analyze_at_minus_infinity(P, Q, y0);
|
||||
|
||||
|
|
@ -460,7 +460,7 @@ public:
|
|||
_info = (_info | SRC_AT_Y_PLUS_INFTY);
|
||||
else // if (inf_s == ARR_INTERIOR)
|
||||
_ps = Algebraic_point_2(); //the point is a dummy
|
||||
//Analyze the behaviour of the rational function at x = +oo (the target).
|
||||
//Analyze the behavior of the rational function at x = +oo (the target).
|
||||
const Arr_parameter_space inf_t = _analyze_at_plus_infinity(P, Q, y0);
|
||||
|
||||
if (inf_t == ARR_BOTTOM_BOUNDARY)
|
||||
|
|
@ -949,7 +949,7 @@ public:
|
|||
|
||||
Self split_at_pole(const Algebraic_real_1& x0)
|
||||
{
|
||||
// Analyze the behaviour of the function near the given pole.
|
||||
// Analyze the behavior of the function near the given pole.
|
||||
const std::pair<CGAL::Sign, CGAL::Sign> signs = _analyze_near_pole(x0);
|
||||
const CGAL::Sign sign_left = signs.first;
|
||||
const CGAL::Sign sign_right = signs.second;
|
||||
|
|
|
|||
|
|
@ -1578,7 +1578,7 @@ public:
|
|||
return res;
|
||||
}
|
||||
|
||||
// otherwise: both ends have asymptotic behaviour
|
||||
// otherwise: both ends have asymptotic behavior
|
||||
if (ps_y1 == ps_y2) { // need special y-comparison
|
||||
if (ce1 == ce2) { // both ends approach asymptote from one side
|
||||
Comparison_result res = m_self->compare_x_near_boundary_2_object()(xcv1, xcv2, ce2);
|
||||
|
|
|
|||
|
|
@ -1551,7 +1551,7 @@ split_edge(Halfedge_handle e,
|
|||
// o---------e-------->o
|
||||
if (_are_equal(source, cv1, ARR_MIN_END)) {
|
||||
const Point_2& p = m_geom_traits->construct_max_vertex_2_object()(cv1);
|
||||
CGAL_postcondition_code
|
||||
CGAL_precondition_code
|
||||
(const Point_2& q = m_geom_traits->construct_min_vertex_2_object()(cv2));
|
||||
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
|
||||
CGAL_precondition(_are_equal(he1->vertex(), cv2, ARR_MAX_END));
|
||||
|
|
@ -1562,7 +1562,7 @@ split_edge(Halfedge_handle e,
|
|||
// o<--------e---------o
|
||||
if (_are_equal(source, cv1, ARR_MAX_END)) {
|
||||
const Point_2& p = m_geom_traits->construct_min_vertex_2_object()(cv1);
|
||||
CGAL_postcondition_code
|
||||
CGAL_precondition_code
|
||||
(const Point_2& q = m_geom_traits->construct_max_vertex_2_object()(cv2));
|
||||
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
|
||||
CGAL_precondition(_are_equal(he1->vertex(), cv2, ARR_MIN_END));
|
||||
|
|
@ -1573,7 +1573,7 @@ split_edge(Halfedge_handle e,
|
|||
// o---------e-------->o
|
||||
if (_are_equal(source, cv2, ARR_MIN_END)) {
|
||||
const Point_2& p = m_geom_traits->construct_max_vertex_2_object()(cv2);
|
||||
CGAL_postcondition_code
|
||||
CGAL_precondition_code
|
||||
(const Point_2& q = m_geom_traits->construct_min_vertex_2_object()(cv1));
|
||||
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
|
||||
CGAL_precondition(_are_equal(he1->vertex(), cv1, ARR_MAX_END));
|
||||
|
|
@ -1584,7 +1584,7 @@ split_edge(Halfedge_handle e,
|
|||
// o<--------e---------o
|
||||
CGAL_precondition(_are_equal(source, cv2, ARR_MAX_END));
|
||||
const Point_2& p = m_geom_traits->construct_min_vertex_2_object()(cv2);
|
||||
CGAL_postcondition_code
|
||||
CGAL_precondition_code
|
||||
(const Point_2& q = m_geom_traits->construct_max_vertex_2_object()(cv1));
|
||||
CGAL_precondition(m_geom_traits->equal_2_object()(p, q));
|
||||
CGAL_precondition(_are_equal(he1->vertex(), cv1, ARR_MIN_END));
|
||||
|
|
|
|||
|
|
@ -571,7 +571,7 @@ public:
|
|||
compare_xy_2_object()(p, q, true) != CGAL::EQUAL);
|
||||
// check coprimality condition for supporting curves
|
||||
_check_pt_arcno_and_coprimality(p, -1, c);
|
||||
_check_pt_arcno_and_coprimality(p, -1, c);
|
||||
_check_pt_arcno_and_coprimality(q, -1, c);
|
||||
_fix_curve_ends_order();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
* \brief
|
||||
* defines class Curve_renderer_traits.
|
||||
*
|
||||
* provides specialisations of Curve_renderer_traits for different number
|
||||
* provides specializations of Curve_renderer_traits for different number
|
||||
* types compatible with the curve renderer
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -733,7 +733,7 @@ struct Graph_with_descriptor_with_graph_property_map {
|
|||
}
|
||||
}; // class Graph_with_descriptor_with_graph_property_map
|
||||
|
||||
//specialisation for lvaluepropertymaps
|
||||
//specialization for lvaluepropertymaps
|
||||
template <typename Graph, typename PM>
|
||||
struct Graph_with_descriptor_with_graph_property_map<Graph, PM, boost::lvalue_property_map_tag> {
|
||||
|
||||
|
|
|
|||
|
|
@ -59,9 +59,9 @@ bool write_3MF(const std::string& filename,
|
|||
const GraphRange& gs,
|
||||
const std::vector<std::string>& names
|
||||
#ifndef DOXYGEN_RUNNING
|
||||
, std::enable_if_t<!
|
||||
internal::is_Point_set_or_Range_or_Iterator<
|
||||
typename boost::range_value<GraphRange>::type>::value>* = nullptr
|
||||
, std::enable_if_t<
|
||||
! internal::is_Point_set_or_Range_or_Iterator<
|
||||
typename boost::range_value<GraphRange>::type>::value>* = nullptr
|
||||
#endif
|
||||
)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -116,8 +116,8 @@ void partition_dual_graph(const TriangleMesh& tm,
|
|||
delete[] eptr;
|
||||
delete[] eind;
|
||||
|
||||
std::free(npart);
|
||||
std::free(epart);
|
||||
(std::free)(npart);
|
||||
(std::free)(epart);
|
||||
}
|
||||
|
||||
template<typename TriangleMesh, typename NamedParameters>
|
||||
|
|
|
|||
|
|
@ -151,8 +151,8 @@ void partition_graph(const TriangleMesh& tm,
|
|||
delete[] eptr;
|
||||
delete[] eind;
|
||||
|
||||
std::free(npart);
|
||||
std::free(epart);
|
||||
(std::free)(npart);
|
||||
(std::free)(epart);
|
||||
}
|
||||
|
||||
template<typename TriangleMesh, typename NamedParameters>
|
||||
|
|
|
|||
|
|
@ -54,6 +54,11 @@ if(OpenMesh_FOUND)
|
|||
|
||||
create_single_source_cgal_program("graph_concept_OpenMesh.cpp")
|
||||
target_link_libraries(graph_concept_OpenMesh PRIVATE CGAL::OpenMesh_support)
|
||||
|
||||
create_single_source_cgal_program("test_OpenMesh.cpp")
|
||||
target_link_libraries(test_OpenMesh PRIVATE CGAL::OpenMesh_support)
|
||||
|
||||
|
||||
else()
|
||||
message(STATUS "NOTICE: Tests that use OpenMesh will not be compiled.")
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
#include <CGAL/basic.h>
|
||||
#include <OpenMesh/Core/IO/MeshIO.hh>
|
||||
#include <OpenMesh/Core/Mesh/PolyMesh_ArrayKernelT.hh>
|
||||
|
||||
#include <CGAL/boost/graph/graph_traits_PolyMesh_ArrayKernelT.h>
|
||||
|
||||
typedef OpenMesh::PolyMesh_ArrayKernelT<> Om;
|
||||
typedef boost::graph_traits< Om > Traits;
|
||||
typedef Traits::edge_descriptor edge_descriptor;
|
||||
typedef Traits::halfedge_descriptor halfedge_descriptor;
|
||||
typedef Traits::vertex_descriptor vertex_descriptor;
|
||||
typedef Traits::face_descriptor face_descriptor;
|
||||
//typedef Kernel::Point_3 Point_3;
|
||||
|
||||
int main()
|
||||
{
|
||||
Om om;
|
||||
for (Om::EdgeHandle ed : edges(om)) {
|
||||
std::cout << "edge" << std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -14,3 +14,4 @@ Triangulation_3
|
|||
Voronoi_diagram_2
|
||||
Kernel_23
|
||||
Arrangement_on_surface_2
|
||||
Stream_support
|
||||
|
|
@ -542,13 +542,13 @@ boundary of each input (linear) polygon as a cyclic sequence of single
|
|||
(\f$x\f$-monotone) polylines. By default, `UsePolylines` is set to
|
||||
`CGAL::Tag_true`, which implies that the boundary of the each input
|
||||
(linear) polygon is treated as a cyclic sequence of (\f$x\f$-monotone)
|
||||
polylines. In most cases this behaviour is superior (that is, less
|
||||
polylines. In most cases this behavior is superior (that is, less
|
||||
time-consuming) because the number of events handled as part of the
|
||||
execution of the plane-sweep algorithm is reduced. In cases where the
|
||||
boundaries of the input polygons frequently intersect, treating them
|
||||
as polylines may become less efficient. In these cases substitute the
|
||||
`UsePolylines` template parameter with `CGAL::Tag_false` to restore
|
||||
the original behaviour (where the boundary of each input linear
|
||||
the original behavior (where the boundary of each input linear
|
||||
polygon is treated as a cyclic sequence of single \f$x\f$-monotone
|
||||
segments).
|
||||
|
||||
|
|
|
|||
|
|
@ -234,7 +234,7 @@ void test()
|
|||
gps.oriented_side(pt);
|
||||
gps.oriented_side(pgn1);
|
||||
gps.oriented_side(pgn_with_holes1);
|
||||
gps.oriented_side(pgn_with_holes1);
|
||||
gps.oriented_side(pgn_with_holes2);
|
||||
gps.oriented_side(gps);
|
||||
gps.locate(pt, pgn_with_holes1);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace CGAL {
|
|||
\ingroup PkgBoundingVolumesRef
|
||||
|
||||
The class `Min_sphere_annulus_d_traits_2` is a traits class for the \f$ d\f$-dimensional
|
||||
optimisation algorithms using the two-dimensional \cgal kernel.
|
||||
optimization algorithms using the two-dimensional \cgal kernel.
|
||||
|
||||
\tparam K must bea model for `Kernel`.
|
||||
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace CGAL {
|
|||
\ingroup PkgBoundingVolumesRef
|
||||
|
||||
The class `Min_sphere_annulus_d_traits_3` is a traits class for the \f$ d\f$-dimensional
|
||||
optimisation algorithms using the three-dimensional \cgal kernel.
|
||||
optimization algorithms using the three-dimensional \cgal kernel.
|
||||
|
||||
\tparam K must be a model for `Kernel`.
|
||||
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace CGAL {
|
|||
\ingroup PkgBoundingVolumesRef
|
||||
|
||||
The class `Min_sphere_annulus_d_traits_d` is a traits class for the \f$ d\f$-dimensional
|
||||
optimisation algorithms using the \f$ d\f$-dimensional \cgal kernel.
|
||||
optimization algorithms using the \f$ d\f$-dimensional \cgal kernel.
|
||||
|
||||
\tparam K must be a model for `Kernel`.
|
||||
\tparam ET NT are models for `RingNumberType`. Their default type is `K::RT`.
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ namespace CGAL {
|
|||
std::vector<const Point *> P; // input points
|
||||
int n; // number of input points, i.e., P.size()
|
||||
|
||||
// This class comes in two flavours:
|
||||
// This class comes in two flavors:
|
||||
//
|
||||
// (i) When Embed is false, the input points are taken to be
|
||||
// ordinary points in R^{d_P}, where d_P is the dimension of the
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ namespace CGAL_MINIBALL_NAMESPACE {
|
|||
// they are convertible to double.
|
||||
// This is indeed the least invasive fix dropint the function that were
|
||||
// defined here and cause linkage bug.
|
||||
// You can still have a behaviour of instantiating only if a type
|
||||
// You can still have a behavior of instantiating only if a type
|
||||
// is convertibale to double (by using type_traits together with _if)
|
||||
// but until "the whole design should be overhauled at some point"
|
||||
// this is fine.
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ min_rectangle_2(
|
|||
|
||||
// quadruple of points defining the current rectangle
|
||||
ForwardIterator curr[4];
|
||||
// initialised to the points defining the bounding box
|
||||
// initialized to the points defining the bounding box
|
||||
convex_bounding_box_2(f, l, curr, t);
|
||||
|
||||
// curr[i] can be advanced (cyclically) until it reaches limit[i]
|
||||
|
|
@ -482,7 +482,7 @@ min_parallelogram_2(ForwardIterator f,
|
|||
|
||||
// quadruple of points defining the bounding box
|
||||
ForwardIterator curr[4];
|
||||
// initialised to the points defining the bounding box
|
||||
// initialized to the points defining the bounding box
|
||||
convex_bounding_box_2(first, l, curr, t);
|
||||
|
||||
|
||||
|
|
@ -659,7 +659,7 @@ min_strip_2(ForwardIterator f,
|
|||
|
||||
// quadruple of points defining the bounding box
|
||||
ForwardIterator curr[4];
|
||||
// initialised to the points defining the bounding box
|
||||
// initialized to the points defining the bounding box
|
||||
convex_bounding_box_2(first, l, curr, t);
|
||||
|
||||
ForwardIterator low = curr[0];
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ rectangular_3_center_2_type1(
|
|||
rad = sdist(v(r, 2), v(r, 0));
|
||||
// init to prevent default constructor requirement
|
||||
Point bestpoint = *f;
|
||||
// (initialisation avoids warning)
|
||||
// (initialization avoids warning)
|
||||
unsigned int bestrun = 0;
|
||||
|
||||
// two cases: top-left & bottom-right or top-right & bottom-left
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
// release : $CGAL_Revision: CGAL-wip $
|
||||
// release_date : $CGAL_Date$
|
||||
//
|
||||
// chapter : $CGAL_Chapter: Optimisation $
|
||||
// chapter : $CGAL_Chapter: Geometric Optimization $
|
||||
// package : $CGAL_Package: MinSphere $
|
||||
// file : min_sphere_test.C
|
||||
// source : web/Optimisation/Min_sphere_d.aw
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
// release : $CGAL_Revision: CGAL-wip $
|
||||
// release_date : $CGAL_Date$
|
||||
//
|
||||
// chapter : $CGAL_Chapter: Optimisation $
|
||||
// chapter : $CGAL_Chapter: Geometric Optimization $
|
||||
// package : $CGAL_Package: MinSphere $
|
||||
// file : min_sphere_traits_2_test.C
|
||||
// source : web/Optimisation/Min_sphere_d.aw
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
// release : $CGAL_Revision: CGAL-wip $
|
||||
// release_date : $CGAL_Date$
|
||||
//
|
||||
// chapter : $CGAL_Chapter: Optimisation $
|
||||
// chapter : $CGAL_Chapter: Geometric Optimization $
|
||||
// package : $CGAL_Package: MinSphere $
|
||||
// file : min_sphere_traits_3_test.C
|
||||
// source : web/Optimisation/Min_sphere_d.aw
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_annulus_d/test_Min_annulus_d.h
|
||||
// package : $CGAL_Package: Min_annulus_d $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// source : web/Min_annulus_d.aw
|
||||
// revision : $Id$
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_annulus_d/test_Min_annulus_d_2.cpp
|
||||
// package : $CGAL_Package: Min_annulus_d $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// revision : $Id$
|
||||
// revision_date : $Date$
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_annulus_d/test_Min_annulus_d_3.cpp
|
||||
// package : $CGAL_Package: Min_annulus_d $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// revision : $Id$
|
||||
// revision_date : $Date$
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_annulus_d/test_Min_annulus_d_d.cpp
|
||||
// package : $CGAL_Package: Min_annulus_d $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// revision : $Id$
|
||||
// revision_date : $Date$
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_circle_2/test_Min_circle_2.C
|
||||
// package : $CGAL_Package: Min_circle_2 $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// source : web/Min_circle_2.aw
|
||||
// revision : $Id$
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
//
|
||||
// file : test/Min_ellipse_2/test_Min_ellipse_2.C
|
||||
// package : $CGAL_Package: Min_ellipse_2 $
|
||||
// chapter : Geometric Optimisation
|
||||
// chapter : Geometric Optimization
|
||||
//
|
||||
// source : web/Min_ellipse_2.aw
|
||||
// revision : $Id$
|
||||
|
|
|
|||
|
|
@ -595,7 +595,7 @@ public:
|
|||
}
|
||||
|
||||
void operator delete( void *p, size_t ){
|
||||
MemoryPool<ConstPolyRep>::global_allocator().free(p);
|
||||
(MemoryPool<ConstPolyRep>::global_allocator().free)(p);
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
@ -1248,7 +1248,7 @@ void * AddSubRep<O>::operator new( size_t size)
|
|||
|
||||
template <typename O>
|
||||
void AddSubRep<O>::operator delete( void *p, size_t )
|
||||
{ MemoryPool<AddSubRep<O> >::global_allocator().free(p); }
|
||||
{ (MemoryPool<AddSubRep<O> >::global_allocator().free)(p); }
|
||||
|
||||
|
||||
/// \typedef AddRep
|
||||
|
|
|
|||
|
|
@ -51,14 +51,14 @@
|
|||
CGAL_INLINE_FUNCTION void *T::operator new( size_t size) \
|
||||
{ return MemoryPool<T>::global_allocator().allocate(size); } \
|
||||
CGAL_INLINE_FUNCTION void T::operator delete( void *p, size_t ) \
|
||||
{ MemoryPool<T>::global_allocator().free(p); }
|
||||
{ (MemoryPool<T>::global_allocator().free)(p); }
|
||||
#define CORE_MEMORY_IMPL_TEMPLATE_WITH_ONE_ARG(C) \
|
||||
template <typename T> \
|
||||
CGAL_INLINE_FUNCTION void *C<T>::operator new( size_t size) \
|
||||
{ return MemoryPool<C<T> >::global_allocator().allocate(size); } \
|
||||
template <typename T> \
|
||||
CGAL_INLINE_FUNCTION void C<T>::operator delete( void *p, size_t ) \
|
||||
{ MemoryPool<C<T> >::global_allocator().free(p); }
|
||||
{ (MemoryPool<C<T> >::global_allocator().free)(p); }
|
||||
#endif
|
||||
|
||||
// include some common header files
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ public:
|
|||
|
||||
|
||||
void* allocate(std::size_t size);
|
||||
void free(void* p);
|
||||
void free BOOST_PREVENT_MACRO_SUBSTITUTION (void* p);
|
||||
|
||||
// Access the corresponding static global allocator.
|
||||
static MemoryPool<T,nObjects>& global_allocator() {
|
||||
|
|
@ -116,7 +116,7 @@ void* MemoryPool< T, nObjects >::allocate(std::size_t) {
|
|||
}
|
||||
|
||||
template< class T, int nObjects >
|
||||
void MemoryPool< T, nObjects >::free(void* t) {
|
||||
void MemoryPool< T, nObjects >::free BOOST_PREVENT_MACRO_SUBSTITUTION (void* t) {
|
||||
CGAL_assertion(t != 0);
|
||||
if (t == 0) return; // for safety
|
||||
if(blocks.empty()){
|
||||
|
|
|
|||
|
|
@ -154,7 +154,7 @@ void * Realbase_for<T>::operator new( size_t size)
|
|||
|
||||
template <class T>
|
||||
void Realbase_for<T>::operator delete( void *p, size_t )
|
||||
{ MemoryPool<Realbase_for<T> >::global_allocator().free(p); }
|
||||
{ (MemoryPool<Realbase_for<T> >::global_allocator().free)(p); }
|
||||
|
||||
typedef Realbase_for<long> RealLong;
|
||||
typedef Realbase_for<double> RealDouble;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
#include <CGAL/ImageIO.h>
|
||||
|
||||
/* read analyse format header
|
||||
/* read analyze format header
|
||||
|
||||
return:
|
||||
-1: error
|
||||
|
|
|
|||
|
|
@ -108,8 +108,8 @@ typedef std::uint32_t CGAL_UINT32;
|
|||
*/
|
||||
|
||||
/*
|
||||
* Bitmapfileheader defines a single bitmap image. Its analogue in the
|
||||
* Windows SDK is the Bitmapfileheader. Its analogues in the OS/2 Toolkit are
|
||||
* Bitmapfileheader defines a single bitmap image. Its analog in the
|
||||
* Windows SDK is the Bitmapfileheader. Its analogs in the OS/2 Toolkit are
|
||||
* the Bitmapfileheader and Bitmapfileheader2 structures.
|
||||
*
|
||||
* A BITMAPHEADER structure is always concatenated to the end of a
|
||||
|
|
@ -128,7 +128,7 @@ typedef struct Bitmapfileheader
|
|||
/*
|
||||
* BITMAPARRAYHEADER is used to establish a linked list of Bitmapfileheader
|
||||
* structures for a bitmap file with multiple images in it. There is no
|
||||
* equivalent structure in the Windows SDK. Its analogues in the OS/2 toolkit
|
||||
* equivalent structure in the Windows SDK. Its analogs in the OS/2 toolkit
|
||||
* are the BITMAPARRAYFILEHEADER and BITMAPARRAYFILEHEADER2 structures.
|
||||
*
|
||||
* A Bitmapfileheader structure is always concatenated to the end of a
|
||||
|
|
@ -145,9 +145,9 @@ typedef struct BITMAPARRAYHEADER
|
|||
|
||||
|
||||
/*
|
||||
* BITMAPHEADER defines the properties of a bitmap. Its analogues in the
|
||||
* BITMAPHEADER defines the properties of a bitmap. Its analogs in the
|
||||
* Windows SDK are the BITMAPCOREINFOHEADER and BITMAPINFOHEADER structures.
|
||||
* Its analogues in the OS/2 Toolkit are the BITMAPINFOHEADER and
|
||||
* Its analogs in the OS/2 Toolkit are the BITMAPINFOHEADER and
|
||||
* BITMAPINFOHEADER2 structures.
|
||||
*
|
||||
* A color table is concatenated to this structure. The number of elements in
|
||||
|
|
@ -188,8 +188,8 @@ typedef struct BITMAPHEADER
|
|||
|
||||
|
||||
/*
|
||||
* RGB defines a single color palette entry. Its analogues in the Windows SDK
|
||||
* are the RGBTRIPLE and RGBQUAD structures. Its analogues in the OS/2
|
||||
* RGB defines a single color palette entry. Its analogs in the Windows SDK
|
||||
* are the RGBTRIPLE and RGBQUAD structures. Its analogs in the OS/2
|
||||
* Toolkit are the RGB and RGB2 structure.
|
||||
*/
|
||||
typedef struct RGB
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ RFcoefficientType * InitRecursiveCoefficients( double x,
|
|||
b0 /= x;
|
||||
b1 /= x;
|
||||
|
||||
/*--- normalisation ---*/
|
||||
/*--- normalization ---*/
|
||||
switch ( derivative ) {
|
||||
default :
|
||||
CGAL_FALLTHROUGH;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ Compares the \f$ \theta\f$-coordinates of `p` and `q` relatively to `sphere`.
|
|||
|
||||
\sa \link compare_x_grp `CGAL::compare_x()` \endlink
|
||||
\sa \link compare_xy_grp `CGAL::compare_xy()` \endlink
|
||||
\sa \link compare_xy_grp `CGAL::compare_xy()` \endlink
|
||||
\sa \link compare_xyz_grp `CGAL::compare_xyz()` \endlink
|
||||
\sa \link compare_x_at_y_grp `CGAL::compare_x_at_y()` \endlink
|
||||
\sa \link compare_y_grp `CGAL::compare_y()` \endlink
|
||||
\sa \link compare_yx_grp `CGAL::compare_yx()` \endlink
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ Data structures specialized to classify clusters.
|
|||
\cgalPkgDependsOn{\ref PkgSolverInterface, \ref PkgSpatialSearchingD}
|
||||
\cgalPkgBib{cgal:lm-clscm-12}
|
||||
\cgalPkgLicense{\ref licensesGPL "GPL"}
|
||||
\cgalPkgDemo{Operations on Polyhedra,polyhedron_3.zip}
|
||||
\cgalPkgDemo{CGAL Lab,CGALlab.zip}
|
||||
\cgalPkgShortInfoEnd
|
||||
|
||||
\cgalPkgDescriptionEnd
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ public:
|
|||
std::nth_element (z.begin(), z.begin() + (z.size() / 10), z.end());
|
||||
dtm_x(i,j) = z[z.size() / 10];
|
||||
}
|
||||
dem.free();
|
||||
(dem.free)();
|
||||
|
||||
if (grid.width() * grid.height() > input.size())
|
||||
values.resize (input.size(), compressed_float(0));
|
||||
|
|
@ -162,7 +162,7 @@ public:
|
|||
values[*it] = v;
|
||||
}
|
||||
}
|
||||
dtm_x.free();
|
||||
(dtm_x.free)();
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ public:
|
|||
std::size_t J = grid.y(i);
|
||||
values[i] = float(dtm(I,J) - get (point_map, *(input.begin() + i)).z());
|
||||
}
|
||||
dtm.free();
|
||||
(dtm.free)();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ public:
|
|||
std::size_t J = grid.y(i);
|
||||
values[i] = float(get (point_map, *(input.begin() + i)).z() - dtm(I,J));
|
||||
}
|
||||
dtm.free();
|
||||
(dtm.free)();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ public:
|
|||
std::size_t J = grid.y(i);
|
||||
values[i] = dtm(I,J);
|
||||
}
|
||||
dtm.free();
|
||||
(dtm.free)();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
void free()
|
||||
void free BOOST_PREVENT_MACRO_SUBSTITUTION ()
|
||||
{
|
||||
m_raw.reset();
|
||||
m_sparse.reset();
|
||||
|
|
|
|||
|
|
@ -662,7 +662,7 @@ namespace CGAL {
|
|||
}
|
||||
|
||||
/** Create a new dart and add it to the map.
|
||||
* The marks of the darts are initialised with mmask_marks, i.e. the dart
|
||||
* The marks of the darts are initialized with mmask_marks, i.e. the dart
|
||||
* is unmarked for all the marks.
|
||||
* @return a Dart_descriptor on the new dart.
|
||||
*/
|
||||
|
|
@ -3707,6 +3707,9 @@ namespace CGAL {
|
|||
this->automatic_attributes_management = newval;
|
||||
}
|
||||
|
||||
void set_automatic_attributes_management_without_correction(bool newval)
|
||||
{ this->automatic_attributes_management = newval; }
|
||||
|
||||
/** Create an half-edge.
|
||||
* @return a dart of the new half-edge.
|
||||
*/
|
||||
|
|
@ -4111,7 +4114,7 @@ namespace CGAL {
|
|||
}
|
||||
if (ah != null_descriptor)
|
||||
{
|
||||
// We initialise the 0-atttrib to ah
|
||||
// We initialize the 0-atttrib to ah
|
||||
internal::Set_i_attribute_of_dart_functor<Self, 0>::
|
||||
run(*this, d1, ah);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ struct Call_functor_if_both_attributes_have_point
|
|||
const Pointconverter&)
|
||||
{ return Map2::null_descriptor; }
|
||||
};
|
||||
// Specialisation with i==0 and both attributes have points.
|
||||
// Specialization with i==0 and both attributes have points.
|
||||
template< typename Map1, typename Map2, typename Pointconverter >
|
||||
struct Call_functor_if_both_attributes_have_point<Map1, Map2, 0,
|
||||
Pointconverter, true, true>
|
||||
|
|
@ -285,7 +285,7 @@ struct Copy_attribute_functor_if_nonvoid
|
|||
cmap2.template set_attribute<i>(dh2, res);
|
||||
}
|
||||
};
|
||||
// Specialisation when attr1 is void, and attr2 is non void i==0. Nothing to
|
||||
// Specialization when attr1 is void, and attr2 is non void i==0. Nothing to
|
||||
// copy, but if 0-attributes has point and i==0, we need to create
|
||||
// vertex attributes.
|
||||
template<typename Map1, typename Map2, typename Converters,
|
||||
|
|
@ -310,7 +310,7 @@ struct Copy_attribute_functor_if_nonvoid<Map1, Map2, Converters,
|
|||
set_attribute<0>(dh2, cmap2.template create_attribute<0>());
|
||||
}
|
||||
};
|
||||
// Specialisation when attr1 is void, and attr2 is non void i!=0.
|
||||
// Specialization when attr1 is void, and attr2 is non void i!=0.
|
||||
// Nothing to do.
|
||||
template<typename Map1, typename Map2, typename Converters, unsigned int i,
|
||||
typename Pointconverter, typename Attr2>
|
||||
|
|
@ -360,7 +360,7 @@ struct Copy_dart_info_functor_if_nonvoid
|
|||
const DartInfoConverter& converter)
|
||||
{ converter(map1, map2, dh1, dh2); }
|
||||
};
|
||||
// Specialisation when Info1 is void.
|
||||
// Specialization when Info1 is void.
|
||||
template<typename Map1, typename Map2, typename DartInfoConverter,
|
||||
typename Info2>
|
||||
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
|
||||
|
|
@ -373,7 +373,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
|
|||
const DartInfoConverter&)
|
||||
{}
|
||||
};
|
||||
// Specialisation when Info2 is void.
|
||||
// Specialization when Info2 is void.
|
||||
template<typename Map1, typename Map2, typename DartInfoConverter,
|
||||
typename Info1>
|
||||
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
|
||||
|
|
@ -386,7 +386,7 @@ struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
|
|||
const DartInfoConverter&)
|
||||
{}
|
||||
};
|
||||
// Specialisation when both Info1 and Info2 are void.
|
||||
// Specialization when both Info1 and Info2 are void.
|
||||
template<typename Map1, typename Map2, typename DartInfoConverter>
|
||||
struct Copy_dart_info_functor_if_nonvoid<Map1, Map2, DartInfoConverter,
|
||||
CGAL::Void, CGAL::Void>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace CGAL
|
|||
{
|
||||
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
|
||||
{
|
||||
// TODO? Optimisation for dim-2, and to not test all the darts of the cell?
|
||||
// TODO? Optimization for dim-2, and to not test all the darts of the cell?
|
||||
bool res = true;
|
||||
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
|
||||
res && it.cont(); ++it )
|
||||
|
|
@ -462,7 +462,7 @@ namespace CGAL
|
|||
{
|
||||
static bool run(const CMap& amap, typename CMap::Dart_const_descriptor adart)
|
||||
{
|
||||
// TODO ? Optimisation possible to not test all the darts of the cell ?
|
||||
// TODO ? Optimization possible to not test all the darts of the cell ?
|
||||
bool res = true;
|
||||
for ( CGAL::CMap_dart_const_iterator_of_cell<CMap,i> it(amap, adart);
|
||||
res && it.cont(); ++it )
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ namespace CGAL {
|
|||
void init_storage()
|
||||
{
|
||||
// Allocate a dart for null_dart_descriptor
|
||||
assert(mdarts.empty()); // the compact container is empty
|
||||
CGAL_assertion(mdarts.empty()); // the compact container is empty
|
||||
Dart_index local_null_dart_descriptor = mdarts.emplace();
|
||||
if(local_null_dart_descriptor!=0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ public:
|
|||
void init()
|
||||
{
|
||||
m_free_list=std::stack<size_type>();
|
||||
assert(m_free_list.empty());
|
||||
CGAL_assertion(m_free_list.empty());
|
||||
if(m_cc_with_index->capacity()>0)
|
||||
{ m_used.assign(m_cc_with_index->capacity(), false); }
|
||||
else { m_used.clear(); }
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ namespace CGAL {
|
|||
|
||||
Dart_descriptor get_f(unsigned int i) const
|
||||
{
|
||||
assert(i<=dimension);
|
||||
CGAL_assertion(i<=dimension);
|
||||
return mf[i];
|
||||
}
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ namespace CGAL {
|
|||
}
|
||||
|
||||
protected:
|
||||
/** Default constructor: no real initialisation,
|
||||
/** Default constructor: no real initialization,
|
||||
* because this is done in the combinatorial map class.
|
||||
*/
|
||||
Dart_without_info()
|
||||
|
|
@ -300,7 +300,7 @@ namespace CGAL {
|
|||
{ return Base::operator==(other) && minfo==other.minfo; }
|
||||
|
||||
protected:
|
||||
/** Default constructor: no real initialisation,
|
||||
/** Default constructor: no real initialization,
|
||||
* because this is done in the combinatorial or generalized map class.
|
||||
*/
|
||||
Dart()=default; // default => zero-initializing built-in types
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ public:
|
|||
|
||||
#if defined(CGAL_USE_LEDA) || defined(CGAL_USE_CORE)
|
||||
/*
|
||||
The specialised functor for computing the directions of cone boundaries exactly
|
||||
The specialized functor for computing the directions of cone boundaries exactly
|
||||
with a given cone number and a given initial direction.
|
||||
*/
|
||||
template <>
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ protected:
|
|||
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
|
||||
std::sort(S.begin (), S.end (), orderD1);
|
||||
|
||||
// Step 2: Initialise an empty set to store vertices sorted by orderD2
|
||||
// Step 2: initialize an empty set to store vertices sorted by orderD2
|
||||
typedef CGAL::ThetaDetail::Plane_scan_tree<typename Graph_::vertex_descriptor,
|
||||
typename Graph_::vertex_descriptor,
|
||||
Less_by_direction,
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ protected:
|
|||
std::vector<typename Graph_::vertex_descriptor> S(vit, ve);
|
||||
std::sort(S.begin (), S.end (), orderD1);
|
||||
|
||||
// Step 2: Initialise an empty set to store vertices sorted by orderD2
|
||||
// Step 2: initialize an empty set to store vertices sorted by orderD2
|
||||
Point_set pst(orderD2);
|
||||
|
||||
// Step 3: visit S in orderD1
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ std::string gnuplot_vertex_list (const Graph& g);
|
|||
|
||||
/* This struct is defined to use partial specialization to generate arrow styles differently for
|
||||
* directed and undirected graphs.
|
||||
* Note: Need to use structs because C++ before 11 doesn't allow partial specialisation
|
||||
* Note: Need to use structs because C++ before 11 doesn't allow partial specialization
|
||||
* for functions
|
||||
*/
|
||||
template <typename Graph, typename Directedness=typename Graph::directed_selector>
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -17,7 +17,7 @@ configuration.
|
|||
create <B>a single executable</B> for 'source' linked with
|
||||
compilations of all other source files
|
||||
(`*.cc`, `*.cp`, `*.cxx`, `*.cpp`, `*.CPP`, `*.c++`, or `*.C`).
|
||||
This behaviour is usually needed for (graphical) demos.
|
||||
This behavior is usually needed for (graphical) demos.
|
||||
|
||||
If the parameter is not given, the script creates <B>one executable for each given
|
||||
source file</B>.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ also avoid CMake to link with the native threads support library on your system.
|
|||
|
||||
Much of the \cgal code contains assert statements for preconditions, and postconditions of functions
|
||||
as well as in the code. These assertions can be switched on and off per package
|
||||
and the user can change the error behaviour. For details see Section \ref secchecks
|
||||
and the user can change the error behavior. For details see Section \ref secchecks
|
||||
of Chapter \ref Chapter_STL_Extensions_for_CGAL.
|
||||
|
||||
\section Preliminaries_flags Compile-time Flags to Control Inlining
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ supporting C++17 or later.
|
|||
| | `Clang` \cgalFootnote{<A HREF="https://clang.llvm.org/">\cgalFootnoteCode{https://clang.llvm.org/}</A>} compiler version 15.0.7 |
|
||||
| \ms Windows | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
|
||||
| | \ms Visual `C++` 15.9, 16.10, 17.0 (\visualstudio 2017, 2019, and 2022)\cgalFootnote{<A HREF="https://visualstudio.microsoft.com/">\cgalFootnoteCode{https://visualstudio.microsoft.com/}</A>} |
|
||||
| MacOS X | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
|
||||
| macOS | \gnu `g++` 11.4.0 or later\cgalFootnote{<A HREF="https://gcc.gnu.org/">\cgalFootnoteCode{https://gcc.gnu.org/}</A>} |
|
||||
| | Apple `Clang` compiler versions 10.0.1, 12.0.5, and 15.0.0 |
|
||||
|
||||
<!-- Windows supported version are also listed on windows.html (must change both) -->
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ An example of a raster image with a rainbow ramp representing height
|
|||
is given in \cgalFigureRef{TutorialGISFigRastering}.
|
||||
|
||||
\cgalFigureBegin{TutorialGISFigRastering, raster.jpg}
|
||||
Raster visualisation of height using a rainbow ramp, ranging from
|
||||
Raster visualization of height using a rainbow ramp, ranging from
|
||||
light blue for low values to dark red for high values.
|
||||
\cgalFigureEnd
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ other contexts can be done by obtaining a commercial license from
|
|||
[GeometryFactory](https://www.geometryfactory.com). For more details
|
||||
see the \ref license "License" page.
|
||||
|
||||
<h2>Acknowledgement</h2>
|
||||
<h2>Acknowledgment</h2>
|
||||
|
||||
We provide bibtex entries for each package so that you can cite \cgal correctly in your publications,
|
||||
see the page \ref how_to_cite_cgal.
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@
|
|||
}
|
||||
|
||||
@techreport{a-am3sa-91
|
||||
, author = "C. Aarmstrong"
|
||||
, author = "C. Armstrong"
|
||||
, title = "Abstraction and meshing of 3d stress analysis models"
|
||||
, type = "Progress Report"
|
||||
, institution = "SERC Directorate"
|
||||
|
|
@ -7875,7 +7875,7 @@ cell neighborhood in $O(m)$ time."
|
|||
|
||||
@article{ah-epmfc-77
|
||||
, author = "K. Appel and W. Haken"
|
||||
, title = "Every planar map is four colourable, Part {I}: discharging"
|
||||
, title = "Every planar map is four colorable, Part {I}: discharging"
|
||||
, journal = "Illinois J. Math."
|
||||
, volume = 21
|
||||
, year = 1977
|
||||
|
|
@ -9513,7 +9513,7 @@ sites with respect to the geodesic metric within a simple $n$-sided polygon."
|
|||
, number = 1
|
||||
, year = 1993
|
||||
, pages = "27--35"
|
||||
, keywords = "polygon, triagulation"
|
||||
, keywords = "polygon, triangulation"
|
||||
, update = "95.05 korneenko"
|
||||
}
|
||||
|
||||
|
|
@ -28105,7 +28105,7 @@ determinants."
|
|||
}
|
||||
|
||||
@inproceedings{b-afvab-91
|
||||
, author = "B. Bruenning"
|
||||
, author = "L. Bruenning"
|
||||
, title = "Air Force Vulnerability Analyses from {BRL-CAD} models"
|
||||
, booktitle = "Proc. BRL-CAD Symposium `91"
|
||||
, publisher = "American Defense Preparadness Assoc."
|
||||
|
|
@ -42334,7 +42334,7 @@ Contains C code."
|
|||
, pages = "122--128"
|
||||
, annote = "Describes some choices for data structures for
|
||||
representing a triangulation, and methods for
|
||||
point-location, edge-neighbour and vertex-neighbour
|
||||
point-location, edge-neighbor and vertex-neighbor
|
||||
problems."
|
||||
}
|
||||
|
||||
|
|
@ -48823,7 +48823,7 @@ library."
|
|||
|
||||
@article{d-cpcp-89
|
||||
, author = "Z. Drezner"
|
||||
, title = "Conditional $p$-centre problems"
|
||||
, title = "Conditional $p$-center problems"
|
||||
, journal = "Transp. Sci."
|
||||
, volume = 23
|
||||
, number = 1
|
||||
|
|
@ -52672,13 +52672,14 @@ library."
|
|||
, pages = "259--277"
|
||||
}
|
||||
|
||||
@article{es-nfnpp-?
|
||||
@article{es-nfnpp-89
|
||||
, author = "H. Edelsbrunner and Steven S. Skiena"
|
||||
, title = "On the number of furthest neighbour pairs in a point set"
|
||||
, journal = "Amer. Math. Monthly"
|
||||
, volume = "?"
|
||||
, year = "?"
|
||||
, pages = "?"
|
||||
, volume = "96"
|
||||
, number = "7"
|
||||
, year = "1989"
|
||||
, pages = "614--618"
|
||||
, keywords = "pointset, furthest pair"
|
||||
, succeeds = "es-nfnpp-86"
|
||||
, update = "98.03 mitchell, 95.09 korneenko"
|
||||
|
|
@ -52692,7 +52693,7 @@ library."
|
|||
, institution = "Dept. Comput. Sci., Univ. Illinois"
|
||||
, address = "Urbana, IL"
|
||||
, year = 1986
|
||||
, precedes = "es-nfnpp-?"
|
||||
, precedes = "es-nfnpp-89"
|
||||
, update = "98.03 mitchell, 95.09 korneenko"
|
||||
}
|
||||
|
||||
|
|
@ -58899,7 +58900,7 @@ reflection formula and derives a surprising relationship between them."
|
|||
|
||||
@inproceedings{fs-erqnn-95
|
||||
, author = "Robin Y. Flatland and Charles V. Stewart"
|
||||
, title = "Extending Range Queries and Nearest Neighbours"
|
||||
, title = "Extending Range Queries and Nearest Neighbors"
|
||||
, booktitle = "Proc. 7th Canad. Conf. Comput. Geom."
|
||||
, year = 1995
|
||||
, pages = "267--272"
|
||||
|
|
@ -58908,7 +58909,7 @@ reflection formula and derives a surprising relationship between them."
|
|||
|
||||
@article{fs-erqnn-00
|
||||
, author = "R. Y. Flatland and C. V. Stewart"
|
||||
, title = "Extending range queries and nearest neighbours"
|
||||
, title = "Extending range queries and nearest neighbors"
|
||||
, journal = "Comput. Geom. Theory Appl."
|
||||
, volume = 17
|
||||
, year = 2000
|
||||
|
|
@ -61110,7 +61111,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not
|
|||
, volume = 23
|
||||
, year = 1977
|
||||
, pages = "111--121"
|
||||
, annote = "Uses Least Diagonal Neighbour Triangulation and Linear
|
||||
, annote = "Uses Least Diagonal Neighbor Triangulation and Linear
|
||||
approximation over triangles to weighted VD to estimate
|
||||
area of weighted VD polygon of a given tree."
|
||||
}
|
||||
|
|
@ -65127,7 +65128,7 @@ Complete thesis available only on microfilm from Harvard, since Harvard did not
|
|||
, title = "A computational theoretic framework for {Minkowski} addition and decomposition of boundary represented regions"
|
||||
, type = "Report"
|
||||
, number = "??"
|
||||
, institution = "National Centre Softw. Develop. Comput. Tech., Tata Inst. Fund. Res."
|
||||
, institution = "National Centre for Softw. Develop. and Comput. Tech., Tata Inst. of Fund. Res."
|
||||
, address = "Bombay, India"
|
||||
, year = 1985
|
||||
}
|
||||
|
|
@ -70200,7 +70201,7 @@ cos, etc."
|
|||
|
||||
@article{g-pcief-92
|
||||
, author = "S. Guha"
|
||||
, title = "Parallel computation of internal and external farthest neighbours in simple polygons"
|
||||
, title = "Parallel computation of internal and external farthest neighbors in simple polygons"
|
||||
, journal = "Internat. J. Comput. Geom. Appl."
|
||||
, volume = 2
|
||||
, number = 2
|
||||
|
|
@ -76237,7 +76238,7 @@ processing. Contains C code."
|
|||
|
||||
@inproceedings{hns-saann-88
|
||||
, author = "K. Hinrichs and J. Nievergelt and P. Schorn"
|
||||
, title = "A sweep algorithm for the all-nearest-neighbours problem"
|
||||
, title = "A sweep algorithm for the all-nearest-neighbors problem"
|
||||
, booktitle = "Computational Geometry and its Applications"
|
||||
, nickname = "CG '88"
|
||||
, site = "W{\"u}rzburg"
|
||||
|
|
@ -76264,7 +76265,7 @@ processing. Contains C code."
|
|||
|
||||
@inproceedings{hns-arsa2-90
|
||||
, author = "K. Hinrichs and J. Nievergelt and P. Schorn"
|
||||
, title = "An all-round sweep algorithm for $2$-dimensional nearest-neighbour problems"
|
||||
, title = "An all-round sweep algorithm for $2$-dimensional nearest-neighbor problems"
|
||||
, booktitle = "Proc. 2nd Canad. Conf. Comput. Geom."
|
||||
, year = 1990
|
||||
, pages = "343--346"
|
||||
|
|
@ -101937,7 +101938,7 @@ used in many computational geometry algorithms. Contains C++ code."
|
|||
|
||||
@inproceedings{mp-drlvd-84
|
||||
, author = "T. Matsuyama and T. Phillips"
|
||||
, title = "Digital Realization of the Labelled {Voronoi} Diagram and its Application to Closed Boundary Detection"
|
||||
, title = "Digital Realization of the Labeled {Voronoi} Diagram and its Application to Closed Boundary Detection"
|
||||
, booktitle = "Proc. IEEE Internat. Conf. Pattern Recogn."
|
||||
, year = 1984
|
||||
, pages = "478--480"
|
||||
|
|
@ -102354,7 +102355,7 @@ used in many computational geometry algorithms. Contains C++ code."
|
|||
, title = "Priority search trees"
|
||||
, type = "Technical {Report}"
|
||||
, number = "CSL-81-5"
|
||||
, institution = "XEROX Palo Alto Research Centre"
|
||||
, institution = "XEROX Palo Alto Research Center"
|
||||
, address = "Palo Alto, CA"
|
||||
, year = 1981
|
||||
, update = "97.11 bibrelex"
|
||||
|
|
@ -108313,7 +108314,7 @@ problems in computational geometry is presented."
|
|||
|
||||
@inproceedings{mnsw-cnnsq-95
|
||||
, author = "David M. Mount and Nathan S. Netanyahu and Ruth Silverman and Angela Y. Wu"
|
||||
, title = "Chromatic Nearest Neighbour Searching: a Query Sensitive Approach"
|
||||
, title = "Chromatic Nearest Neighbor Searching: a Query Sensitive Approach"
|
||||
, booktitle = "Proc. 7th Canad. Conf. Comput. Geom."
|
||||
, year = 1995
|
||||
, pages = "261--266"
|
||||
|
|
@ -108323,7 +108324,7 @@ problems in computational geometry is presented."
|
|||
|
||||
@article{mnsw-cnnsq-00
|
||||
, author = "David M. Mount and Nathan S. Netanyahu and Ruth Silverman and Angela Y. Wu"
|
||||
, title = "Chromatic Nearest Neighbour Searching: a Query Sensitive Approach"
|
||||
, title = "Chromatic Nearest Neighbor Searching: a Query Sensitive Approach"
|
||||
, journal = "Comput. Geom. Theory Appl."
|
||||
, volume = 17
|
||||
, year = 2000
|
||||
|
|
@ -109256,7 +109257,7 @@ problems in computational geometry is presented."
|
|||
, update = "95.01 korneenko"
|
||||
, annote = "Exposition of author's research in CGeo \& CTop in
|
||||
three directions: geometric modelling algorithms via partition
|
||||
of unity; discrete analogue of the index of vector field
|
||||
of unity; discrete analog of the index of vector field
|
||||
rotation for singular point and separatrix search; distance
|
||||
functions and shortest paths on metric spaces."
|
||||
}
|
||||
|
|
@ -116182,7 +116183,7 @@ dither and stipple patterns."
|
|||
|
||||
@techreport{plvt-edecl-96
|
||||
, author = "P. Parodi and R. Lancewicki and A. Vijh and J. K. Tsotsos"
|
||||
, title = "Empirically-derived Estimates of the Complexity of Labelling Line Drawings of Polyhedral Scenes"
|
||||
, title = "Empirically-derived Estimates of the Complexity of Labeling Line Drawings of Polyhedral Scenes"
|
||||
, number = "RBCV-TR-96-52"
|
||||
, institution = "Dept. Comput. Sci., Univ. Toronto"
|
||||
, address = "Toronto, ON"
|
||||
|
|
@ -116759,7 +116760,7 @@ dither and stipple patterns."
|
|||
|
||||
@article{p-rflg-72
|
||||
, author = "T. Pavlidis"
|
||||
, title = "Representation of figures by labelled graphs"
|
||||
, title = "Representation of figures by labeled graphs"
|
||||
, journal = "Pattern Recogn."
|
||||
, volume = 4
|
||||
, year = 1972
|
||||
|
|
@ -133233,7 +133234,7 @@ Contains C code."
|
|||
|
||||
@incollection{s-bdnni-81
|
||||
, author = "R. Sibson"
|
||||
, title = "A Brief Description of Natural Neighbour Interpolation"
|
||||
, title = "A Brief Description of Natural Neighbor Interpolation"
|
||||
, editor = "Vic Barnet"
|
||||
, booktitle = "Interpreting Multivariate Data"
|
||||
, publisher = "John Wiley \& Sons"
|
||||
|
|
@ -133630,7 +133631,7 @@ Contains C code."
|
|||
|
||||
@inproceedings{sc-aipta-86
|
||||
, author = "J. K. Sircar and J. A. Cerbrian"
|
||||
, title = "Application of image processing techniques to the automated labelling of raster digitized contours"
|
||||
, title = "Application of image processing techniques to the automated labeling of raster digitized contours"
|
||||
, booktitle = "Proc. 2nd Internat. Sympos. Spatial Data Handling"
|
||||
, year = 1986
|
||||
, pages = "171--184"
|
||||
|
|
@ -141509,7 +141510,7 @@ of geometric optics."
|
|||
|
||||
@incollection{ty-vrndt-88
|
||||
, author = "J. Toriwaki and S. Yokoi"
|
||||
, title = "Voronoi and related neighbours on digitized two-dimensional space with applications to texture analysis"
|
||||
, title = "Voronoi and related neighbors on digitized two-dimensional space with applications to texture analysis"
|
||||
, editor = "G. T. Toussaint"
|
||||
, booktitle = "Computational Morphology"
|
||||
, publisher = "North-Holland"
|
||||
|
|
@ -151991,7 +151992,7 @@ month = {jun},
|
|||
articleno = {156},
|
||||
numpages = {14},
|
||||
keywords = {polygonal surface mesh, Surface reconstruction, kinetic framework, surface approximation}
|
||||
}
|
||||
}
|
||||
|
||||
@article{levismooth,
|
||||
title={Smooth Rotation Enhanced As-Rigid-As-Possible Mesh Animation},
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
var current_version_local = 'master'
|
||||
var all_versions = [
|
||||
'master',
|
||||
'6.0',
|
||||
'6.0.1',
|
||||
'latest',
|
||||
'5.6.1',
|
||||
'5.5.4',
|
||||
'5.6.2',
|
||||
'5.5.5',
|
||||
'5.4.5',
|
||||
'5.3.2',
|
||||
'5.2.4',
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
var current_version_local = 'master'
|
||||
var all_versions = [
|
||||
'master',
|
||||
'6.0',
|
||||
'6.0.1',
|
||||
'latest',
|
||||
'5.6.1',
|
||||
'5.5.4',
|
||||
'5.6.2',
|
||||
'5.5.5',
|
||||
'5.4.5',
|
||||
'5.3.2',
|
||||
'5.2.4',
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
var current_version_local = 'master'
|
||||
var all_versions = [
|
||||
'master',
|
||||
'6.0',
|
||||
'6.0.1',
|
||||
'latest',
|
||||
'5.6.1',
|
||||
'5.5.4',
|
||||
'5.6.2',
|
||||
'5.5.5',
|
||||
'5.4.5',
|
||||
'5.3.2',
|
||||
'5.2.4',
|
||||
|
|
|
|||
|
|
@ -111,14 +111,24 @@ template<class T>inline std::enable_if_t<std::is_empty<T>::value, T> approx(T){r
|
|||
template<class T>inline std::enable_if_t<std::is_empty<T>::value, int> depth(T){return -1;}
|
||||
|
||||
namespace internal{
|
||||
template <typename AT, typename ET, typename E2A>
|
||||
struct Evaluate<Lazy<AT,ET,E2A>>
|
||||
{
|
||||
void operator()(const Lazy<AT,ET,E2A>& l)
|
||||
|
||||
template <typename AT, typename ET, typename E2A>
|
||||
struct Evaluate<Lazy<AT, ET, E2A>>
|
||||
{
|
||||
exact(l);
|
||||
}
|
||||
void operator()(const Lazy<AT, ET, E2A>& l)
|
||||
{
|
||||
exact(l);
|
||||
}
|
||||
};
|
||||
|
||||
template <typename ET>
|
||||
struct Evaluate<Lazy_exact_nt<ET>>
|
||||
{
|
||||
void operator()(const Lazy_exact_nt<ET>& l)
|
||||
{
|
||||
exact(l);
|
||||
}
|
||||
};
|
||||
} // internal namespace
|
||||
|
||||
// For an iterator, exact/approx applies to the objects it points to
|
||||
|
|
@ -1377,7 +1387,7 @@ struct Ith {
|
|||
typedef T2 result_type;
|
||||
|
||||
// We keep a Sign member object
|
||||
// for future utilisation, in case
|
||||
// for future utilization, in case
|
||||
// we have pairs of 2 T2 objects e.g.
|
||||
// for a numeric_point vector returned
|
||||
// from a construction of a possible
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ namespace CGAL {
|
|||
* - GMap_cell_iterator<Map,i,dim>: one dart per each i-cell
|
||||
* - GMap_one_dart_per_incident_cell_iterator<Map,Ite,i,dim>
|
||||
* - GMap_one_dart_per_cell_iterator<Map,Ite,i,dim>
|
||||
* - one specialisation of the CMap_cell_iterator for the
|
||||
* - one specialization of the CMap_cell_iterator for the
|
||||
* GMap_dart_iterator_basic_of_all iterator
|
||||
*/
|
||||
|
||||
|
|
|
|||
|
|
@ -249,7 +249,7 @@ namespace CGAL {
|
|||
class GMap_dart_iterator_basic_of_two_alpha;
|
||||
/* Class CMap_dart_iterator_basic_of_two_alpha<Ai,1>: to iterate
|
||||
* on the darts of the orbit <Ai,Ai+1>: Ai<Ai+1<=dimension.
|
||||
* specialisation because here Aio(Ai+1) is not an involution.
|
||||
* specialization because here Aio(Ai+1) is not an involution.
|
||||
* Basic classes do not guaranty correct marks (i.e. do not unmark darts in
|
||||
* the destructor, possible problem with the rewind). If you are not sure,
|
||||
* use CMap_dart_iterator_basic_of_two_alpha.
|
||||
|
|
|
|||
|
|
@ -568,7 +568,7 @@ namespace CGAL {
|
|||
}
|
||||
|
||||
/** Create a new dart and add it to the map.
|
||||
* The marks of the darts are initialised with mmask_marks, i.e. the dart
|
||||
* The marks of the darts are initialized with mmask_marks, i.e. the dart
|
||||
* is unmarked for all the marks.
|
||||
* @return a Dart_descriptor on the new dart.
|
||||
*/
|
||||
|
|
@ -2946,6 +2946,9 @@ namespace CGAL {
|
|||
this->automatic_attributes_management = newval;
|
||||
}
|
||||
|
||||
void set_automatic_attributes_management_without_correction(bool newval)
|
||||
{ this->automatic_attributes_management = newval; }
|
||||
|
||||
/** Create an half-edge.
|
||||
* @return a dart of the new half-edge.
|
||||
*/
|
||||
|
|
@ -3352,7 +3355,7 @@ namespace CGAL {
|
|||
}
|
||||
if (ah != null_descriptor)
|
||||
{
|
||||
// We initialise the 0-atttrib to ah
|
||||
// We initialize the 0-atttrib to ah
|
||||
CGAL::internal::Set_i_attribute_of_dart_functor<Self, 0>::
|
||||
run(*this, d1, ah);
|
||||
mark(*it, amark);
|
||||
|
|
@ -3471,7 +3474,7 @@ namespace CGAL {
|
|||
<CGAL::internal::GMap_group_attribute_functor_of_dart<Self>, 0>::
|
||||
run(*this,d1,d2);
|
||||
|
||||
// We initialise the 0-atttrib to ah
|
||||
// We initialize the 0-atttrib to ah
|
||||
CGAL::internal::Set_i_attribute_of_dart_functor<Self, 0>::
|
||||
run(*this, d2, ah);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ namespace CGAL
|
|||
{
|
||||
static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart)
|
||||
{
|
||||
// TODO? Optimisation for dim-2, and to not test all the darts of the cell?
|
||||
// TODO? Optimization for dim-2, and to not test all the darts of the cell?
|
||||
bool res = true;
|
||||
for ( CGAL::GMap_dart_const_iterator_of_cell<GMap,i> it(amap, adart);
|
||||
res && it.cont(); ++it )
|
||||
|
|
@ -258,7 +258,7 @@ namespace CGAL
|
|||
{
|
||||
static bool run(const GMap& amap, typename GMap::Dart_const_descriptor adart)
|
||||
{
|
||||
// TODO ? Optimisation possible to not test all the darts of the cell ?
|
||||
// TODO ? Optimization possible to not test all the darts of the cell ?
|
||||
bool res = true;
|
||||
for ( CGAL::GMap_dart_const_iterator_of_cell<GMap,i> it(amap, adart);
|
||||
res && it.cont(); ++it )
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ a <I>state</I> that uniquely determines the subsequent numbers being
|
|||
produced.
|
||||
|
||||
It can be very useful, e.g. for debugging, to reproduce a sequence of
|
||||
random numbers. This can be done by either initialising with a fixed
|
||||
random numbers. This can be done by either initializing with a fixed
|
||||
seed, or by using the state functions as described below.
|
||||
|
||||
\note A `Random` object is not deterministic when used by several threads at
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public:
|
|||
const double& size() const { return second; }
|
||||
const double& sine() const { return first; }
|
||||
|
||||
// q1<q2 means q1 is prioritised over q2
|
||||
// q1<q2 means q1 is prioritized over q2
|
||||
// ( q1 == *this, q2 == q )
|
||||
bool operator<(const Quality& q) const
|
||||
{
|
||||
|
|
|
|||
|
|
@ -59,6 +59,11 @@ public:
|
|||
public Q_SLOTS:
|
||||
void processInput(CGAL::Object o);
|
||||
|
||||
void setZValue(int z)
|
||||
{
|
||||
pi->setZValue(z);
|
||||
}
|
||||
|
||||
typedef CGAL::Polygon_2<K> Polygon;
|
||||
typedef CGAL::Polygon_with_holes_2<K> Polygon_with_holes;
|
||||
|
||||
|
|
@ -89,6 +94,7 @@ GraphicsViewPolygonWithHolesInput<K>::GraphicsViewPolygonWithHolesInput(QObject
|
|||
{
|
||||
pwhItem = new CGAL::Qt::PolygonWithHolesGraphicsItem<Polygon_with_holes>(&pwh);
|
||||
pwhItem->setBrush(::Qt::yellow);
|
||||
pwhItem->setZValue(8);
|
||||
scene_->addItem(pwhItem);
|
||||
pwhItem->hide();
|
||||
|
||||
|
|
|
|||
|
|
@ -50,6 +50,11 @@ public:
|
|||
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
void setZValue(int v)
|
||||
{
|
||||
z = v;
|
||||
}
|
||||
|
||||
protected:
|
||||
// protected constructor
|
||||
GraphicsViewPolylineInput_non_templated_base(QObject* parent,
|
||||
|
|
@ -80,6 +85,7 @@ private:
|
|||
int n_;
|
||||
QPointF sp;
|
||||
QGraphicsScene *scene_;
|
||||
int z;
|
||||
}; // end class GraphicsViewPolylineInput_non_templated_base
|
||||
|
||||
template <typename K>
|
||||
|
|
|
|||
|
|
@ -82,6 +82,7 @@ GraphicsViewPolylineInput_non_templated_base::mousePressEvent(QGraphicsSceneMous
|
|||
qpp.addPolygon(polygon);
|
||||
path_item = new QGraphicsPathItem(qpp);
|
||||
path_item->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
|
||||
path_item->setZValue(z);
|
||||
scene_->addItem(path_item);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -98,11 +99,13 @@ GraphicsViewPolylineInput_non_templated_base::rubberbands(const QPointF& p)
|
|||
}
|
||||
if(!b && closed_ ){
|
||||
b = new QGraphicsLineItem();
|
||||
b->setZValue(z);
|
||||
b->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
|
||||
scene_->addItem(b);
|
||||
}
|
||||
if( !e){
|
||||
e = new QGraphicsLineItem();
|
||||
e->setZValue(z);
|
||||
e->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
|
||||
scene_->addItem(e);
|
||||
}
|
||||
|
|
@ -165,6 +168,7 @@ GraphicsViewPolylineInput_non_templated_base::keyPressEvent ( QKeyEvent * event
|
|||
QPainterPath qpp;
|
||||
qpp.addPolygon(polygon);
|
||||
path_item = new QGraphicsPathItem(qpp);
|
||||
path_item->setZValue(z);
|
||||
path_item->setPen(QPen(::Qt::red, 0, ::Qt::SolidLine, ::Qt::RoundCap, ::Qt::RoundJoin));
|
||||
scene_->addItem(path_item);
|
||||
rubberbands(sp);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,235 @@
|
|||
// Copyright (c) 2024 GeometryFactory Sarl (France).
|
||||
// All rights reserved.
|
||||
//
|
||||
// This file is part of CGAL (www.cgal.org).
|
||||
//
|
||||
// $URL$
|
||||
// $Id$
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial
|
||||
//
|
||||
//
|
||||
// Author(s) : Andreas Fabri <Andreas.Fabri@geometryfactory.com>
|
||||
// Laurent Rineau <Laurent.Rineau@geometryfactory.com>
|
||||
|
||||
#ifndef CGAL_QT_MULTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
|
||||
#define CGAL_QT_MULTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
|
||||
|
||||
#include <CGAL/license/GraphicsView.h>
|
||||
|
||||
|
||||
#include <CGAL/Bbox_2.h>
|
||||
#include <CGAL/Multipolygon_with_holes_2.h>
|
||||
#include <CGAL/Qt/PainterOstream.h>
|
||||
#include <CGAL/Qt/GraphicsItem.h>
|
||||
#include <CGAL/Qt/Converter.h>
|
||||
#include <QGraphicsScene>
|
||||
#include <QPainter>
|
||||
#include <QStyleOption>
|
||||
|
||||
namespace CGAL {
|
||||
namespace Qt {
|
||||
|
||||
template <typename P>
|
||||
class MultipolygonWithHolesGraphicsItem : public GraphicsItem
|
||||
{
|
||||
typedef typename P::Traits Traits;
|
||||
public:
|
||||
MultipolygonWithHolesGraphicsItem(P* p_);
|
||||
|
||||
void modelChanged();
|
||||
|
||||
public:
|
||||
QRectF boundingRect() const;
|
||||
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
||||
|
||||
|
||||
const QBrush& brush() const
|
||||
{
|
||||
return brush_;
|
||||
}
|
||||
|
||||
|
||||
void setBrush(const QBrush& b)
|
||||
{
|
||||
brush_ = b;
|
||||
}
|
||||
|
||||
const QPen& verticesPen() const
|
||||
{
|
||||
return vertices_pen;
|
||||
}
|
||||
|
||||
const QPen& edgesPen() const
|
||||
{
|
||||
return edges_pen;
|
||||
}
|
||||
|
||||
void setVerticesPen(const QPen& pen)
|
||||
{
|
||||
vertices_pen = pen;
|
||||
}
|
||||
|
||||
void setEdgesPen(const QPen& pen)
|
||||
{
|
||||
edges_pen = pen;
|
||||
}
|
||||
|
||||
bool drawVertices() const
|
||||
{
|
||||
return draw_vertices;
|
||||
}
|
||||
|
||||
void setDrawVertices(const bool b)
|
||||
{
|
||||
draw_vertices = b;
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
void updateBoundingBox();
|
||||
|
||||
P * poly;
|
||||
QPainter* m_painter;
|
||||
PainterOstream<Traits> painterostream;
|
||||
|
||||
typename Traits::Point_2 p;
|
||||
QRectF bounding_rect;
|
||||
|
||||
QBrush brush_;
|
||||
QPen vertices_pen;
|
||||
QPen edges_pen;
|
||||
bool draw_vertices;
|
||||
};
|
||||
|
||||
|
||||
template <typename P>
|
||||
MultipolygonWithHolesGraphicsItem<P>::MultipolygonWithHolesGraphicsItem(P * p_)
|
||||
: poly(p_), painterostream(0),
|
||||
draw_vertices(true)
|
||||
{
|
||||
setVerticesPen(QPen(::Qt::red, 3.));
|
||||
if(poly->number_of_polygons_with_holes() == 0){
|
||||
this->hide();
|
||||
}
|
||||
updateBoundingBox();
|
||||
setZValue(0);
|
||||
}
|
||||
|
||||
template <typename P>
|
||||
QRectF
|
||||
MultipolygonWithHolesGraphicsItem<P>::boundingRect() const
|
||||
{
|
||||
return bounding_rect;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
template <typename P>
|
||||
void
|
||||
MultipolygonWithHolesGraphicsItem<P>::paint(QPainter *painter,
|
||||
const QStyleOptionGraphicsItem * /*option*/,
|
||||
QWidget * /*widget*/)
|
||||
{
|
||||
using Polygon_with_holes_2 = typename P::Polygon_with_holes_2;
|
||||
using General_polygon_2 = typename Polygon_with_holes_2::General_polygon_2;
|
||||
Converter<Traits> convert;
|
||||
|
||||
for(const auto& pwh : poly->polygons_with_holes()){
|
||||
QPainterPath border;
|
||||
General_polygon_2 boundary = pwh.outer_boundary();
|
||||
painter->setPen(this->edgesPen());
|
||||
|
||||
typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
|
||||
QPointF firstPoint = convert(*it);
|
||||
border.moveTo(firstPoint);
|
||||
painterostream = PainterOstream<Traits>(painter);
|
||||
|
||||
for(++it;
|
||||
it != pwh.outer_boundary().vertices_end();
|
||||
++it){
|
||||
border.lineTo(convert(*it));
|
||||
}
|
||||
border.lineTo(firstPoint);
|
||||
|
||||
|
||||
for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
|
||||
hit != pwh.holes_end();
|
||||
++hit){
|
||||
typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
|
||||
QPointF firstPoint = convert(*it);
|
||||
border.moveTo(firstPoint);
|
||||
for(++it;
|
||||
it != hit->vertices_end();
|
||||
++it){
|
||||
border.lineTo(convert(*it));
|
||||
}
|
||||
border.lineTo(firstPoint);
|
||||
}
|
||||
|
||||
painter->setBrush(this->brush());
|
||||
painter->drawPath(border);
|
||||
}
|
||||
|
||||
|
||||
if(drawVertices()) {
|
||||
painter->setPen(verticesPen());
|
||||
QTransform matrix = painter->worldTransform();
|
||||
painter->resetTransform();
|
||||
|
||||
for(const auto& pwh : poly->polygons_with_holes()){
|
||||
for(typename General_polygon_2::Vertex_iterator it = pwh.outer_boundary().vertices_begin();
|
||||
it != pwh.outer_boundary().vertices_end();
|
||||
it++){
|
||||
QPointF point = matrix.map(convert(*it));
|
||||
painter->drawPoint(point);
|
||||
}
|
||||
for(typename Polygon_with_holes_2::Hole_const_iterator hit = pwh.holes_begin();
|
||||
hit != pwh.holes_end();
|
||||
++hit){
|
||||
for(typename General_polygon_2::Vertex_iterator it = hit->vertices_begin();
|
||||
it != hit->vertices_end();
|
||||
it++){
|
||||
QPointF point = matrix.map(convert(*it));
|
||||
painter->drawPoint(point);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We let the bounding box only grow, so that when vertices get removed
|
||||
// the maximal bbox gets refreshed in the GraphicsView
|
||||
template <typename P>
|
||||
void
|
||||
MultipolygonWithHolesGraphicsItem<P>::updateBoundingBox()
|
||||
{
|
||||
Converter<Traits> convert;
|
||||
prepareGeometryChange();
|
||||
if(poly->number_of_polygons_with_holes() == 0){
|
||||
return;
|
||||
}
|
||||
bounding_rect = convert(poly->bbox());
|
||||
}
|
||||
|
||||
|
||||
template <typename P>
|
||||
void
|
||||
MultipolygonWithHolesGraphicsItem<P>::modelChanged()
|
||||
{
|
||||
if((poly->number_of_polygons_with_holes() == 0) ){
|
||||
this->hide();
|
||||
} else if((poly->number_of_polygons_with_holes() > 0) && (! this->isVisible())){
|
||||
this->show();
|
||||
}
|
||||
updateBoundingBox();
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
} // namespace Qt
|
||||
} // namespace CGAL
|
||||
|
||||
#endif // CGAL_QT_MYLTIPOLYGON_WITH_HOLES_GRAPHICS_ITEM_H
|
||||
|
|
@ -1225,7 +1225,7 @@ Vec Camera::pivotPoint() const { return frame()->pivotPoint(); }
|
|||
/*! Sets the Camera's position() and orientation() from an OpenGL ModelView
|
||||
matrix.
|
||||
|
||||
This enables a Camera initialisation from an other OpenGL application. \p
|
||||
This enables a Camera initialization from an other OpenGL application. \p
|
||||
modelView is a 16 GLdouble vector representing a valid OpenGL ModelView matrix,
|
||||
such as one can get using: \code GLdouble mvm[16];
|
||||
glGetDoublev(GL_MODELVIEW_MATRIX, mvm);
|
||||
|
|
|
|||
|
|
@ -270,13 +270,11 @@ private Q_SLOTS:
|
|||
/*! @name Mouse event handlers */
|
||||
//@{
|
||||
protected:
|
||||
virtual void mousePressEvent(QMouseEvent *const event, Camera *const camera);
|
||||
virtual void mouseMoveEvent(QMouseEvent *const event, Camera *const camera);
|
||||
virtual void mouseReleaseEvent(QMouseEvent *const event,
|
||||
Camera *const camera);
|
||||
virtual void mouseDoubleClickEvent(QMouseEvent *const event,
|
||||
Camera *const camera);
|
||||
virtual void wheelEvent(QWheelEvent *const event, Camera *const camera);
|
||||
void mousePressEvent (QMouseEvent *const event, Camera *const camera) override;
|
||||
void mouseMoveEvent (QMouseEvent *const event, Camera *const camera) override;
|
||||
void mouseReleaseEvent (QMouseEvent *const event, Camera *const camera) override;
|
||||
void mouseDoubleClickEvent(QMouseEvent *const event, Camera *const camera) override;
|
||||
void wheelEvent(QWheelEvent *const event, Camera *const camera) override;
|
||||
//@}
|
||||
|
||||
public:
|
||||
|
|
@ -299,7 +297,7 @@ public:
|
|||
/*! @name MouseGrabber implementation */
|
||||
//@{
|
||||
public:
|
||||
virtual void checkIfGrabsMouse(int x, int y, const Camera *const camera);
|
||||
void checkIfGrabsMouse(int x, int y, const Camera *const camera) override;
|
||||
//@}
|
||||
|
||||
#ifndef DOXYGEN
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue