Commit Graph

2169 Commits

Author SHA1 Message Date
Menelaos Karavelas
77e4f4b472 [strategies][comparable distance (result)] implement variant-aware
comparable distance result
2014-07-08 12:39:36 +03:00
Menelaos Karavelas
325dbe203b [strategies][distance (result)] polish code a bit;
eliminate result_of namespaces; replace result_of::distance by
distance_result; add support for comparable distances (i.e., add
specializations for default_comparable_strategy);
qualify occurences of variant with boost:: ;
fix bug: when resolving strategies, pass actual geometries instead
of their point types (important in order to return the actual/correct
strategy return type);
2014-07-08 12:34:56 +03:00
Menelaos Karavelas
6681aefa22 [algorithms][comparable distance] make comparable distance algorithm
variant-aware
2014-07-08 12:32:00 +03:00
Menelaos Karavelas
3d17b42a12 [algorithms][distance] eliminate result_of namespaces; replace
result_of::distance by distance_result;
2014-07-08 12:26:29 +03:00
Menelaos Karavelas
2a16d6a554 [strategies][distance] replace variant.hpp include by variant_fwd.hpp 2014-07-03 01:12:10 +03:00
Menelaos Karavelas
730213814c [strategies][distance] simplify implementation of distance_result 2014-07-03 00:51:20 +03:00
Menelaos Karavelas
8f4de21822 Merge branch 'develop' of https://github.com/boostorg/geometry into feature/distance 2014-07-02 23:44:23 +03:00
Menelaos Karavelas
55a7922e1a [algorithms][distance] polish includes; move code in resolve_strategy::result_of
and resolve_variant::result_of namespaces to strategies/distance_result.hpp;
change return type for the distance free function to distance_result<...>::type
or default_distance_result<...>::type (depending on whether a strategy is
passed or not, respectively)
2014-07-02 23:32:22 +03:00
Menelaos Karavelas
efd21367ab [algorithms][comparable distance] change the return type of
comparable_distance to comparable_distance_result<...>::type
2014-07-02 23:30:20 +03:00
Menelaos Karavelas
baf0be47da [strategies][comparable distance] re-implement default_comparable_distance_result
using comparable_distance_result
2014-07-02 23:29:04 +03:00
Menelaos Karavelas
8e22379623 [strategies][distance] re-implement default_distance_result using
distance_result
2014-07-02 23:28:34 +03:00
Menelaos Karavelas
f7cfb6a259 [strategies][comparable distance] implement the class
comparable_distance_result
2014-07-02 23:28:03 +03:00
Menelaos Karavelas
86c96deaaf [strategies][distance] implement the class distance_result 2014-07-02 23:26:56 +03:00
Barend Gehrels
7727ce921e Merge branch 'develop' of github.com:boostorg/geometry into develop 2014-07-02 14:21:12 +02:00
Barend Gehrels
5a008767ae [buffer] restructure buffer_range such that tag is not necessary
and behaviour per geometry-type is done in the dispatch itself.
This also avoids generating side on perpendicular side for linestrings once
(the second one cannot easily be avoided in the current structure)
2014-07-02 14:20:02 +02:00
Barend Gehrels
c9880fbdff [buffer] use range instead of two points as output for buffer_side strategy 2014-07-02 13:04:16 +02:00
Barend Gehrels
c94d6d469d [buffer] use strategy buffer_side instead of generate_side 2014-07-02 12:45:57 +02:00
Barend Gehrels
f933be730d [buffer] move buffer_side to strategies 2014-07-02 12:33:04 +02:00
Barend Gehrels
01151cacf5 [buffer] copy inserter to buffer_side 2014-07-02 12:29:34 +02:00
Adam Wulkiewicz
6e673af06f Merge pull request #81 from mkaravel/feature/is_simple
Feature/is simple
2014-07-02 11:50:58 +02:00
Menelaos Karavelas
a87c68b62f [algorithms][is_valid] remove obsolete comment 2014-07-02 11:53:49 +03:00
Menelaos Karavelas
a1710c2bd3 [doc][algorithms] add documentation for the comparable_distance free
function that takes a strategy
2014-07-02 11:50:04 +03:00
Menelaos Karavelas
bda78a8153 [algorithms][is_valid] fix bug in initialization of DFS data for
detecting cycles
2014-07-02 02:30:24 +03:00
Adam Wulkiewicz
e9178b6a80 Merge pull request #75 from mkaravel/feature/is_simple
Feature/is simple
2014-07-01 17:27:01 +02:00
Menelaos Karavelas
fc14209d5f [algorithms][is_valid] replace TurnPoint const& by TurnPoint const*
in complement graph vertex
2014-07-01 17:50:25 +03:00
Menelaos Karavelas
104aafd05d [algorithms][is_valid] make the complement graph vertex id an unsigned
integer (to avoid conversion warnings)
2014-07-01 09:57:55 +03:00
Menelaos Karavelas
df3da8aa66 [algorithms][is_valid] re-design the complement graph: store neighbors
in the graph instead of at each vertex; store DFS data for detecting
cycles outside the vertices;
2014-07-01 00:05:02 +03:00
Barend Gehrels
9fc3b36d25 Merge pull request #77 from mkaravel/feature/doc-strategies
Feature/doc strategies
2014-06-30 21:04:44 +02:00
Barend Gehrels
a1bde8e927 Merge pull request #72 from mkaravel/fix/graham_andrew
[strategies][agnostic] fix bug in Graham-Andrew strategy:
2014-06-30 20:51:11 +02:00
Menelaos Karavelas
5e94f07ec0 [iterators][point_iterator] remove free functions points_front and points_back 2014-06-30 12:18:03 +03:00
Menelaos Karavelas
31361135dc [algorithms][is_valid] re-structure and polish code a bit;
check relative containment of rings only for rings that are not
associated with turns
2014-06-27 13:36:48 +03:00
Menelaos Karavelas
9930615207 [strategies][distance] update doxygen documentation for pythagoras
point-box and box-box strategies
2014-06-27 03:35:31 +03:00
Menelaos Karavelas
ac17fdcbdc [algorithms][is_simple,is_valid] add doxygen documentation for is_simple and is_valid 2014-06-27 02:38:21 +03:00
Menelaos Karavelas
7ec752d5ea [geometry] add is_simple and is_valid algorithms in geometry.hpp 2014-06-27 02:28:17 +03:00
Menelaos Karavelas
274c64c5d8 [algorithms][is_simple] add missing include 2014-06-27 02:27:28 +03:00
Menelaos Karavelas
f0f037df2b Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple 2014-06-26 22:52:43 +03:00
Barend Gehrels
7baf1a29e5 [buffer] We have to simplify the ring before to avoid very small-scaled
features in the original (convex/concave/convex) being enlarged
in a very large scale and causing issues (IP's within pieces).
This might be reconsidered later. Simplifying with a very small
distance will never be visible in the result,
if it is using round joins. For miter joins they are even more
sensitive to small scale input features, however the result will
look better.

A distance strategy can change behaviour (make larger - set simplify
distance to 0.0 to avoid simplification)

This fixes the parcel issue(s)
2014-06-25 13:32:42 +02:00
Menelaos Karavelas
15773cbf93 [algorithms][is_valid] fix some wrong usages of std::size_t (should
have been int)
2014-06-25 09:34:53 +03:00
Menelaos Karavelas
bcaf4a374a Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple 2014-06-25 01:54:15 +03:00
Barend Gehrels
7f3b509fb5 [buffer] use endcap strategy for spikes. Check jointype also (again)
for line-line intersection because it is based on buffered segments.
2014-06-24 22:48:04 +02:00
Menelaos Karavelas
9059f73d54 [algorithms][is_valid] remove USE_INTERRUPT_POLICY macro 2014-06-24 19:43:32 +03:00
Menelaos Karavelas
ec2417f701 Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple 2014-06-24 14:08:06 +03:00
Menelaos Karavelas
e3d0b1e6e4 [algorithm][is_valid] Re-design complement graph implementation:
* complement graph is now templated by turn points rather than vertices
* vertices get the vertex_handle type from the graph now
* simplify DFS algorithm to use only parent vertex id instead of parent
  vertex (only the parent id is really needed)
The last change also solves incomplete type compilation errors on
darwin/linux clang++, when -stdlib=libc++ is set.
2014-06-24 12:29:04 +03:00
Menelaos Karavelas
5a316f6c7e [algorithms][is_valid] include is_valid for multi-polygons (coming
from a separate file now)
2014-06-24 12:19:42 +03:00
Menelaos Karavelas
69594408ad [algorithms][is_valid] move multi-polygon implementation to separate file 2014-06-24 12:19:04 +03:00
Menelaos Karavelas
59ffebd794 [algorithms][is_valid] re-structure polygon's is_valid algorithm (for
readability and possible usage by is_valid for multi-polygons);
move code to sepatate files (to be used for multi-polygons as well);
move multi-polygon implementation to separate file;
2014-06-24 12:17:28 +03:00
Menelaos Karavelas
e25fb28d71 [algorithms][is_valid] implement predicate class that determines
whether a polygon or multi-polygon turn is acceptable (code partially
moved from algorithms/detail/is_valid/polygon.hpp)
2014-06-24 12:15:38 +03:00
Menelaos Karavelas
b3932db092 [algorithms][is_valid] factor-out in a separate file self turns computation
code (used by polygons and multi-polygons)
2014-06-24 12:13:47 +03:00
Barend Gehrels
9b6aa189bd [buffer] changes in includes/defines 2014-06-23 22:40:03 +02:00
Barend Gehrels
aa307b5ad2 [buffer] add join_selector and use it before generating the join.
This moves responsibility of generation to the calling code, removes it
from the join strategies. It also enables using the end-strategy for the
spikes
2014-06-23 22:39:29 +02:00