Instead of the type Has_bisector_constructions_type that relied on
SFINAE for choosing bisectors, use Tag_has_bisector_constructions
tag which is typedef'ed to be Tag_true for Linf traits.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>
Define copy constructor and assignment operator using
respective base class constructor/operator.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>
This change requires a change in the base class of the Linf
algorithm to support the insert_point_on_segment_ptr and
insert_exact_point_on_segment_ptr function pointers.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>
This fixes a problem that manifests with input n88.cin:
s 23.194048 69.95298 23.186834 69.952034
s 22.381594 70.510712 22.38833 70.519165
s 22.393114 70.519165 22.406164 70.512787
Vertex_conflict (pqrt)=
(p 23.186834 69.952034)
(p 22.38833 70.519165)
(s 22.381594 70.510712 22.38833 70.519165)
(p 22.393114 70.519165) returns 1 or (B, D, CD; E) returns 1,
although it should return -1.
I introduce a new function linf_radius_pps that chooses one
of the two points of the Voronoi vertex based on its proximity
to the argument t of the incircle test.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>
This fixes a problem that manifests with input n71.cin:
s 11.979542 63.269928 12.073787 63.172432
s 10.011458 64 10.041777 64
s 11.174461 64 11.17787 64
debug: Vertex_conflict (pqrt)=
(p 11.979542 63.269928)
(p 10.041777 64)
(s 10.011458 64 10.041777 64)
(p 11.174461 64)
returns -1, or vc(A, D, CD ; E) returns -1 (NEGATIVE),
although it should return POSITIVE (i.e., no conflict).
The fix is using the new is_on_hv_seg_line function, which checks
if the test point is on the line of the axis-parallel segment r.
Function is_on_hv_seg_line is invoked in the easy degeneracies
tests.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>
This is a problem that manifests with input n52.cin:
s 22.649618 70.68029799999999 22.651001 70.683487
s 22.651001 70.683487 22.654936 70.684631
s 22.654451 70.688507 22.633778 70.683037
debug infinite-edge-int-cf tocheck (q,s,r,t,sgn)=
p 22.651001 70.683487
s 22.651001 70.683487 22.654936 70.684631
s 22.649618 70.680298 22.651001 70.683487
s 22.654451 70.688507 22.633778 70.683037
-1
returns 0
otherwise: iecf (B, BC, AB, DE, -1) returns 0 (false)
although it should return 1 (true)
The fix uses function zero_voronoi_area.
Signed-off-by: Panagiotis Cheilaris <philaris@cs.ntua.gr>