Commit Graph

3377 Commits

Author SHA1 Message Date
Adam Wulkiewicz
3a522f11f6 [extensions][nsphere][within][strategies] For NSphere/Box and Point/Nsphere take into account machine epsilon. 2015-08-05 00:59:48 +02:00
Adam Wulkiewicz
9d4c806994 [extensions][nsphere][disjoint] For Box/NSphere take into account machine epsilon. 2015-08-05 00:59:05 +02:00
Adam Wulkiewicz
fdc3a6870f [algorithms][sections] Take into account machine epsilon in preceding() and exceeding() functions. 2015-08-05 00:57:03 +02:00
Adam Wulkiewicz
36cdd25674 [intersection] For Box/Box take into account machine epsilon. 2015-08-05 00:55:21 +02:00
Adam Wulkiewicz
1449373a33 [strategies][within][covered_by] For Box/Box and Point/Box take into account machine epsilon. 2015-08-05 00:54:24 +02:00
Adam Wulkiewicz
121d4312d8 [touches] For Box/Box take into account machine epsilon. 2015-08-05 00:53:40 +02:00
Adam Wulkiewicz
172fff9f08 [overlaps] For Box/Box take into account machine epsilon. 2015-08-05 00:53:01 +02:00
Adam Wulkiewicz
cfbbbca0ee [disjoint] For Box/Box and Point/Box take into account machine epsilon. 2015-08-05 00:50:23 +02:00
Adam Wulkiewicz
74855a4951 [util] Add functions math::smaller_or_equals() and math::larger_or_equals(). 2015-08-05 00:33:26 +02:00
Barend Gehrels
49add55205 [buffer] Fix assertion for cases with extreme coordinates.
In case of numerical errors, the started ring should be aborted to avoid doing
calculations with them.
2015-07-31 12:40:01 +02:00
Menelaos Karavelas
21c143e226 [algorithms][relate] modify the less functor for turns in relate so that
equality (using math::equals) for turn fractions is called before operator<;
this is done for consistency with how turns are computed in L/L set operations
and also to make sure that turns in relate are computed in a consistent way;
2015-07-28 21:37:37 +03:00
Menelaos Karavelas
c9ad6530ae [algorithms][turns] minor change (coding style) 2015-07-28 21:36:56 +03:00
Menelaos Karavelas
6e4ea5f23f [algorithms][turns] fix problem with less functor for turns;
In the previous implementation the fractions of the two turns where
compared first using operator< and then tested for equality using
math::equals; the consequence of this implementation is that it could
be possible to have two turns t1 and t2 whose fractions satisfied both
operator< and math::equals, which lead to the possibility of having both
less(t1, t2) and less(t2, t1) true; this behavior for less is wrong and
has produced failures on various compilers (especially when sorting);

The solution is to rearrange the code in the less functor so that
math::equals for the two fractions is checked first, that is before
the operator< is called; this makes the outcomes of less(t1, t2) and
less(t2, t1) always consistent with each other;
2015-07-24 10:27:04 +03:00
Menelaos Karavelas
4ce94fb33e [algorithms][turns] polish code (remove unnecessary commas in print-out) 2015-07-23 09:41:22 +03:00
Adam Wulkiewicz
5a1e553c75 [math] In the impl. of abs() for FP types use std::fabs() if possible.
This fixes the function for long double on some compilers.

For all FP types non-std fabs() was called. This function is defined
only for double. On compilers supporting long double type more precise
than double (GCC, Clang, etc.) this resulted in truncation of the result.
2015-07-22 04:41:34 +02:00
Adam Wulkiewicz
a90f9dc769 [concepts] Suppress GCC4.4 warning (unused variable). 2015-07-21 19:20:03 +02:00
Adam Wulkiewicz
1500dc3644 [algorithms][io] Explicitly specify namespaces for apply_visitor and algorithms functions. 2015-07-21 16:27:48 +02:00
Adam Wulkiewicz
39859171ce [transform] Explicitly specify namespaces to avoid ambiguities. 2015-07-20 20:40:43 +02:00
Adam Wulkiewicz
275ae8f4db [views] Suppress signed/unsigned comparison warnings in two_dimensional_view. 2015-07-20 15:43:10 +02:00
Barend Gehrels
647fedb3e2 [turns] fix conventions: no _t, line length, spurious spaces between if, missing curly braces 2015-07-18 20:16:04 +02:00
Menelaos Karavelas
eb43220e5d Merge pull request #315 from mkaravel/fix/possible_infinite_loop_in_has_spikes
Fix: possible infinite loop in has_spikes
2015-07-14 20:44:19 +03:00
Menelaos Karavelas
4e5da910af [algorithms][is_valid] rename method find_not_equal to find_different_from_first (for clarity) 2015-07-14 20:42:16 +03:00
Menelaos Karavelas
cb02dd8e8d Merge pull request #302 from mkaravel/feature/envelope_and_expand_for_spherical_cs
Envelope and expand for spherical coordinate systems
2015-07-10 07:42:16 +03:00
Menelaos Karavelas
78296da4a2 [algorithms][is_valid] replace BOOST_ASSERT by BOOST_GEOMETRY_ASSERT 2015-07-10 07:32:51 +03:00
Adam Wulkiewicz
db2a7b0afb Merge pull request #314 from awulkiew/feature/optimize_cart_intersect
[get_turns][strategies] Optimize get_turns().
2015-07-09 13:21:47 +02:00
Menelaos Karavelas
ee906b2f40 [algorithms][is_valid] avoid potential infinite loop in has_spikes
(such an infinite loop can happen if the points in the range have NaN coordinates)
2015-07-09 11:50:59 +03:00
Menelaos Karavelas
327df52ec5 [algorithms][envelope] enrich comments regarding the implementation of
envelope_multi_range_on_spheroid
2015-07-09 11:32:40 +03:00
Menelaos Karavelas
388c77cf25 [algorithms][envelope] update copyright headers to follow latest license-related wording;
rewrite envelope_multi_range and envelope_multi_range_on_spheroid algorithms in a more
clear form;
2015-07-09 11:21:53 +03:00
Menelaos Karavelas
7947be9bf5 [algorithms][expand] update copyright headers to follow latest license-related wording 2015-07-09 11:21:07 +03:00
Barend Gehrels
91ccb7e6e3 [buffer] re-enable support for no-robustness policy
Influence on polygon geometries is limited (countries also little influence)
2015-07-08 20:34:07 +02:00
Menelaos Karavelas
1bfae2e79e Merge pull request #313 from mkaravel/fix/sym_difference_areal
Fix/sym difference areal
2015-07-07 07:41:26 +03:00
Menelaos Karavelas
ba8bc966b1 [algorithms][envelope] merge implementation of envelope for linestrings
and multilinestrings into a single file for linear geometries
2015-07-07 04:32:30 +03:00
Menelaos Karavelas
fc7ed8f7ab [algorithms][envelope] remove Dimension and DimensionCount template parameters from bg::dispatch::envelope 2015-07-07 04:29:58 +03:00
Menelaos Karavelas
b376567de9 [algorithms][expand] remove Dimension and DimensionCount template parameters from
bg::dispatch::expand
2015-07-07 04:11:21 +03:00
Adam Wulkiewicz
db3474943b [algorithms][strategies] Simplify the geographic geodesic formulas.
Get rid of formulas objects and implement the formulas as a struct
template taking parameters enabling the formula parts (e.g. distance
and/or azimuth) with apply() static member function. This way the code is
more clear as all temporary values are created directly in the algorithms.
Furthermore there are no uninitialized values and it's not required to
keep a flag indicating if the distance or azimuth can be calculated.

