Commit Graph

1208 Commits

Author SHA1 Message Date
Barend Gehrels
3eadfb2549 [geometry] Comment change 2014-01-18 21:33:10 +01:00
Barend Gehrels
7d8342093a [geometry] Removed unnecessary includes 2014-01-18 21:32:45 +01:00
Barend Gehrels
e76936025c [geometry] Bugfix get point-type instead of segment-type 2014-01-18 21:32:19 +01:00
Barend Gehrels
175032c841 [geometry] Integer coordinates are now not rescaled
which fixes corresponding tests
2014-01-17 19:58:31 +01:00
Barend Gehrels
fc681ba236 [geometry] fixes in unit tests w.r.t. rescale policy 2014-01-17 18:53:29 +01:00
Barend Gehrels
683267e3e5 [geometry] Bugfix in new code, arrival value should be -1 if not on segment 2014-01-16 18:46:03 +01:00
Barend Gehrels
90b75b7640 Merge branch 'develop' into rescale_to_integer 2014-01-16 14:19:01 +01:00
Bruno Lalande
cfba8409c5 Made transform variant-aware. 2014-01-09 09:09:56 +00:00
Barend Gehrels
fd781b79d5 [geometry] Rescale to integer: changed types to make them consistent
w.r.t. integer/float input points. IP calculation is now always based on
ratios.
2014-01-08 13:47:18 +01:00
Barend Gehrels
cd0ec07f64 [geometry] Minor - pass ringtype separately
(further this change was part of a non-committed change)
2014-01-08 13:26:00 +01:00
Bruno Lalande
6646a16d7f Added strategy resolution stage to transform algorithm. 2014-01-05 17:53:08 +00:00
Bruno Lalande
8d58aaf8b9 Made touches (1 param version) variant aware. 2014-01-05 15:54:14 +00:00
Bruno Lalande
87a5a242f4 Made touches (2 params version) variant aware. 2014-01-02 09:34:31 +00:00
Bruno Lalande
ea3cf83bf8 Fixed how resolve_strategy::simplify_insert is called from the public functions 2013-12-24 22:27:38 +00:00
Bruno Lalande
4919e00e2d Made simplify variant-aware 2013-12-24 22:15:15 +00:00
Bruno Lalande
2ddcf5dccf Added resolve_strategy stage for simplify_insert. 2013-12-23 12:19:25 +00:00
Bruno Lalande
5e946a1c1e Added resolve_strategy stage for simplify. 2013-12-22 23:18:29 +00:00
Barend Gehrels
b889923619 [geometry] Take care that FP ratio (which is still used) is between 0-1 too.
If not we take the robust ratio.
This fixes case ticket_9081_15 where the intersection point was far outside
the belonging segment (causing a new spike)
2013-12-22 14:16:15 +01:00
Barend Gehrels
1a1cb4cff0 [geometry] Moved debug string 2013-12-22 14:14:37 +01:00
Barend Gehrels
9cd79d8033 [geometry] Instead of (non-rescaled) append, we clean rescaled dups afterwards.
We don't do it on the fly to avoid additional rescaling, it is done only once per point
This also changes occasionally some number-of-points in testcases (now more cleaned)
2013-12-22 14:12:40 +01:00
Barend Gehrels
2c2c384652 [geometry] Remove sanity check as planned 2013-12-22 13:43:55 +01:00
Barend Gehrels
50f8696aaf [geometry] Let has_intersections also rescale 2013-12-22 13:42:51 +01:00
Barend Gehrels
f467f6ff31 [geometry] Avoid using Boost.Rational for all comparisons
Only if values are close, we resort to Boost.Rational (for int) for exact comparisons.
This avoids most conversions.
2013-12-21 17:58:59 +01:00
Barend Gehrels
0333e7c313 [geometry] replaced boost::rational with segment_ratio which is more specialized for our needs.
segment_ratio contains specific methods (on a segment the ratio is [0..1]) and
can be based on double or float too (Boost.Rational cannot do that).
Boost.Rational is still used under the hood for comparisons (which will be
made more efficient later)
2013-12-21 17:35:44 +01:00
Bruno Lalande
dffb4db8ce Break circular dependency get_turns->disjoint->covered_by->within->get_turns 2013-12-21 00:49:16 +00:00
Barend Gehrels
ef3992a921 [geometry] big cleanup removed old code from cart_intersect 2013-12-20 19:10:42 +01:00
Barend Gehrels
b00311f502 [geometry] Removed (need for) arrangment and moved disjoint.
Disjoint is now based on ratios too. All is now based on ratios, greatly
simplifying the original code with many lines and conditions.
2013-12-20 19:06:05 +01:00
Barend Gehrels
e0d9036aef [geometry] removed segment_equal, now all collinear go to one fuction.
Function now renamed to segments_collinear, and the other to segments_crosses

