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
pcr for vertical segment and point is added
p=not end point of q
q=segment
r=end point of q
Also the code for horizontal segment and point
is updated, pcr can have one or two linear component
depending on the position of point wrt segment.
When one P=P1 is an end point of S and other P=P2
lies on the bisector P1S, or in the region of P1,
we have to compute finite voronoi vertex of PPS type.
So we add this portion of code in Voronoi_vertex_sqrt_field_new_C2.h
when point is end of segment, now we have the ray with
two linear components.
example:
h3.cin A 0,0 AB 0,0 100, 0 C 0,50
pcr for A , AB, C will be
p[0]= -25, 25
p[1]= 0,0
and d=-1,-1
when p is end point of s,
the checks for q closer to p or s are modified.
example p 0 0 s 0 0 100 0 and q -10 50
q is closer to s because of new bisector type
In Voronoi_vertex_sqrt_field_new_C2
Following PPS is handled:
A:(0,0) AB:(0,0 100,0) C:(0,50)
A is end point of AB and C is another point
which is not end point of input segment,
we will have a finite voronoi vertex.
In Vertex conf debug messages are added.
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.