Use the new implementation of formulas in geographic distance and side
strategies.

Alter the unit test.
2015-07-06 17:12:02 +02:00
Adam Wulkiewicz
eec0091bc0 [get_turns][strategies] Optimize get_turns().
The optimization is based on the fact that in the most cases the segments
handled in the TurnInfoPolicy are disjoint. For disjoint segments first
the points are rescaled, then the test for disjoint is run, next the
TurnInfoPolicy just returns and the next pair of segments is handled.
Therefore to optimze the get_turns() this commit changes two things:
1. the cart_intersect strategy may return just after the calculation of sides
   for the first segment (2 sides calculation instead of 4),
2. the points are rescaled only one time in the intersection_helper,
   already rescaled points are passed into the intersection strategy
2015-07-03 21:38:43 +02:00
Menelaos Karavelas
67c33b68bb Merge branch 'develop' of github.com:boostorg/geometry into feature/envelope_and_expand_for_spherical_cs 2015-07-03 02:28:13 +03:00
Menelaos Karavelas
bfe3279990 [algorithms][envelope] initialize consistently with assign_inverse() 2015-07-03 00:26:06 +03:00
Menelaos Karavelas
4bd96072bc [algorithms][sym_difference] re-factor common code 2015-07-02 20:51:36 +03:00
Adam Wulkiewicz
2e43017894 [math][policies] Rename round to rounding_cast and remove the use of boost::math::round() for performance reasons. 2015-07-02 12:02:12 +02:00
Menelaos Karavelas
8b282aeaf8 [algorithms][sym_difference] implement symmetric difference for areal geometries as follows:
* step 1: compute difference(g1, g2)
* step 2: compute difference(g2, g1)
* step 3: return the union of the two differences in previous two steps (as opposed to returning
          the concatenation of the previous two steps)
2015-07-02 00:43:38 +03:00
Adam Wulkiewicz
18ff29297e [index] Add a comment about the Box initialization in pack_create. 2015-07-01 02:55:14 +02:00
black-tomato
8be10f33a3 Without boost::geometry:: compiler try to use distance defined in my custom point class.
Microsoft Visual Studio 2008
2015-06-29 12:26:16 +03:00
Adam Wulkiewicz
6d0be4db61 [policies] Round to the nearest integral value during rescaling. 2015-06-24 22:50:50 +02:00
barendgehrels
16aac54944 [robustness] check for infinite numbers in calculating the factor, and
only assert when really assigned
2015-06-24 11:45:41 +02:00
Adam Wulkiewicz
dd0e360146 [io][wkt] Optimize the usage of end tokenizer::iterator.
Create and return the end iterator in initialize() function the same way how
iterator `it` is, by output function argument passed by reference. Reuse it
inside this function.
In ..._parser::apply() functions reuse the end iterator, do not create it
each time it is needed.
Consistently pass the end iterator by const reference.
2015-06-22 22:58:05 +02:00
Adam Wulkiewicz
7910be94fd [relate] Add assertion and remove unneeded condition. 2015-06-22 22:33:07 +02:00
Menelaos Karavelas
a0ca615051 Merge pull request #311 from mkaravel/fix/distance_point_box_cross_track_strategy
Fix cross_track_point_box distance strategy
2015-06-22 00:13:11 +03:00
barendgehrels
283f0a2853 Merge branch 'develop' of github.com:boostorg/geometry into develop 2015-06-21 22:59:27 +02:00
barendgehrels
88be2948f3 Three minor various details 2015-06-21 22:55:09 +02:00