Vertex_conflict(pqt) In pps case:
if p is endpt of t or q is endpt of t
Point_2 pt = is_p_tsrc ? t.target() : t.source();
Orientation o = CGAL::orientation(p.point(), q.point(), pt);
return (o == RIGHT_TURN) ? POSITIVE : NEGATIVE;
We have also added debug messages to check p,q,t and o.
Here is the problematic input:
$ cat ~/Dropbox/cgal/demo/Segment_Delaunay_graph_Linf_2/September/29sept2seg1pt.cin
s -200 -100 200 100
p 200 -50
s 220 90 -130 -90
inf-edge-conf q,s,r,t,sgn
removed case (in all cases it was asserted segment is h or v)
1: when t is not h or v
2: q is not h or v
3: here point q is not endpoint of segment s
CGAL_assertion(sgn == NEGATIVE);
CGAL_assertion(not (s.segment().is_horizontal() or
s.segment().is_vertical() ));
Following code is removed from fec:
fec:p q r t sgn
for sgn = POSITIVE
// p is not endpoint of q
CGAL_assertion( not ( q.segment().is_horizontal() or
q.segment().is_vertical() ) )
p is point and q is segment
same for p segment and q point
fec: p,q,t,sgn
case: one of p, q is segment,
removed the portion of code after cgal assertion of h or v
p is point q is segment and t is segment
when this vertex conf is called it is called with
p segment,q point, t segment
incircle_s sps case
and we have updated the case
when t is segment and t and p has an endpoint,
and q is not on t, then it should return POSITIVE
inf-edge-conf
when t is segment and sgn is negative,
we have tentatively return true for the case:
q or r or s is a segment and sgn is negative.
Constructions:
For the new bisector type,
now we have bisector lines, for the case:
p and q both segments sharing an end-point.
In vertex conf, we have updated the incircle_sps function
In h10.cin
incircle pqt : 0,100(C) 0,0 100,0(AB) 0,0 0,100(AC) should return -1
For t.is_segment(), In infinite edge conf, we always returned false earlier,
but we have updated now C AB A AC sgn = -1 should return true
In Finite edge conf, we removed the assertions t on oriented boundary
in pqrt functors, in point-segment case.
When t is segment, p is endpoint of segment
and q is not end point of segment, then the vertex at infinity
between p and q should be in conflict, we have updated this
in this commit.
Also we have done a little change in Construction of pcl
between a endpoint of segment and segment itself.
we have omitted the portion that if q is point we have to change
the direction, this is because the logic is written wrt pnt and seg,
so it became independent of p and q.
vertex conlict pqt is called as
incircle_p(q,p,t)
and the function is written as
incircle_p(p,q,t)
so logic has to be reversed for
finding conflict of vertices in clockwise direction.
Here the points are not end point of segment,
and they are on the same side of the supporting segment.
We have updated the code for determing vertex conflict
in this point-segment case.
We updated the bisector segment code
for point-segment case, where point is end point of segment.
The number of points defining the bisector segment can be 2 or 3
depending of the configuration of sites.
Note: the logic can be simplified by using
oriented_side_of_line funcion of basic predicates.
When p is a point that lies in the region of q
where q is end point of a segment, and p is
on the supporting line of the segment, the pcr
should be a single linear segment in appropriate direction
depending on the position of point p and the segment.
pq is point-segment or segment-point
t is point, when pqt have orientation = ZERO
Both infinite vertices between p and q are
in conflict due to insertion of t.
Example h6.cin
p=0,0 , q = 0,0 100,0 , t=-50,0