Commit Graph

3609 Commits

Author SHA1 Message Date
Barend Gehrels
577c3bcfe4 [traverse] use same method for finding index; this fixes
the last uu case in union_multi (and is better anyways)
2016-02-27 18:16:19 +01:00
Barend Gehrels
83320f528e [traverse] move loop to separate method to be shared later 2016-02-27 18:08:18 +01:00
Barend Gehrels
0bd3944652 [traverse] don't travel again over visited arcs in clusters. This fixes
(again, after breaking) all cases for difference/intersection and no new
errors for union/buffer
2016-02-26 18:50:34 +01:00
Barend Gehrels
d0f584e6f3 [traverse] fix cases where there is a choice between two equally suited
arcs from a cluster - if one is the starting point, take that one
2016-02-17 14:26:56 +01:00
Barend Gehrels
05c789e77e [buffer][traverse] fix uu for buffer 2016-02-17 12:38:34 +01:00
Barend Gehrels
e30fd1ca4c [traverse] fix case for buffer having only cc (in the whole cluster).
For a cc operation, main_rank 0 is OK
2016-02-17 11:43:01 +01:00
Barend Gehrels
c4c180bb7d [union] instead of checking uu, count open spaces to support also
conbined touching turns without a uu
2016-02-10 20:34:37 +01:00
Barend Gehrels
41518b6ac3 [traverse] use count_left/count_right to get first requested turn
in clusters
2016-02-10 13:23:09 +01:00
Barend Gehrels
1ea05c3539 [traverse] fix subject/origin, which did not work for buffer
Now the previous point is taken (this might in theory be colocated!)
2016-02-03 14:03:10 +01:00
Barend Gehrels
5a35924616 [traverse] use index instead of source_index to determine subject
(in relation with previous commit: use indexes instead of iterators, part 2)
2016-02-03 12:33:35 +01:00
Barend Gehrels
24908b7636 [traverse] go to index instead of iterator (part 1) 2016-02-03 12:10:54 +01:00
Barend Gehrels
34db67d51d Merge branch 'develop' into feature/cluster 2016-02-03 11:12:33 +01:00
Adam Wulkiewicz
c018acfb4a [strategies] Improve the accuracy of surveyor area strategy by using slightly different formula. 2016-01-28 14:46:54 +01:00
Barend Gehrels
e619ec6dfe [overlay][buffer] make find_open generic for usage in both overlay
and buffer
2016-01-27 13:35:17 +01:00
Barend Gehrels
19747bea88 [buffer] use specific visiting policy for buffer 2016-01-27 13:33:57 +01:00
Barend Gehrels
18a893d2c0 [buffer][test] adaptions to make clusters visible in buffer SVG maps 2016-01-27 11:44:48 +01:00
Barend Gehrels
dc6b102b1f [buffer] add three specializations necessary to include
buffered ring collections in SVG maps
2016-01-27 11:43:46 +01:00
Adam Wulkiewicz
5764489256 [formulas] Add a workaround for GCC bug (causing error: parse error in template argument list) in andoyer_inverse. 2016-01-25 21:11:55 +01:00
Adam Wulkiewicz
68fa4e5f0c [adapted] Suppress unused parameter warning in Boost.Polygon adaptation. 2016-01-25 20:04:54 +01:00
Adam Wulkiewicz
e482a86b74 Merge pull request #340 from awulkiew/fix/back_inserter
Add range::back_inserter() and use it in algorithms when needed.
2016-01-25 19:46:08 +01:00
Adam Wulkiewicz
33982c9ae6 Merge pull request #339 from awulkiew/fix/andoyer
Fix andoyer
2016-01-25 19:39:57 +01:00
Adam Wulkiewicz
53d7dca308 [strategies] Use andoyer_inverse formula in andoyer distance strategy. 2016-01-25 19:34:20 +01:00
Adam Wulkiewicz
edc3c7851d [algorithms] Use range::back_inserter() if points are added to geometries. 2016-01-23 13:57:49 +01:00
Adam Wulkiewicz
972b667525 [range] Add back_insert_iterator using traits and back_inserter(). 2016-01-23 13:47:24 +01:00
Adam Wulkiewicz
cc5d0efc55 Merge pull request #332 from awulkiew/fix/intersects_bs
Fix special case of intersects(Segment, Box)
2016-01-20 16:53:05 +01:00
Barend Gehrels
b55eec5b7e [buffer] fix new traverse approach for buffer, it should take the
first segment if encountering an early finish
2016-01-20 14:45:46 +01:00
Barend Gehrels
ed6db710ce [buffer] repair compiling: adapt buffer backtrack policy to recent change,
and fix SVG
2016-01-20 10:37:20 +01:00
Adam Wulkiewicz
5df1a05e34 [formulas] Make the andoyer_inverse formula more robust. 2016-01-19 00:30:50 +01:00
Adam Wulkiewicz
eba433ee06 [formulas] Fix/improve andoyer_inverse formula for antipodal and nearly antipodal points.
The results returned by this formula are now also consistent in a way that the closer points are to being antipodal the closer are the results to edge-case results.
2016-01-18 18:08:32 +01:00
Barend Gehrels
a236ba3391 [overlay] add counts to enrichtment info, this avoids it to be redone,
and use it in traverse omitting the operation condition
2016-01-13 15:58:51 +01:00
Barend Gehrels
8364aed91b [intersection] fix cases where intersection has to travel through uu/ux 2016-01-13 12:49:47 +01:00
Barend Gehrels
d256e57487 [overlay] now we can/need to remove functionality to discard turns
colocated with uu and the same ring.
This breaks one case (# case_recursive_boxes_23) but repairs many (about 50%
of the wrong cases in robustness test)
2016-01-13 10:52:04 +01:00
Barend Gehrels
c268bb2fd4 Minor change, check on cluster ids 2016-01-10 19:14:31 +01:00
Barend Gehrels
c74ff4c0df [overlay] remove functionality for colocated cc turns, recently added,
but now redundant again.
(In hindsight I should have added the "startable" functionality first)
2016-01-10 19:12:55 +01:00
Barend Gehrels
5f028b0b04 [overlay] split polygon_count in left_count/right_count, this is necessary
for some cases (ex. #case_recursive_boxes_29). Also, necessary, now that
startable is defined, don't discard colocated cc in clusters, they are
sometimes necessary.
2016-01-10 19:06:34 +01:00
Barend Gehrels
01df9eacbb [overlay] fix implementation of startable flag, it should start if there
are 1 (union) or 2 (intersection) polygons on right hand
2016-01-10 13:32:08 +01:00
Barend Gehrels
e4624dad28 [union] remove discarded lonely uu turns from cluster 2016-01-09 20:09:35 +01:00
Barend Gehrels
7931e0445b [intersection] now discarded uu turns outside clusters, they block traversal 2016-01-09 19:31:19 +01:00
Barend Gehrels
3a9713b267 [sort by side] fix index 2016-01-09 19:15:44 +01:00
Barend Gehrels
b7a16976c9 [overlay] handle startable functionality for traverse w.r.t. clusters
This has a small regression on 5 cases in multi_difference, to be inspected,
and can change the number of holes due to commenting handle_touch
2016-01-09 13:39:28 +01:00
Barend Gehrels
df2c1f35bc [sort by side] remove rank, not used anymore 2016-01-09 10:16:48 +01:00
Barend Gehrels
f377eebf8c [traverse] instead of combination uu/ux for specific behaviour,
now check on uu/* (any turn in combination with uu) for unionts
2016-01-08 18:28:38 +01:00
Barend Gehrels
0d3ef5e3e9 [intersection] discard turns colocated with uu too (these turns are based on
invalid input)
2016-01-07 19:34:08 +01:00
Barend Gehrels
59125adb8d [intersection] don't exclude ux for intersection because it is necessary
to block certain paths
2016-01-07 18:59:05 +01:00
Barend Gehrels
98f26765e7 [union] change solution for reversed clusters (uu/ux only),
this fixes the new case #case_recursive_boxes21

This fixes again all current multi union/intersection/difference and all union
2016-01-06 22:29:52 +01:00
Barend Gehrels
71fbcd8aaf [traverse] remove now redundant condition, clusters never have discarded turns 2016-01-06 18:19:40 +01:00
Barend Gehrels
32ddae6c0d [union] handle clusters with uu-only and halfway incoming arcs 2016-01-06 18:18:18 +01:00
Barend Gehrels
c9836ca17f [union] handle clusters with uu/ux combined 2016-01-06 17:18:05 +01:00
Barend Gehrels
2c1a7b7f40 [union] fix simple cases having two colocated uu turns
(appearing now that uu turns are included)
2016-01-06 16:52:19 +01:00
Barend Gehrels
b272e9f615 [intersection] also for intersection, uu turns have to be included to
make proper decisions on clusters.
This also removes switch_source initialization (which is false anyway)

This fixes all known cases for multi union/intersection again,
except for the number of clips. Difference still has one area error
2016-01-06 13:54:07 +01:00