42 Commits

Author SHA1 Message Date
Barend Gehrels
b0fdfc5d7a [buffer] fix erroneous rings for deflated interior rings which are untouched 2015-02-18 15:10:06 +01:00
Adam Wulkiewicz
bd6e07797f [test][buffer] Add tests for Areal and negative distance (failing for polygon with hole and big distance). 2015-02-18 00:35:29 +01:00
Barend Gehrels
5c9c899974 [test] Increase tolerance slightly for parcel3 (buffer) and geos_1 (intersection)
to let it pass in MSVC 14
2015-01-21 23:19:38 +01:00
Barend Gehrels
6be98196ed [buffer] Piece visitor, remove unused types and we still need to check on geometry_code 2014-11-22 14:32:20 +01:00
Barend Gehrels
fc2652323b [buffer] refactor analysis of piece into shorter and slightly more efficient (few %) code.
It is now one function. In later commits we will extend this by checking helper
segments separately, which should also be more efficient.

It changes one test-case, probably because ofn ear_offsetted. The change is not visible
and the result is probably more correct. SQL Server reports this polygon as invalid.
2014-11-22 12:50:31 +01:00
Barend Gehrels
9a9e16f936 [buffer] major fix: we now create concave helper-pieces differently
In the past there was one with a straight line going from one piece to the next.
Now there are two, going from one piece to the point on the geometry, and the
second going from the point on the geomety to the next piece.
They are now zero-volume.
They fix:
1) crossings of sides with flat-ends (unit-test cases curve, field_sprayer, bend_near_start)
2) joins with limited number of points (unit-test cases concave_b_rough, italy_part, nl_part)
3) joins with large distances
4) many self-intersections on remaining aimes-cases
2014-11-12 13:59:29 +01:00
Barend Gehrels
95583233e7 [buffer] polygon add tests, which are partly failing 2014-11-09 14:29:39 +01:00
Barend Gehrels
254999addd [buffer] Fix case for square with buffer-distance = half the size, IP's
are on border of original and should be discarded for both inflate/deflate
This fixes the cases added to unit tests before
2014-10-29 17:26:43 +01:00
Barend Gehrels
c8af337ad7 [test][buffer] remove _neg suffix from test-case-name, it is done automatically 2014-10-29 12:50:48 +01:00
Barend Gehrels
79b944483d [test][buffer] add simplex square for failing deflate case 2014-10-29 12:50:20 +01:00
Barend Gehrels
b98c653335 [test][buffer] test ccw by default 2014-10-29 12:15:15 +01:00
Barend Gehrels
39c149ed22 [test][buffer] more deflation tests and move order 2014-10-29 12:14:43 +01:00
Barend Gehrels
761fc9f8b1 [test][buffer] uncommented deflated indentation tests, which pass now 2014-10-29 12:00:01 +01:00
Barend Gehrels
cef05d3bf2 [buffer][test] remove default values for new tests 2014-10-29 11:16:42 +01:00
Barend Gehrels
4a7c63fb17 [buffer][test] add custom-strategy version and test scenario which did round-join buffer fail 2014-10-29 11:16:11 +01:00
Adam Wulkiewicz
c411f2bdb3 [test][buffer] Add test cases for Polygon. 2014-10-28 15:07:36 +01:00
Adam Wulkiewicz
3500cc4355 [test][buffer] Add CCW test polygons (not tested yet). 2014-10-28 13:49:08 +01:00
Barend Gehrels
a5b9cfe0bc [buffer][fix] fix for open input of 3 points 2014-10-24 19:39:01 +02:00
Barend Gehrels
0f72af95f0 [buffer] fix simplify which should work on input ringtype
and added unit test which tests different input/output types w.r.t. point order
(different point types are not yet supported)
2014-10-24 15:52:05 +02:00
Barend Gehrels
bd4de457d8 [buffer][fix] fixes counter clockwise polygons 2014-10-24 15:02:55 +02:00
Barend Gehrels
b40c1096a4 [buffer][test] fix 3 testcase names 2014-10-24 14:20:15 +02:00
Barend Gehrels
d762543676 [buffer][test] add reported testcase which succeeds 2014-10-24 13:33:17 +02:00
Barend Gehrels
6280a2b67e [buffer] support buffer for degenerate polygons (pointlike, not enough points) 2014-10-24 13:12:10 +02:00
Barend Gehrels
c271df6a8b Merge branch 'feature/buffer' into develop
Conflicts:
	test/algorithms/buffer/polygon_buffer.cpp
