Commit Graph

1700 Commits

Author SHA1 Message Date
Menelaos Karavelas
e729f37bbe [distance] perform reverse-dispatch for default strategy 2014-05-08 23:47:22 +03:00
Menelaos Karavelas
3d25114c8e [distance] remove inclusion of default_distance_result (not used) 2014-05-08 22:33:56 +03:00
Menelaos Karavelas
aecc7c8015 Merge branch 'develop' of https://github.com/boostorg/geometry into feature/distance-for-merge 2014-05-08 17:29:00 +03:00
Menelaos Karavelas
1a2ef5c2bc [disjoint] add specializations for linestring/multilinestring, multilinestring/multilinestring; fixed specialization for polygon/multilinestring 2014-05-08 16:39:09 +03:00
Menelaos Karavelas
23f8b97fac [index] include comparable_distance algorithm 2014-05-08 15:59:15 +03:00
Menelaos Karavelas
8a7a14bc53 [index] replace call to comparable_distance_near by bg::comparable_distance 2014-05-08 15:52:53 +03:00
Menelaos Karavelas
203aa991ae [index] replace #include <boost/geomerty/geometry.hpp> by the necessary includes 2014-05-08 15:46:25 +03:00
Adam Wulkiewicz
9ea4b6bf6c [index] Add the support for std::pair<> and boost/std::tuple<> registered as Indexable 2014-05-08 14:42:45 +02:00
Menelaos Karavelas
d289118bd9 [strategies] add the point-box and box-box pythagoras strategies in strategies/strategies.hpp 2014-05-08 15:26:57 +03:00
Menelaos Karavelas
752de3060a [iterators] add free function has_one_element, that tests whether an iterator range has a unique element (has size 1) 2014-05-08 15:15:16 +03:00
Menelaos Karavelas
b1eaf94bfe [strategies][distance] add a template parameter to default distance strategy corresponding to the second geometry of the distance strategy 2014-05-08 15:12:59 +03:00
Menelaos Karavelas
3c64533d7d [distance] add primary dispatch definition under algorithms/dispatch 2014-05-08 15:11:54 +03:00
Menelaos Karavelas
55f63b77df [distance] update distance.hpp: primary dispatch is under algorithms/dispatch/, details are under algorithms/detail/distance/ 2014-05-08 15:10:24 +03:00
Menelaos Karavelas
0600a3419f [strategies][distance] add tags for point-box and box-box strategies 2014-05-08 15:08:09 +03:00
Menelaos Karavelas
cfc4e7a3c9 [multi][distance] move multi/algorithms distance code under algorithms/ keep the file as a placeholder and include algorithms/distance.hpp 2014-05-08 15:06:19 +03:00
Menelaos Karavelas
ddc5ddf0ff [comparable distance] add free function for comparable distance that takes a strategy 2014-05-08 15:04:23 +03:00
Menelaos Karavelas
e783d7ca2e [distance] dispatches for various geometry combinations with the point-point strategy;
the point-point strategy is not the natural distance strategy for these geometry pairs;
the dispatches have been added for backward compatibility;
2014-05-08 15:01:03 +03:00
Menelaos Karavelas
ab6588f9b2 [distance] implementation for distance(multi-point,range) 2014-05-08 15:00:07 +03:00
Menelaos Karavelas
8553124d37 [distance] base cose for distance computations using the R-Tree 2014-05-08 14:58:05 +03:00
Menelaos Karavelas
e1e227c022 [distance] segment-box distance computation 2014-05-08 14:57:44 +03:00
Menelaos Karavelas
3051652a5b [distance] add implementation for distance computation between a polygon and a segment or a box 2014-05-08 14:57:11 +03:00
Menelaos Karavelas
26dfb26d69 [distance] add implementation for distance computation between a range and a segment or a box 2014-05-08 14:53:21 +03:00
Menelaos Karavelas
5d04ac7c92 [distance] segment-to-segment distance computation 2014-05-08 14:52:51 +03:00
Menelaos Karavelas
22142c9040 [distance] add distance code for multi-to-multi geometry combinations and dispatch specializations;
some of the code in this file originated from multi/algorithms/distance.hpp
2014-05-08 14:52:13 +03:00
Menelaos Karavelas
6bac8b43a1 [distance] add distance code for single-to-multi geometry combinations and dispatch specializations;
some of the code in this file originated from multi/algorithms/distance.hpp
2014-05-08 14:49:27 +03:00
Menelaos Karavelas
ad2fbc9e5b [distance] add helper classes for choosing default strategies 2014-05-08 14:49:01 +03:00
Menelaos Karavelas
17d3f0e78e [strategies][distance] add class to convert a distance result from comparable to regular distance result if needed;
add implementation of this for cartesian coordinates (applies sqrt);
2014-05-08 14:47:19 +03:00
Menelaos Karavelas
f9825be6bf [distance] add implementation of distance(point, geometry); most of the origina code was in algorithms/distance.hpp; the point-box combination was added;
point_to_range takes only one strategy now; all intermediate distance computations done with comaprable distances (conversion happens at the end);
2014-05-08 14:43:38 +03:00
Menelaos Karavelas
ebc8d5cf63 [distance] add distance(box, box) detail implementation 2014-05-08 14:43:10 +03:00
Menelaos Karavelas
affc4340c2 [strategies][distance] add cartesian strategy for point-box and box-box distance computation 2014-05-08 13:49:24 +03:00
Menelaos Karavelas
1e3041e748 [overlay][P/P, L/L] replace BOOST_AUTO_TPL by the exact type 2014-05-08 01:28:09 +03:00
Barend Gehrels
899c94b148 Merge branch 'develop' of github.com:boostorg/geometry into develop 2014-05-07 13:15:22 +02:00
Adam Wulkiewicz
dffd4a4f64 Merge pull request #22 from mkaravel/feature/setops
Feature/setops
2014-05-07 11:58:11 +02:00
Adam Wulkiewicz
6407199617 Merge pull request #21 from mkaravel/feature/point_iterator
Feature/point iterator
2014-05-07 11:57:20 +02:00
Barend Gehrels
22f3c65b5d [doc] Added doc for parameters Doxygen was missing 2014-05-07 11:40:57 +02:00
Menelaos Karavelas
51c601bb49 [point_iterator_type] replace #include of type traits by the specific one used (is_const) 2014-05-06 22:02:26 +03:00
Menelaos Karavelas
793a6321c6 [copy segments] replace generic #include of type traits by the specific one used (integral_constant) 2014-05-06 21:51:15 +03:00
Adam Wulkiewicz
8eefe4d3ba [equals] Add missing copyright info 2014-05-06 19:00:28 +02:00
Adam Wulkiewicz
8bb1d98aaf [equals][relate] Add equals() Ls/MLs, MLs/MLs. Fix relate(L/L).
Also use relate() in equals(Ls,Ls) because collect_vectors() approach doesn't work properly for non-simple or even opposite/reversed Linestrings.

