relate_linear_areal:
handle non-endpoint x-c turns pair generated for a collinear spike.
relate/follow helpers:
fix turn_on_the_same_ip to use fraction instead of dimension.
get_turns:
L/L and L/A - use base_turn_handler::assign_point() to set fractions properly for collinear-opposite spikes.
L/A - fix the condition in calculate_spike_operation() used to check if a spike goes into the interior or exterior.
The latest robustness upgrade introduced changes that broke the support:
1. degenerated turns are now method_none+c/c. This is fixed by this commit.
2. ratios aren't calculated for degenerated turns (proviously distances were calculated by AssignPolicy).
Some asserts are invalid when 'x' operation can be somewhere in the middle (boundary_checker).
boundary_checker::is_boundary() function removed since it's not used anywhere.
Errors in get_turns are related to the handling of touches turn. t,i/i must be handled and is_collinear must be set in operations for spikes.
2 Turns are generated for a spike, one with operation_blocked the second one with operation_intersection.
relate_linear_linear is not working yet, for now it is only ensured that boundaries will not be checked for those turns, which would result with assert failure.
TODO: opposite collinear and equal, touches c/c and endpoints intersecting a spike + the adaptation of relate(L,L).
w.r.t. either segment a or segment b.
This results in small differences in the unit test for difference, which are
checked visually and/or compared with other output. In these cases it is
an enhancement
It's also consistent with the behavior for Point-like Linestrings.
E.g. some MultiLinestring may have boundary and interior in the same point:
Ls1:
|--------------|
MLs2:
|------------|
|------|
In this case the current version of the algorithm will set BB=0 and BI=0.
Point-size Linestring is a linestring containing exactly 2 equal points.
Add generation of positions for degenerated turns, non-degenerated segments in get_turns_linear_linear.
The code should be polished after the addition of info about the degeneration of segments into Turns.
point_in_geometry - Intel 11 probably can't handle BOOST_STATIC_ASSERT() inside which some template is directly instiantated - replace by intermediate value + BOOST_MPL_ASSERT_MSG for better error message.
multi_touches test - include missing header