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.
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.
Wextra results in a dreadful wall of yellow in the test-suite and is
scary when using CGAL. Reduce some of the noise by silencing the
obvious cases with CGAL_USE or comments.
still some headers contain FORTH as copyright headers;
this was done (incorrectly on the trunk (r65713) and reverted by Laurent; it is now properly done in ^/branches/next
In particular remove UNTESTED_XXXXXXXXXXX unused variable that possibly hide true warnings.
In those cases, the string printed while executed now starts with "NOTE: ".
*CGAL internal code no longer rely on depecrated features
by namespace CGAL { and } //namespace CGAL. in all .h and .cpp files
in a directory.
Apply it to all packages in the trunk
Remove macro definition from the config.h file.
when possible;
benchmark_nox.cpp uses now the filtered traits with static filters by default;
this is activated by the CGAL_SDG_TRAITS_WITH_STATIC_FILTERS macro;
Vertex_conflict_C2.h: added operator() that takes four points;
Traits_wrapper_2.h: the Side_of_oriented_circle_2 class is now implemented
using the Vertex_conflict_2 class from the base traits;
added some types and some assertions in edge lists (both regular and in-place);
fixed bugs in post-increment operators of edge list circulators (edge_list.h)
non-intersecting segments; the code is activated by defining the
CGAL_SDG_USE_SIMPLIFIED_ARRANGEMENT_TYPE_PREDICATE macro, which is currently done in the benchmark program
added support for in-place storage (at the faces) of the faces that define the conflict region; also the sign of the incircle test is cached there; this uses the Face_data that now exists in TDS2;
to activate the in-place storage of the faces of conflict regions define the macros: CGAL_TDS2_DATA and CGAL_SDG_NO_FACE_MAP
the file Triangulation_face_base_with_in_place_edge_list_2.h implements an in-place edge list for the boundary of the conflict region
we are in the special case where the Voronoi vertex is degenerate (which happens
when the Voronoi vertex is defined by two segments and a point, where the point
is the common endpoint of the two segments)