We calculate opposite now only in "direction", where it is used to pass through.
That one also checks on equality

Test 5103 now (or with previous action for touches) also passes again.
2013-12-20 18:50:08 +01:00
Adam Wulkiewicz
907a260b01 [geometry] added within(Ls, Ls) 2013-12-20 01:28:32 +01:00
Barend Gehrels
4a5b85c870 [geometry] Collinear touch now also uses new unified method
This fixes the holes_intersect_and_touch case
NOTE: method should now be renamed, not ...two_intersection_points
2013-12-19 22:38:52 +01:00
Barend Gehrels
06b03d534c [geometry] Let rescale derive from not_implemented as is new style 2013-12-19 22:36:38 +01:00
Barend Gehrels
f3d1fb4736 [geometry] Bugfix in rescaling, points may not be const& (of course)
They were initialized from local variables and returned
2013-12-19 22:35:54 +01:00
Barend Gehrels
9a9efcff89 [geometry] Work in progress: factor (rational) instead of distance
This is a large commit. It replaces enriched.distance with factor. Factor
is based on integer calculations, calculated in cart_intersect, from the
passed robust points, so always trustable.

We had to do this because without certain tests failed because of FP
problems with distance (calculated with FP).

This commit also greatly simplifies relate_collinear, where most things and checks
are replaced by simple unified calculations. This is also based on robust
fractions (but could have been done earlier).

Many (but not all) testcases commented in previous commit are now uncommented
again, they now work thanks to the fractions. There are also testcases
uncommented which now work correctly using clang/Linux

This commit breaks compiling disjoint (because of rescale), and running buffer
(also because of rescale), and some more (probably all because or rescaling),
this has to be fixed soon after.
2013-12-18 19:19:10 +01:00
Adam Wulkiewicz
2462177a7c [geometry] changed point_in_geometry behaviour for 1-point linestring - treated like point - not within 2013-12-16 00:54:36 +01:00
Adam Wulkiewicz
2b2ceadfc6 [geometry] fixed within(Box, Box) for Boxes with overlapping boundaries - OGC conformance 2013-12-16 00:42:15 +01:00
Adam Wulkiewicz
8f5aa8f236 [geometry] 2-parameter touches() properly dispatched for non-areal geometries, fixed sub_geometry::get() for multi geometries - const correctness 2013-12-15 03:43:07 +01:00
Barend Gehrels
107621943d [geometry] Use robust determinant for comparisons
This breaks one extra testcase which should be verified later
2013-12-14 19:49:35 +01:00
Barend Gehrels
c173233efa [geometry] Propagated rescale_policy further / from earlier phase 2013-12-14 19:45:21 +01:00
Adam Wulkiewicz
b05fe92549 [geometry] fixed multi within and covered_by - new namespace hierarchy (point_in_geometry) 2013-12-14 19:43:27 +01:00
Adam Wulkiewicz
39484599bc [geometry] recently added detail::XXX::YYY_dispatch structs moved/renamed to detail_dispatch::XXX::YYY 2013-12-14 19:34:54 +01:00
Adam Wulkiewicz
bc0dee97d2 [geometry] not_implemented used instead of MPL_ASSERT in point_in_geometry and sub_geometry 2013-12-14 19:11:55 +01:00
Adam Wulkiewicz
4fca624a32 Merge branch 'develop' of github.com:boostorg/geometry into develop 2013-12-14 17:16:13 +01:00
Adam Wulkiewicz
5940d4acb8 [geometry] parameters names changed in within_no_turns 2013-12-14 17:15:08 +01:00
Adam Wulkiewicz
dca7cb060d [geometry] parameters names changed in point_in_geometry 2013-12-14 17:06:06 +01:00
Barend Gehrels
a77aef8d16 Merge branch 'develop' into rescale_to_integer 2013-12-14 16:54:04 +01:00
Barend Gehrels
ce38ea7072 [geometry] Adapted buffer for recent changes in within 2013-12-14 16:52:47 +01:00
Barend Gehrels
ff7cb5c21e Merge branch 'develop' into rescale_to_integer 2013-12-14 13:38:28 +01:00
Barend Gehrels
d988e1ac93 [geometry] Work in progress: rescaling to robust-type
A robust type is integer for float/double. The rescaled points will only
be used for side-information and equality and distance-comparisons, not
to calculate the intersection points themselves.
Currently the code is #ifdefed
2013-12-14 13:25:46 +01:00
Adam Wulkiewicz
a238da019b [geometry] added touches(Ls, Poly), added details for other combinations of linear-areal geometries 2013-12-14 04:01:32 +01:00
Adam Wulkiewicz
5ce07d86f6 [geometry] touches generic_interrupt_policy fixed to not update the state if non-touching turn was found earlier 2013-12-12 03:33:48 +01:00