Commit Graph

5565 Commits

Author SHA1 Message Date
Menelaos Karavelas
c863eb4e92 Merge pull request #331 from mkaravel/fix/is_valid_numerically_collinear
Fix problem of numerical inconsistency when checking for spikes
2015-10-14 09:24:29 +03:00
Menelaos Karavelas
b029641604 [algorithms][detail][point_is_spike_or_equal] fix inconsistency between sideness/collinearity
test and check for direction of vectors;

Problem: when checking whether a point q creates a spike or not with respect to two (ordered)
points a and b, the first check performed is whether q, a and b are collinear; if so, then it
is determined whether the vectors q-b and b-a have the same direction or not; for points with
floating-point coordinates, due to rounding errors as well as due to the fact that equality to
zero is checked using some tolerance, the three points may be detected as collinear; however,
when the directions of the two vectors are checked, computations are done without taking into
account any tolerance and this can lead to inconsistent results;

Fix: when checking the directions of the vectors q-b and b-a, compute signs of differences using
numerical tolerances, that is using math::equals() instead of plain comparison operators;
2015-10-12 12:07:10 +03:00
Menelaos Karavelas
04b834506c [test][algorithms][is_valid] add test cases for checking spikes in areal geometries 2015-10-12 11:37:29 +03:00
Adam Wulkiewicz
605d6d2e9b [relate] Comment-out unused variable to suppress compiler warning. 2015-10-09 17:04:38 +02:00
Adam Wulkiewicz
51d683c737 Merge pull request #321 from awulkiew/fix/rtree_eps2
Enlarge nodes boxes in the rtree WRT epsilon when non-Box values are indexed.
2015-10-09 15:54:03 +02:00
Menelaos Karavelas
8614c403f0 Merge pull request #325 from mkaravel/fix/difference_intersection_linear_areal
Fix/difference intersection linear areal
2015-10-09 08:13:52 +03:00
Menelaos Karavelas
49b7be215e [algorithms][intersection] use more descriptive name for method;
change template parameter name to something more descreptive;
2015-10-09 08:11:39 +03:00
Adam Wulkiewicz
350e75bfc2 Merge pull request #328 from jeremy-murphy/redefined_macro
[transform][strategies] Don't clobber BOOST_UBLAS_TYPE_CHECK macro.
2015-10-09 02:26:00 +02:00
Adam Wulkiewicz
7a446e9103 Merge pull request #330 from awulkiew/fix/distance
Fix assertion failure in distance(Pt, Box) for NaN coordinates
2015-10-08 23:43:58 +02:00
Adam Wulkiewicz
df2056756f [test][index] Enable enlargement in the test checking handling of epsilon in the rtree. 2015-10-08 19:02:23 +02:00
Adam Wulkiewicz
bef1a98d2e [index] Add #ifdef for conditional enabling of Values' bounds in the rtree. 2015-10-08 19:01:00 +02:00
Adam Wulkiewicz
34048498ec [test][distance] Add a test case with NaN coordinates. 2015-10-08 17:42:59 +02:00
Adam Wulkiewicz
25d9f9c195 [distance] Fix assertion failure in distance(Pt, Box) for NaN coordinates.
If there are NaN coordinates the conditions cannot be reasonably
calculated, therefore if the condition isn't met check if NaN coordinates
were not involved. This is consistent with the general policy WRT invalid
geometries, the algorithm don't fail but may generate invalid result.
2015-10-08 17:39:16 +02:00
Adam Wulkiewicz
4e64885344 [relate][touches][overlaps] Add test cases for fixed bugs. 2015-10-08 14:00:21 +02:00
Adam Wulkiewicz
d518688486 [relate][touches] Fix bugs in relate(A,A) and use it in touches(A,A)
Bugs are related to the handling of interior rings intersecting the second
geometry.