2014-09-03 11:42:30 +02:00
Barend Gehrels
5b42d85326 [buffer][test] add testcase for ticket 10412 (Olivier) 2014-08-30 11:54:57 +02:00
Barend Gehrels
c42aeb4447 [buffer][fix] fix neighbour check in calculating turns. This fixes ticket 10398 2014-08-27 12:27:57 +02:00
Barend Gehrels
7a7d5935d6 [buffer][test] add failing ticket 10398 2014-08-27 11:32:33 +02:00
Barend Gehrels
77b2723935 [buffer] make miter_limit flexibel and correct IP to exactly that limit 2014-07-20 16:38:32 +02:00
Barend Gehrels
03b6571555 [buffer][test] join/end strategies are now arguments, such that we can change
the default without changing the tests.
This only changes the parameter / involves many lines but nothing else is changed.
2014-07-20 15:27:24 +02:00
Barend Gehrels
038253e8f5 [buffer] remove end_skip strategy 2014-07-16 15:21:11 +02:00
Adam Wulkiewicz
9cfee81a09 [geometry] Replace tabs with spaces 2014-07-08 02:27:17 +02:00
Barend Gehrels
7baf1a29e5 [buffer] We have to simplify the ring before to avoid very small-scaled
features in the original (convex/concave/convex) being enlarged
in a very large scale and causing issues (IP's within pieces).
This might be reconsidered later. Simplifying with a very small
distance will never be visible in the result,
if it is using round joins. For miter joins they are even more
sensitive to small scale input features, however the result will
look better.

A distance strategy can change behaviour (make larger - set simplify
distance to 0.0 to avoid simplification)

This fixes the parcel issue(s)
2014-06-25 13:32:42 +02:00
Barend Gehrels
7f3b509fb5 [buffer] use endcap strategy for spikes. Check jointype also (again)
for line-line intersection because it is based on buffered segments.
2014-06-24 22:48:04 +02:00
Barend Gehrels
9b6aa189bd [buffer] changes in includes/defines 2014-06-23 22:40:03 +02:00
Barend Gehrels
aa307b5ad2 [buffer] add join_selector and use it before generating the join.
This moves responsibility of generation to the calling code, removes it
from the join strategies. It also enables using the end-strategy for the
spikes
2014-06-23 22:39:29 +02:00
Barend Gehrels
5c3f1f2006 [buffer] fix limit which was too low for LatLong coordinates. Also fix in test
for tolerance which was too high. Added unit test
2014-06-22 19:54:13 +02:00
Barend Gehrels
b1bcc9c4dc [buffer] test - indentation, remove old comment 2014-06-22 16:11:58 +02:00
Barend Gehrels
2f6abfce3f [buffer] test: remove old code and instead add 3 parcels
which went wrong earlier or still have issues
2014-06-22 16:08:56 +02:00
Barend Gehrels
3628e85a25 [buffer] fix non-intersecting sides around concave points
there was no segment in between generated, therefore if the side-segments
did not intersect (e.g. donut_diamond in polygon_buffer.cpp unit test),
there was no intersection at all. Now a helper piece is generated and it
will intersect.
2014-06-22 15:12:40 +02:00
Barend Gehrels
7df029b176 [buffer] make buffer (miter, round) around spike possible
including unit testcase. For miters, the limit is enlarged (after
visual inspection of spike_simplex_miter)
2014-06-20 22:34:40 +02:00
Barend Gehrels
c96d6394a9 [buffer] update include guards/copyright info 2014-06-13 20:45:34 +02:00
Barend Gehrels
31af14453a [buffer] Move from extensions to algorithms/detail 2014-06-13 20:26:33 +02:00