In Vertex conf pqt case
we can have infinite vertex even if p is not endpoint of q
and so previous assertion is removed, and the case is included
when p is not end point of q, and we check for the conflict
due to insertion of t
In Finite edge conf for p,q,t,sgn functor
we removed the assertion of p is endpoint of q,
and included the case when p is not end point of q
and check for the conflict with t
This solves the test case h2.cin
The drawing is done by pushing in a stream the constituent
segments and rays of a polyline. The code is almost identical
to the QT drawing code.
It will be used to simplify drawing operations in ipelets.
pqt case is handled properly the conflicts
are changed because of choice of new bisectors
Line 364 when one of p or q is a point
and the other is a segment, with query t = point
Incircle_pps and Incircle_sps
In these cases the general segment cases are removed.
Incircle_pss case also needs updation, it should be more simplified.
This is important as it helps to
measure run-time of functions
in the code excluding the time to
print debug messages on the console
We added following piece of code:
//#define CGAL_SDG_VERBOSE
//#ifndef CGAL_SDG_VERBOSE
//#define CGAL_SDG_DEBUG(a)
//#else
//#define CGAL_SDG_DEBUG(a) { a }
//#endif
If the macro CGAL_SDG_VERBOSE is enabled
then we will get all the debug messages
and if it is disabled then there will be no
debug messages
we added a case when p or q
can be end point of t(segment)
example
debug finite-edge-int-cf tocheck (p,q,r,t,sgn)= (s AB) (p D) (p B (r ignored)) (s CD) -1 retval= 0
interior in conflict (cf) = 0
This should return true
ternary operator ? is changed into if-else
Line 887 in Finite edge conflict
assertions of horizontal and vertical segment is added
in Line 1050 in Basic predicate
In Finite Edge interior conflict
the basic predicate intersects_segment_interior_inf_wedge_sp
is called depending on the p.is_point()
In basic predicate
intersects_segment_interior_inf_wedge_sp
the assertions is horizontal and is vertical is
removed temporarily, need to add later
In finite edge interior conflict
when t is segment,
and it not intersected by the wedge
defined by s and p in the basic predicate
intersects_segment_interior_inf_wedge_sp
then return false
To make the basic predicate:"intersects_segment_interior_inf_wedge_sp"
more robust and specific
we added the following assertions:
CGAL_assertion( t.is_segment() );
CGAL_assertion( s.is_segment()
and (not s.is_horizontal())
and (not s.is_vertical()) );
CGAL_assertion( os_lseg_p != ON_ORIENTED_BOUNDARY );
This predicate returns true if and only if
the interior of t has non-empty intersection
with the interior of the following infinite box:
the only finite corner of the infinite box is p
and this infinite box is a 90 degree wedge defined
by the intersection of the halfplanes
with supporting lines lhor and lver through p, where
the halfplanes are both on the positive or negative
sides of the supporting lines. The positive or negative
side depends on the relative position of p with respect to s
In the incircle_p predicate of field_new,
check if p, t are endpoints of different segments among q, r.
This way, things work slightly better for inexact arithmetic.
Now, the following input also works fine:
$ cat ~/code/geom/demo/Segment_Delaunay_graph_Linf_2/1a0star_target.cin
s 0 0 200 0
s 0 0 -200 -100
s -80 -130 0 0
I added refining in incircle_p_no_easy PSS case.
I also forced d1=0 in the case where t has common endpoint
with at least two segments among {p,q,r}. A similar adjustment
has to be done for d2. Maybe this change should also be applied
to the field_new file, but for the moment it does not seem needed.
Also, I did some white-space fixes.