Fix how 'u' is handled in relate() in the edge case when there are more 'u' operations in the same point, also when 'u' is on the first endpoint followed by 'i' on the same IP.

Add tests for equals() and relate().
2014-05-06 16:18:05 +02:00
Menelaos Karavelas
826045c3a1 [set ops L/L] remove commented code in assign_policy; add template parameter to control the behavior of intersection wrt whether isolated points are followed or not; 2014-05-05 12:10:20 +03:00
Menelaos Karavelas
a73ce5fbd6 Merge branch 'develop' of https://github.com/boostorg/geometry into feature/setops 2014-05-05 10:23:45 +03:00
Menelaos Karavelas
99dbc5082e Merge branch 'develop' of https://github.com/boostorg/geometry into feature/point_iterator 2014-05-05 10:22:25 +03:00
Menelaos Karavelas
6adb2e9d51 [point_reverse_iterator] implement reverse iterator for geometries 2014-05-05 09:51:22 +03:00
Menelaos Karavelas
0648b7293e [flatten_iterator] implement decrement operation for flatten iterator 2014-05-05 09:50:42 +03:00
Menelaos Karavelas
cd1d490d2e [point_iterator] add free functions points_front and points_back that return the first and last point of a geometry 2014-05-05 09:50:04 +03:00
Adam Wulkiewicz
aea578c602 [get_turns] Fix turn operation is_collinear values for L/L and L/A.
is_collinear for the first endpoint of L is now unified and is always equal to FALSE.

Add tests of is_collinear. It is tested by passing 4th and 5th char in the expected turn string (= means collinear, + means non-collinear), e.g. "mxi=+" for L/L means that L1 ends in this IP and was collinear before meeting the Point, L2 is going "inside" intersection and wasn't collinear before.

Replace method_and_operation_replacer with turn_transformer.
2014-05-04 22:31:13 +02:00
Adam Wulkiewicz
e6ef0b0328 [get_turns] Use RobustPolicy in a unified way in all three get_turn_info* policies (A/A, L/A, and L/L).
Newly introduced intersection_info containing IntersectionResult, SideCalculator and Point refs is used also in get_turn_info for A/A.
Robust points are stored only if RobustPolicy is not no_rescale_policy.
This commit also fixes an error in get_turn_info - swapped_side_calc created for method_touch_interior ('m') should use robust points just like the original one.
2014-05-04 01:26:12 +02:00
Barend Gehrels
bff1c65b0a fixed comment 2014-05-03 14:41:47 +02:00
Barend Gehrels
7b2a4cb589 [intersection] fix segments_intersection_ratios
adding the new one_degenerate method
2014-05-03 14:41:33 +02:00
Adam Wulkiewicz
6abe245eb7 [get_turns] Fix invalid condition get_turn_info_la 2014-05-03 02:47:58 +02:00