touches(A,A) now calls relate(A,A) besides a Ring/Ring case bcause Rings
have no holes so the simpified version may be used.
2015-10-08 13:55:11 +02:00
Barend Gehrels
b1c0c487e1 [test][union] add two testcases causing problems with u/u turns
and handle_touch (in other branch)
2015-10-07 19:45:25 +02:00
Menelaos Karavelas
b3be70aee2 [algorithms][overlay][exception] move inconsistent_turns_exception to a separate file 2015-10-05 14:06:58 +03:00
Menelaos Karavelas
7f5f894535 [algorithms][overlay][exception] move inconsistent_turns_exception to a separate file 2015-10-05 12:24:31 +03:00
Jeremy W. Murphy
2c9cf6cc5f [transform][strategies] Don't clobber BOOST_UBLAS_TYPE_CHECK macro.
This macro is also defined in boost/numeric/ublas/detail/config.hpp.
2015-09-27 19:50:15 +10:00
Menelaos Karavelas
37c97a58dc Merge pull request #327 from mkaravel/fix/debug_print_complement_graph
Fix issue with use of std::cout only in debug mode
2015-09-22 08:46:48 +03:00
Menelaos Karavelas
c8b1095eea [algorithms][is_valid] fix issue with use of std::cout only in debug mode:
originally reported by Jeremy Murphy (GitHub PR #326); the problem is that
when debug_print_complement_graph() is called, std::cout needs to be defined
which requires the inclusion of <iostream> even in non-debug mode; with this
commit the call to debug_print_complement_graph() is guarded by the appropriate
macro and the use inclusion of <iostream> is no longer needed in non-debug mode;
2015-09-17 09:28:55 +03:00
Adam Wulkiewicz
825815a418 [test][buffer] Add cases causing assertion failure. 2015-09-09 00:50:20 +02:00
Adam Wulkiewicz
7cdc476a40 [test] Fix size_t to int conversions (msvc warnings). 2015-09-08 17:47:23 +02:00
Adam Wulkiewicz
047cbbf60d [doc] Update 1.60 release notes (ticket). 2015-09-07 14:42:57 +02:00
Adam Wulkiewicz
a71aaa3617 [core] Make geometry::exception::what() public. 2015-09-07 14:03:54 +02:00
Menelaos Karavelas
68611a159c [algorithms][intersection][difference] fix bug in determining whether a turn
is a crossing turn or not (as part of the bug-fix the logic now determines is the
turn is a crossing turn, as opposed to a non-crossing turn)
2015-09-04 10:50:03 +03:00
Menelaos Karavelas
5328407f9d [test][algorithms][difference] add one more test case for difference(L, A) 2015-09-04 10:48:32 +03:00
Menelaos Karavelas
3b12d520ac [util][math] fix possible unused variable warning 2015-09-03 20:04:55 +03:00
Menelaos Karavelas
6fb6863711 [test][algorithms][intersection] add one more test case 2015-09-03 20:01:12 +03:00
Menelaos Karavelas
979b6cda7c [test][algorithms][intersection] add messages in debug mode 2015-09-03 20:00:43 +03:00
Menelaos Karavelas
a19ef71c5e [test][algorithms][difference] add one more test case for difference(L,A) 2015-09-03 15:34:49 +03:00
Menelaos Karavelas
267b54a2ca [test][algorithms][intersection] add more test cases for intersection(L,A) 2015-09-03 15:06:25 +03:00
Menelaos Karavelas
ce7bf46d35 [test][algorithms][difference] add more test cases for difference(L,A) 2015-09-03 15:05:15 +03:00
Menelaos Karavelas
290688c502 [algorithms][difference][intersection] modify intersection and difference algorithm
for L and A geometries to keep (instead of discarding) spikes of liear geometries
2015-09-03 15:04:00 +03:00
Adam Wulkiewicz
5daa5a78a3 Merge branch 'develop' into fix/rtree_eps2 2015-08-25 16:43:47 +02:00
Adam Wulkiewicz
3dd8d1e689 Merge pull request #320 from awulkiew/fix/box_eps
Different approach for handling Boxes WRT machine epsilon
2015-08-25 16:40:55 +02:00
Adam Wulkiewicz
e293838a50 [test][index][rtree] Remove unused variable. 2015-08-23 15:03:18 +02:00
Adam Wulkiewicz
e090eb5681 [test][index] Add rtree spatial query epsilon-related test. 2015-08-23 15:03:18 +02:00
Adam Wulkiewicz
d69702c492 [test][example][index] Update rtree tests and example WRT latest changes related to epsilon handling. 2015-08-23 15:03:17 +02:00
Adam Wulkiewicz
069316c591 [extensions][nsphere][index] Update index-related nsphere code accoring to the latest changes in the rtree. 2015-08-23 15:03:16 +02:00
Adam Wulkiewicz
1084a124de [index] Enlarge leafs' boxes WRT epsilon for non-Box Values. 2015-08-23 15:03:16 +02:00
Adam Wulkiewicz
342306bf9e [index] Add values_box() and is_leaf_element.
The function values_box() enlarges the box WRT epsilon if the elements are
not of bounding geometry type, so Point or Segment.
2015-08-23 15:03:15 +02:00
Adam Wulkiewicz
f39d37f195 [index] Add is_bounding_geometry and relocate is_indexable. 2015-08-23 15:03:15 +02:00
Adam Wulkiewicz
0addcbb330 [math] In detail::scaled_epsilon call detail::abs instead of math::abs. 2015-08-22 17:36:54 +02:00
Adam Wulkiewicz
4a15918915 [extensions][nsphere][relops] Use raw comparison operators instead of math:: functions. 2015-08-21 20:00:13 +02:00
Adam Wulkiewicz
035a49d417 [extensions][sections] Use raw comparison operators instead of math:: functions. 2015-08-21 19:59:40 +02:00
Adam Wulkiewicz
51591ea883 [test][intersection] Remove tests checking the handling of epsilon for Boxes. 2015-08-21 19:57:32 +02:00
Adam Wulkiewicz
0401f58a78 [test][relops] Remove tests checking the handling of epsilon for Boxes. 2015-08-21 19:56:57 +02:00
Adam Wulkiewicz
3dcfb86cb9 [touches] For Box/Box use operators (e.g. < instead of math::smaller). 2015-08-21 19:54:57 +02:00
Adam Wulkiewicz
0d5c18ea56 [overlaps] For Box/Box use operators (e.g. < instead of math::smaller). 2015-08-21 19:54:28 +02:00