Commit Graph

188 Commits

Author SHA1 Message Date
Mael Rouxel-Labbé 26c857a431 Moved unary/binary_function to CGAL::cpp98 2018-06-13 15:58:19 +02:00
Andreas Fabri c54a6a4980 Put CGAL::random_shuffle() in the subnamespace cpp98 2018-04-11 09:32:23 +01:00
Andreas Fabri 063a91a771 Use CGAL::random_shuffle 2018-04-04 14:00:23 +01:00
Sébastien Loriot 483f69728e Refresh branch 2018-02-12 22:21:38 +01:00
Simon Giraudot 6269309d86 Use CGAL include for boost counting/transform iterators everywhere 2018-01-23 11:09:52 +01:00
Andreas Fabri 341d2bb249 Segment_voronoi 2018-01-18 10:27:53 +00:00
Sébastien Loriot ee57fc2d6c add SPDX identifier for files under the GPL-3+ license 2017-11-12 10:17:51 +01:00
Laurent Rineau 8f46324806 Merge pull request #2475 from sgiraudot/Fix_counting_iterator_warning_everywhere-GF
Fix counting iterator warnings
2017-10-11 19:15:15 +02:00
Laurent Rineau 2b35bddfb2 Replace all std::binary_function by CGAL::binary_function 2017-10-04 16:36:32 +02:00
Laurent Rineau 7e9f756935 Replace all std::unary_function by CGAL::unary_function 2017-10-04 15:57:09 +02:00
Simon Giraudot 1e7b9ea027 Fix counting iterator warnings 2017-09-29 14:47:17 +02:00
Mael Rouxel-Labbé e0bdb6a9ac SDG vertex base must define a Point type to satisfy TriangulationVertexBase_2 2017-06-28 10:15:30 +02:00
Andreas Fabri dfb37af958 test dependencies in Mesh_2 2017-04-06 13:16:35 +02:00
Jane Tournois df47a35e67 fix more conversion warnings for msvc 2017 2017-02-14 12:00:05 +01:00
Sébastien Loriot 50510c05ea add include directive for license of all GPL header files
done using:
ack-grep "^GPL" */package_info/*/license.txt -l | awk -F "/" '{print $1}' > /tmp/gpl_packages
for i in `cat /tmp/gpl_packages | \
          grep -v Operations_on_polyhedra | \
          grep -v Algebraic_kernel_for_circles | \
          grep -v Algebraic_kernel_for_spheres | \
          grep -v Polyhedron_IO`;
do
  echo $i
  python Scripts/developer_scripts/add_license_in_pkg_header.py $i
done
python Scripts/developer_scripts/add_license_in_pkg_header.py Operations_on_polyhedra Polygon_mesh_processing
python Scripts/developer_scripts/add_license_in_pkg_header.py Algebraic_kernel_for_circles Circular_kernel_2
python Scripts/developer_scripts/add_license_in_pkg_header.py Algebraic_kernel_for_spheres Circular_kernel_3
python Scripts/developer_scripts/add_license_in_pkg_header.py Polyhedron_IO Polyhedron
2017-01-19 15:20:25 +01:00
Laurent Rineau 9551ca5945 Merge pull request #1623 from lrineau/SDG_2-fix_include-lrineau
Fix a missing #include with -DCGAL_PROFILE
2016-11-03 11:03:33 +01:00
Laurent Rineau 4963de5a27 Fix a missing #include with -DCGAL_PROFILE 2016-10-27 10:28:31 +02:00
Marc Glisse 9f9a201d50 Specify the type for expression templates. 2016-10-21 13:47:00 +02:00
Laurent Rineau 9658e6e1f9 Merge pull request #1591 from afabri/SDG-set_failbit-GF
SDG_2: Set the failbit if the operator>> for Site fails.
2016-10-20 09:47:58 +02:00
Laurent Rineau c826500c7d Merge pull request #1551 from mglisse/Number_types-gmpxx_coercion-glisse
Misc GMPXX fixes
2016-10-20 09:47:39 +02:00
Andreas Fabri 664fb7dd5f set the failbit 2016-10-18 12:32:54 +02:00
Laurent Rineau 038a310a1a Merge pull request #1446 from sloriot/CGAL-remove_dont_submit
Getting rid of the remaining dont_submit files
2016-10-17 10:01:30 +02:00
Laurent Rineau 5bde261394 Merge pull request #1427 from afabri/SDG_2-static-GF
SDG_2: No need for thread local storage as readonly
2016-10-17 10:00:57 +02:00
Marc Glisse 2c31c41529 Specify the type for expression templates. 2016-10-15 19:54:51 +02:00
Andreas Fabri 37c6367058 Forgot to go from error to warning for the hierarchy 2016-10-14 08:40:07 +02:00
Andreas Fabri 27d40d45b0 turn the error in a warning again 2016-10-13 15:41:32 +02:00
Sébastien Loriot 09030a3b02 move to archive and remove replaced header file 2016-10-06 09:53:39 +02:00
Andreas Fabri 40c834a298 Move Filtered_construction from SDG_2 to Filtered_kernel 2016-09-30 15:23:15 +02:00
Andreas Fabri 182fd87426 Produce error message 2016-09-07 09:27:04 +02:00
Andreas Fabri 8d0e4d6d8e no need for static 2016-09-06 17:03:07 +02:00
Andreas Fabri 5de61c882f changes after LR's remarks 2016-09-06 16:01:30 +02:00
Andreas Fabri 6ce1a348f6 get rid of static data 2016-09-06 13:02:04 +02:00
Andreas Fabri 92ba8a3c1e simplify 2016-09-06 12:25:53 +02:00
Andreas Fabri 96ab62cfc1 no need for static tags. They are light weight 2016-09-01 16:20:28 +02:00
Andreas Fabri d44ba8e43e Switch to boost::transform_iterator, as it deals correctly with temporary objects 2016-09-01 12:38:59 +02:00
Andreas Fabri 939de5f680 Make variables thread local or they are const as read only 2016-08-31 16:50:20 +02:00
Sébastien Loriot 7f3772a50b replace the usage of raw pointer as property map
It was deprecated in boost 1.55
http://www.boost.org/users/history/version_1_55_0.html
2016-07-13 13:53:00 +02:00
Andreas Fabri a7d82f70a5 Declare 'SDG_hierarchy_2::nearest_neighbor()' const 2016-02-27 08:19:16 +01:00
Andreas Fabri f68ddb6ee8 Do not use "or" instead of "||" ; Use typedef in testsuite instead of derivation" 2015-04-29 11:58:02 +02:00
Panagiotis Cheilaris aa03af229d use a tag to choose bisector constructions
The SDG traits define a tag named Tag_has_bisector_constructions
that is either Tag_false or Tag_true.

If it is Tag_false, the bisector constructions are the hard-coded
ones from the algorithm (essentially they are the L2 ones).

If it is Tag_true, the bisector constructions are taken from the
traits. This is how the Linf traits are implemented.

This way, we avoid SFINAE.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 1b272060c9 use NULL instead of nullptr in SDG L2 2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 92bda0623c point to insert_point_on_segment with ITag
Point to &Self::insert_point_on_segment only if the traits
support intersection. Otherwise, point to nullptr.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 8cf9a96b45 pointers for insert point on segment functions
Introduce pointers for functions that insert a point on a segment.
For L2, to keep the same functionality as before, the pointers
point to insert_exact_point_on_segment and insert_point_on_segment
functions.

Classes derived from Segment_Delaunay_graph_2 can change the
pointers to point to more specialized functions. For example, the
Linf implementation will point to different specialized function
defined in the Linf class.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 13db2022ce template parameter of SDG graph in SDG hierarchy
Use an additional optional parameter (SDGLx) in the segment
Delaunay hierarchy template to be able to change the segment
Delaunay graph class that is used per level of the hierarchy.
Since this is the last optional parameter, there is no change
for users of the L2 segment Delaunau graph and hierarchy.

This parameter is necessary to support the Linf segment Delaunay
graph and hierarchy. Again, it is intended that the user of the
Linf classes does not have to be aware of this parameter.

Some additional classes are declared as friends of
Segment_Delaunay_graph_2.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 942d44cb99 choose constructions from traits if they exist
If construction templates for bisectors (line, segment, ray)
exist in the traits, then use them, otherwise, use the L2 traits.
The check is implemented by a type Has_bisector_constructions_type
that might be included in the traits and using the
"Substitution failure is not an error" (SFINAE) principle.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris 4bf6a7fc86 more symmetric face finding in split
This is also needed for correct Linf predicates.
2015-04-29 11:58:01 +02:00
Panagiotis Cheilaris c07ae4ba42 general oriented_side to also accomodate Linf
The oriented_side predicate is used with a face corresponding to
the interior of a segment that is split by a vertex contained in
the segment. For an infinite such face the code has to become more
general in order to accomodate the Linf case. For example, in L2
the number of such infinite faces is 0, 2, or 4, whereas in Linf,
it can be any even non-negative integer.

Moreover, the existing code for infinite faces is L2 specific and
ignores the interior of the segment for its decision. In Linf the
interior of the segment is important. For this reason, there is a
new case of the predicate that is general enough to also
accomodate Linf:

// computes the oriented side of the Voronoi vertex of s1, s2, inf
// wrt the line that passes through the point p and its direction
// is the direction of the supporting line of s, rotated by 90
// degrees counterclockwise.
Oriented_side operator()(const Site_2& s1, const Site_2& s2,
                         const Site_2& s, const Site_2& p) const

The Oriented_side_C2 class is also adapted for L2 to use the new
form of the predicate, which internally calls the old form.
2015-04-29 11:58:00 +02:00
Panagiotis Cheilaris 88bc8d9458 change of n_inf assertion to support Linf case
In Linf, there can be many Linf-parabolae contained in the region
of the interior of a non-axis parallel segment.
2015-04-29 11:58:00 +02:00
Panagiotis Cheilaris 18532c962a make Voronoi edge primal agnostic to L2 2015-04-29 11:58:00 +02:00
Panagiotis Cheilaris 1a9b0dc079 vertex conflict for insert_third
Use vertex conflict instead of orientation in insert_third for
the case of three points. This change is to make SDG more L2
agnostic.

Given are three point sites s1, s2, s3.

The orientation of (s1,s2,s3) is not collinear if and only if the
two vertex conflict quadruples (s1,s2,inf,s3) and (s2,s1,inf,s3)
are of opposite signs.

The orientation of (s1,s2,s3) is right turn if and only if the
vertex conflict quadruple (s2,s1,inf,s3) is NEGATIVE.
2015-04-29 11:58:00 +02:00