Commit Graph

3334 Commits

Author SHA1 Message Date
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
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
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
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
barendgehrels
ed103f777e intersection calculation: fix behaviour in rare cases where IP is taken from segment
A but segment B is much shorter, and IP is also at end-point of segment B.
The arbitrary decision (robust_ra < robust_rb) is changed into another
decision, based on closeness to end-points and on segment length, which leads
to more precise results
2015-06-21 22:50:40 +02:00
Menelaos Karavelas
933ed0791d [strategies][distance][cross track point box] re-factor code and make it more readable 2015-06-19 09:37:49 +03:00
Menelaos Karavelas
23addc2c06 [strategies][distance][cross track point box] optimize the computation of the
distance when the point's longitude does not belong to the longitude range of the
box: instead of computing the distances to both meridian segments of the box, determine
which one among the two box segments the point is closest to, and compute the distance
of the point to the closest segment found
2015-06-19 01:17:46 +03:00
Menelaos Karavelas
edf943696c Merge pull request #301 from mkaravel/fix/bounding_box_computation_in_get_rescale_policy
Fix: initialize the rescale policy only if the input geometries are non-empty
2015-06-15 15:32:00 +03:00
Menelaos Karavelas
21b9226562 [strategies][spherical][distance][cross track point box] add missing includes 2015-06-13 23:57:03 +03:00
Menelaos Karavelas
12e497f394 [strategies][distance][cross track point box] update cross track point-box
strategy to work with box seen as Cartesian products of intervals
2015-06-13 01:47:44 +03:00
Adam Wulkiewicz
843ef4eac8 [is_valid] Add optimization and suppress warnings.
Replace boost::size(...) > 0 with !boost::empty(...).
Suppress unused parameter and constant conditional expression msvc
warnings.
2015-06-12 16:37:58 +02:00
Menelaos Karavelas
00424e5a6d Merge pull request #294 from mkaravel/ext/fixes_for_ttmath_big
Extensions: fixes for ttmath::Big<Exponent, Mantissa> and ttmath_big
2015-06-12 10:05:07 +03:00
Menelaos Karavelas
355a9d0cf4 Merge pull request #308 from mkaravel/fix/distance_cross_track_radius_type
[strategies][distance][cross track] expose the radius type as a typedef
2015-06-12 08:55:55 +03:00
Adam Wulkiewicz
f3b4df8c82 [index] Rename member and tparam in expandable_box for better readability. 2015-06-11 23:14:00 +02:00
Adam Wulkiewicz
81d0442c3a Merge pull request #309 from awulkiew/fix/is_valid
[is_valid] Suppress unused parameter warnings.
2015-06-11 22:12:29 +02:00
Adam Wulkiewicz
5aedf7a20a Merge pull request #310 from awulkiew/fix/types2
Replace signed_index_type with signed_size_type.
2015-06-11 18:25:35 +02:00
Adam Wulkiewicz
fb624d5712 Merge pull request #307 from awulkiew/fix/types
Replace int with more suitable type (std::size_t, signed_size_type, template parameter).
2015-06-11 18:21:17 +02:00
Adam Wulkiewicz
d88e1511d4 Merge branch 'fix/rtree_envelope' into develop 2015-06-11 18:17:46 +02:00
Adam Wulkiewicz
1cf2969cf2 [is_valid] Suppress unused parameter warnings. 2015-06-11 17:54:34 +02:00
Adam Wulkiewicz
f1313b27bc [index] Improve support for non-cartesian segments.
Use envelope() when necessary.
Remove assign_inverse() calls.
2015-06-11 16:13:25 +02:00
Menelaos Karavelas
53b5ef3dff [strategies][distance][cross track] expose the radius type as a typedef
(same as for projected_point distance strategy)
2015-06-11 01:35:30 +03:00
Menelaos Karavelas
bc70826be4 Merge pull request #299 from mkaravel/feature/intersection_areal_areal_linear
New feature: support bg::intersection(areal, areal, linear)
2015-06-10 11:43:54 +03:00
Adam Wulkiewicz
68bac52fa4 [algorithms] Replace signed_index_type with signed_size_type. 2015-06-09 17:59:39 +02:00
Adam Wulkiewicz
18de7e1251 [index] Always implement the BOOST_GEOMETRY_INDEX_ASSERT() macro (using BOOST_GEOMETRY_ASSERT_MSG). 2015-06-09 15:57:51 +02:00
Adam Wulkiewicz
c5e9b2004d [buffer][strategies] Replace int with std::size_t in join_round strategy. 2015-06-09 11:41:06 +02:00
Adam Wulkiewicz
c0e390524b [sectionalize] Replace int with signed_size_type, std::size_t or template parameter. 2015-06-09 11:39:56 +02:00
Adam Wulkiewicz
1167e510db [relate] Replace int with std::size_t. 2015-06-09 11:38:18 +02:00
Adam Wulkiewicz
a6604a49a5 [overlay][get_turns] Replace int with signed_size_type or std::size_t. 2015-06-09 11:37:32 +02:00
Adam Wulkiewicz
49369fa5cc [buffer] Replace int with signed_size_type or std::size_t. 2015-06-09 11:36:01 +02:00
Menelaos Karavelas
f23b88d314 [views][boundary view] make the deallocator take the pointer at construction time 2015-06-09 01:27:02 +03:00
Menelaos Karavelas
6e7ae868ee [views][boundary view] replace BOOST_ASSERT by BOOST_GEOMETRY_ASSERT;
use flatten_iterator to get all rings of a multipolygon as a single range;
separate initializer from num_rings computation; use operator new/operator delete
for dynamic memory allocation of views' container; use automatic deallocator helper
class instead of try/catch block;
2015-06-09 00:50:26 +03:00
Menelaos Karavelas
a23d4c97f6 Merge branch 'develop' of github.com:boostorg/geometry into feature/intersection_areal_areal_linear 2015-06-08 23:52:05 +03:00
Adam Wulkiewicz
fb978458e9 [buffer] Replace int with signed_size_type. 2015-06-08 21:26:41 +02:00
Adam Wulkiewicz
e0a436b55b Merge branch 'develop' into fix/buffer
Conflicts:
	include/boost/geometry/algorithms/detail/buffer/buffered_piece_collection.hpp
2015-06-08 21:17:10 +02:00
Adam Wulkiewicz
30beddc7a7 [buffer] Rename signed types, for turn_index and counters use size_t. 2015-06-08 21:10:35 +02:00
Adam Wulkiewicz
dc6988ff60 [util] Replace BOOST_ASSERT with BOOST_GEOMETRY_ASSERT. 2015-06-08 13:40:57 +02:00
Adam Wulkiewicz
3fe9dafa85 [strategies] Replace BOOST_ASSERT with BOOST_GEOMETRY_ASSERT. 2015-06-08 13:40:44 +02:00