Commit Graph

1215 Commits

Author SHA1 Message Date
Barend Gehrels
011815a80d [geometry] Extracted segment_ratio_type as a metafunction
just like robust_point_type
2014-01-19 22:02:01 +01:00
Barend Gehrels
9ea637265e [geometry] Merged rescale policy and (rudimentary) robustness policy.
We should decide how we call this thing (probably RobustnessPolicy as it
decides for types, ratio-types, rescaling and other behaviour related to
robustness)
2014-01-19 15:34:15 +01:00
Barend Gehrels
c7111355cc [geometry] Made SegmentRatio a template parameter as was intended.
Still TODO: it should come from a robustness-policy
2014-01-19 15:06:07 +01:00
Barend Gehrels
ca6280c9af [geometry] Added (probably temporary) comment 2014-01-19 14:48:55 +01:00
Barend Gehrels
2851b50fc3 [geometry] Removed now redundant template parameters from segment-intersection
strategies.
2014-01-19 14:48:39 +01:00
Barend Gehrels
fe207c73da [geometry] Removed now unused method 2014-01-19 14:40:35 +01:00
Barend Gehrels
482c9a3a62 [geometry] Added static assert 2014-01-18 21:33:20 +01:00
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