In these two algorithms, points farthest from a line must be found.
In case of multiple points at the same distance, an "extremity"
of this set of points must be returned.
This was properly documented in the Less_signed_distance_to_line_2
functor of the ConvexHullTraits_2 concept:
[ ... ]
The predicate must provide a total order compatible with convexity,
<I>i.e.</I>, for any line segment \f$ s\f$ one of the endpoints
of \f$ s\f$ is the smallest point among the points on \f$ s\f$,
with respect to the order given by `Less_signed_distance_to_line_2`.
[ ... ]
And specific models did respect this requirement. However, the kernel
is supposed to also be a model of ConvexHullTraits_2, but
Kernel_23::LessSignedDistanceToLine_2 does not require this, and
the models (EPICK, Simple_Cartesian, etc.) do not implement it.
Hence, if a kernel was used as geometric traits for 2D Convex Hull
algorithms, one might not get the expected extreme point when
there are multiple points at the same distance to a line at some
point in the algorithm.
The algorithm recovered, but this created extra points on the hull.
Fixing the functor in the kernel would create an inconsistency
with Kernel_23::Compare_signed_distance_to_line_2, so instead
this commit changes the concept and the code to require
providing Compare_signed_distance_to_line_2 and then uses Less_xy
in the code in case of EQUAL return (that is actually how it was
done in the Convex_hull_2-specific versions of the ConvexHullTraits_2
model).
right after the merge of the 5.0 release branch
+ manual fix of the files (indentation was changed in the meantime):
* Spatial_sorting/include/CGAL/Multiscale_sort.h
* Spatial_sorting/test/Spatial_sorting/test_multiscale.cpp
right after the merge of 4.14 release branch
+ manual fix on one line in:
* Arrangement_on_surface_2/include/CGAL/IO/Arr_text_formatter.h
* .travis/generate_travis.sh
I clarified the documentation, by putting closer to the top some
details about ch_graham_andrew_scan(), especially the precondition.
I also updated the ch_graham_anderson() example in the documentation.
TODO: Investigate more:
In my system, the following line in the example:
*result = *(V.rbegin()); ++result;
is rendered without the first `*' in the HTML documentation.
Successfully test in CGAL-4.3-Ic-102
This commit fixes a few issues in the doxygen documentation and in particular
the figure for the generation of latex doc.
Approved by the interim release manager
xplain why this merge is necessary,
this happens if you have an empty line or the text directly after /!*
to find them in the generated documentation, grep for "pre class=\"fragment\""
(a few of them are legitimate however)