mirror of
https://github.com/boostorg/geometry.git
synced 2025-05-09 23:24:02 +00:00
feat: add cmake support to examples
- replace BOOST_FOREACH - replace Boost.Assign - replace typedef with using - other minor changes
This commit is contained in:
parent
966567ff2e
commit
38adce676e
40
doc/src/examples/CMakeLists.txt
Normal file
40
doc/src/examples/CMakeLists.txt
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Boost.Geometry
|
||||||
|
|
||||||
|
# Copyright (c) 2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
|
# Use, modification and distribution is subject to the Boost Software License,
|
||||||
|
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
function(boost_geometry_add_example prefix item)
|
||||||
|
set(example_name "boost_geometry_example_${prefix}_${item}")
|
||||||
|
add_executable(${example_name} ${item}.cpp)
|
||||||
|
|
||||||
|
# Add a dependency to Boost.Geometry
|
||||||
|
target_link_libraries(${example_name}
|
||||||
|
PRIVATE
|
||||||
|
Boost::geometry
|
||||||
|
)
|
||||||
|
|
||||||
|
# Include the main Geometry test folder and the current folder
|
||||||
|
target_include_directories(${example_name}
|
||||||
|
PRIVATE
|
||||||
|
.)
|
||||||
|
|
||||||
|
# To compile with C++14
|
||||||
|
target_compile_features(${example_name} PRIVATE cxx_std_14)
|
||||||
|
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
foreach(item IN ITEMS
|
||||||
|
quick_start
|
||||||
|
)
|
||||||
|
boost_geometry_add_example("example" ${item})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
add_subdirectory(algorithms)
|
||||||
|
add_subdirectory(core)
|
||||||
|
add_subdirectory(geometries)
|
||||||
|
add_subdirectory(io)
|
||||||
|
add_subdirectory(strategies)
|
||||||
|
add_subdirectory(views)
|
73
doc/src/examples/algorithms/CMakeLists.txt
Normal file
73
doc/src/examples/algorithms/CMakeLists.txt
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Boost.Geometry
|
||||||
|
# Copyright (c) 2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
# Use, modification and distribution is subject to the Boost Software License,
|
||||||
|
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
foreach(item IN ITEMS
|
||||||
|
append
|
||||||
|
area
|
||||||
|
area_with_strategy
|
||||||
|
assign
|
||||||
|
assign_2d_point
|
||||||
|
assign_3d_point
|
||||||
|
assign_inverse
|
||||||
|
assign_points
|
||||||
|
buffer_with_strategies
|
||||||
|
centroid
|
||||||
|
clear
|
||||||
|
closest_points
|
||||||
|
closest_points_strategy
|
||||||
|
comparable_distance
|
||||||
|
convert
|
||||||
|
convex_hull
|
||||||
|
correct
|
||||||
|
densify
|
||||||
|
densify_strategy
|
||||||
|
discrete_frechet_distance
|
||||||
|
discrete_frechet_distance_strategy
|
||||||
|
discrete_hausdorff_distance
|
||||||
|
discrete_hausdorff_distance_strategy
|
||||||
|
difference
|
||||||
|
distance
|
||||||
|
envelope
|
||||||
|
equals
|
||||||
|
expand
|
||||||
|
for_each_point
|
||||||
|
for_each_point_const
|
||||||
|
for_each_segment_const
|
||||||
|
intersection_ls_ls_point
|
||||||
|
intersection_segment
|
||||||
|
intersects_linestring
|
||||||
|
is_simple
|
||||||
|
is_valid
|
||||||
|
is_valid_failure
|
||||||
|
is_valid_message
|
||||||
|
length
|
||||||
|
length_with_strategy
|
||||||
|
line_interpolate
|
||||||
|
line_interpolate_strategy
|
||||||
|
make_2d_point
|
||||||
|
make_3d_point
|
||||||
|
make_inverse
|
||||||
|
num_geometries
|
||||||
|
num_interior_rings
|
||||||
|
num_points
|
||||||
|
num_segments
|
||||||
|
return_envelope
|
||||||
|
relate
|
||||||
|
relation
|
||||||
|
reverse
|
||||||
|
simplify
|
||||||
|
sym_difference
|
||||||
|
transform
|
||||||
|
transform_with_strategy
|
||||||
|
union
|
||||||
|
unique
|
||||||
|
within
|
||||||
|
)
|
||||||
|
|
||||||
|
boost_geometry_add_example("algorithms" ${item})
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,32 +16,30 @@
|
|||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp> /*< At the end to avoid conflicts with Boost.QVM >*/
|
|
||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::assign::tuple_list_of;
|
|
||||||
using boost::make_tuple;
|
|
||||||
using boost::geometry::append;
|
using boost::geometry::append;
|
||||||
|
|
||||||
typedef boost::geometry::model::polygon<boost::tuple<int, int> > polygon;
|
using vector = std::vector<boost::tuple<int, int>>;
|
||||||
|
using polygon = boost::geometry::model::polygon<boost::tuple<int, int>>;
|
||||||
|
|
||||||
polygon poly;
|
polygon poly;
|
||||||
|
|
||||||
// Append a range
|
// Append a range
|
||||||
append(poly, tuple_list_of(0, 0)(0, 10)(11, 11)(10, 0)); /*< tuple_list_of delivers a range and can therefore be used in boost::geometry::append >*/
|
append(poly, vector{{0.0, 0.0}, {0.0, 10.0}, {11.0, 11.0}, {10.0, 0.0}}); /*< vector models a range and can therefore be used in boost::geometry::append >*/
|
||||||
// Append a point (in this case the closing point)
|
// Append a point (in this case the closing point)
|
||||||
append(poly, make_tuple(0, 0));
|
append(poly, boost::make_tuple(0, 0));
|
||||||
|
|
||||||
// Create an interior ring (append does not do this automatically)
|
// Create an interior ring (append does not do this automatically)
|
||||||
boost::geometry::interior_rings(poly).resize(1);
|
boost::geometry::interior_rings(poly).resize(1);
|
||||||
|
|
||||||
// Append a range to the interior ring
|
// Append a range to the interior ring
|
||||||
append(poly, tuple_list_of(2, 2)(2, 5)(6, 6)(5, 2), 0); /*< The last parameter ring_index 0 denotes the first interior ring >*/
|
append(poly, vector{{2, 2}, {2, 5}, {6, 6}, {5, 2}}, 0); /*< The last parameter ring_index 0 denotes the first interior ring >*/
|
||||||
|
|
||||||
// Append a point to the first interior ring
|
// Append a point to the first interior ring
|
||||||
append(poly, make_tuple(2, 2), 0);
|
append(poly, boost::make_tuple(2, 2), 0);
|
||||||
|
|
||||||
std::cout << boost::geometry::dsv(poly) << std::endl;
|
std::cout << boost::geometry::dsv(poly) << std::endl;
|
||||||
|
|
||||||
|
@ -21,13 +21,13 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Calculate the area of a cartesian polygon
|
// Calculate the area of a cartesian polygon
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly;
|
||||||
bg::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", poly);
|
bg::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", poly);
|
||||||
double area = bg::area(poly);
|
double area = bg::area(poly);
|
||||||
std::cout << "Area: " << area << std::endl;
|
std::cout << "Area: " << area << std::endl;
|
||||||
|
|
||||||
// Calculate the area of a spherical equatorial polygon
|
// Calculate the area of a spherical equatorial polygon
|
||||||
bg::model::polygon<bg::model::point<float, 2, bg::cs::spherical_equatorial<bg::degree> > > sph_poly;
|
bg::model::polygon<bg::model::point<float, 2, bg::cs::spherical_equatorial<bg::degree>>> sph_poly;
|
||||||
bg::read_wkt("POLYGON((0 0,0 45,45 0,0 0))", sph_poly);
|
bg::read_wkt("POLYGON((0 0,0 45,45 0,0 0))", sph_poly);
|
||||||
area = bg::area(sph_poly);
|
area = bg::area(sph_poly);
|
||||||
std::cout << "Area: " << area << std::endl;
|
std::cout << "Area: " << area << std::endl;
|
||||||
|
@ -25,7 +25,7 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Create spherical polygon
|
// Create spherical polygon
|
||||||
bg::model::polygon<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree> > > sph_poly;
|
bg::model::polygon<bg::model::point<double, 2, bg::cs::spherical_equatorial<bg::degree>>> sph_poly;
|
||||||
bg::read_wkt("POLYGON((0 0,0 1,1 0,0 0))", sph_poly);
|
bg::read_wkt("POLYGON((0 0,0 1,1 0,0 0))", sph_poly);
|
||||||
|
|
||||||
// Create spherical strategy with mean Earth radius in meters
|
// Create spherical strategy with mean Earth radius in meters
|
||||||
@ -36,7 +36,7 @@ int main()
|
|||||||
std::cout << "Area: " << area << std::endl;
|
std::cout << "Area: " << area << std::endl;
|
||||||
|
|
||||||
// Create geographic polygon
|
// Create geographic polygon
|
||||||
bg::model::polygon<bg::model::point<double, 2, bg::cs::geographic<bg::degree> > > geo_poly;
|
bg::model::polygon<bg::model::point<double, 2, bg::cs::geographic<bg::degree>>> geo_poly;
|
||||||
bg::read_wkt("POLYGON((0 0,0 1,1 0,0 0))", geo_poly);
|
bg::read_wkt("POLYGON((0 0,0 1,1 0,0 0))", geo_poly);
|
||||||
|
|
||||||
// Create geographic strategy with WGS84 spheroid
|
// Create geographic strategy with WGS84 spheroid
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -22,9 +22,9 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::box<point> box;
|
using box = boost::geometry::model::box<point>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
point p1;
|
point p1;
|
||||||
box b;
|
box b;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::d2::point_xy<double> point;
|
using point = model::d2::point_xy<double>;
|
||||||
typedef model::box<point> box;
|
using box = model::box<point>;
|
||||||
|
|
||||||
box b;
|
box b;
|
||||||
assign_values(b, 2, 2, 5, 5);
|
assign_values(b, 2, 2, 5, 5);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::point<float, 3, cs::cartesian> point;
|
using point = model::point<float, 3, cs::cartesian>;
|
||||||
typedef model::box<point> box;
|
using box = model::box<point>;
|
||||||
|
|
||||||
box all;
|
box all;
|
||||||
assign_inverse(all);
|
assign_inverse(all);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::d2::point_xy<double> point;
|
using point = model::d2::point_xy<double>;
|
||||||
typedef model::segment<point> segment;
|
using segment = model::segment<point>;
|
||||||
|
|
||||||
segment s;
|
segment s;
|
||||||
assign_values(s, 1, 1, 2, 2);
|
assign_values(s, 1, 1, 2, 2);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::d2::point_xy<int> point;
|
using point = model::d2::point_xy<int>;
|
||||||
typedef model::box<point> box;
|
using box = model::box<point>;
|
||||||
|
|
||||||
point lower_left(0, 0), upper_right(2, 2);
|
point lower_left(0, 0), upper_right(2, 2);
|
||||||
|
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
// http://www.boost.org/LICENSE_1_0.txt)
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
//[assign_points
|
//[assign_points
|
||||||
//` Shows usage of Boost.Geometry's assign, Boost.Assign, and Boost.Range to assign ranges of a linestring
|
//` Shows usage of Boost.Geometry's assign, and Boost.Range to assign ranges of a linestring
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -16,7 +16,6 @@
|
|||||||
#include <boost/geometry/geometries/linestring.hpp>
|
#include <boost/geometry/geometries/linestring.hpp>
|
||||||
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
#include <boost/geometry/geometries/adapted/boost_range/filtered.hpp>
|
#include <boost/geometry/geometries/adapted/boost_range/filtered.hpp>
|
||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
@ -41,14 +40,12 @@ private :
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using namespace boost::assign;
|
using ls = boost::geometry::model::linestring<boost::tuple<int, int>>;
|
||||||
|
|
||||||
typedef boost::geometry::model::linestring<boost::tuple<int, int> > ls;
|
|
||||||
|
|
||||||
ls line1, line2, line3;
|
ls line1, line2, line3;
|
||||||
|
|
||||||
line1 = tuple_list_of(0, 0)(2, 3)(4, 0)(6, 3)(8, 0)(10, 3)(12, 0); /*< tuple_list_of is part of Boost.Assign and can be used for Boost.Geometry if points are tuples >*/
|
line1 = {{0, 0}, {2, 3}, {4, 0}, {6, 3}, {8, 0}, {10, 3}, {12, 0}};
|
||||||
boost::geometry::assign_points(line2, tuple_list_of(0, 0)(2, 2)(4, 0)(6, 2)(8, 0)); /*< tuple_list_of delivers a range and can therefore be used in boost::geometry::assign >*/
|
boost::geometry::assign_points(line2, ls({{0, 0}, {2, 2}, {4, 0}, {6, 2}, {8, 0}}));
|
||||||
boost::geometry::assign_points(line3, line1 | boost::adaptors::filtered(x_between<int>(4, 8))); /*< Boost.Range adaptors can also be used in boost::geometry::assign >*/
|
boost::geometry::assign_points(line3, line1 | boost::adaptors::filtered(x_between<int>(4, 8))); /*< Boost.Range adaptors can also be used in boost::geometry::assign >*/
|
||||||
|
|
||||||
std::cout << "line 1: " << boost::geometry::dsv(line1) << std::endl;
|
std::cout << "line 1: " << boost::geometry::dsv(line1) << std::endl;
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
point_type p1(0, 0);
|
point_type p1(0, 0);
|
||||||
point_type p2(1, 1);
|
point_type p2(1, 1);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
namespace bg = boost::geometry;
|
namespace bg = boost::geometry;
|
||||||
typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > point_type;
|
using point_type = bg::model::point<double, 2, bg::cs::geographic<bg::degree>>;
|
||||||
|
|
||||||
point_type p1(0, 0);
|
point_type p1(0, 0);
|
||||||
point_type p2(1, 1);
|
point_type p2(1, 1);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2013, 2014 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2013, 2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef double coordinate_type;
|
using coordinate_type = double;
|
||||||
typedef boost::geometry::model::d2::point_xy<coordinate_type> point;
|
using point = boost::geometry::model::d2::point_xy<coordinate_type>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
// Declare strategies
|
// Declare strategies
|
||||||
const double buffer_distance = 1.0;
|
const double buffer_distance = 1.0;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt(
|
boost::geometry::read_wkt(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,28 +19,21 @@
|
|||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::assign::tuple_list_of;
|
using point = boost::tuple<float, float>;
|
||||||
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
using ring = boost::geometry::model::ring<point>;
|
||||||
|
|
||||||
typedef boost::tuple<float, float> point;
|
// Create a square as exterior ring, with a triangle as interior ring
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
polygon poly{{{0, 0}, {0, 10}, {10, 10}, {10, 0}, {0, 0}}, {{{1, 2}, {8, 2}, {4, 6}, {1, 2}}}};
|
||||||
typedef boost::geometry::model::ring<point> ring;
|
|
||||||
|
|
||||||
polygon poly;
|
|
||||||
|
|
||||||
// Fill the polygon (using its own methods + Boost.Assign)
|
|
||||||
poly.outer() = tuple_list_of(0, 0)(0, 9)(10, 10)(0, 0);
|
|
||||||
poly.inners().push_back(tuple_list_of(1, 2)(4, 6)(2, 8)(1, 2));
|
|
||||||
|
|
||||||
std::cout << boost::geometry::dsv(poly) << std::endl;
|
std::cout << boost::geometry::dsv(poly) << std::endl;
|
||||||
boost::geometry::clear(poly);
|
boost::geometry::clear(poly);
|
||||||
std::cout << boost::geometry::dsv(poly) << std::endl;
|
std::cout << boost::geometry::dsv(poly) << std::endl;
|
||||||
|
|
||||||
// Create a ring using Boost.Assign
|
// Create a triangle
|
||||||
ring r = tuple_list_of(0, 0)(0, 9)(8, 8)(0, 0);
|
ring r{{0, 0}, {0, 9}, {8, 8}, {0, 0}};
|
||||||
|
|
||||||
std::cout << boost::geometry::dsv(r) << std::endl;
|
std::cout << boost::geometry::dsv(r) << std::endl;
|
||||||
boost::geometry::clear(r);
|
boost::geometry::clear(r);
|
||||||
@ -56,7 +49,7 @@ int main()
|
|||||||
/*`
|
/*`
|
||||||
Output:
|
Output:
|
||||||
[pre
|
[pre
|
||||||
(((0, 0), (0, 10), (11, 11), (0, 0)), ((0, 0), (0, 10), (11, 11), (0, 0)))
|
(((0, 0), (0, 10), (10, 10), (10, 0), (0, 0)), ((1, 2), (8, 2), (4, 6), (1, 2)))
|
||||||
(())
|
(())
|
||||||
((0, 0), (0, 9), (8, 8), (0, 0))
|
((0, 0), (0, 9), (8, 8), (0, 0))
|
||||||
()
|
()
|
||||||
|
@ -23,10 +23,10 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
typedef boost::geometry::model::multi_point<point_type> multi_point_type;
|
using multi_point_type = boost::geometry::model::multi_point<point_type>;
|
||||||
|
|
||||||
point_type p(4.3,1.9);
|
point_type p(4.3,1.9);
|
||||||
point_type p0(0,0);
|
point_type p0(0,0);
|
||||||
|
@ -21,14 +21,14 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy
|
using point_type = boost::geometry::model::d2::point_xy
|
||||||
<
|
<
|
||||||
double,
|
double,
|
||||||
boost::geometry::cs::geographic<boost::geometry::degree>
|
boost::geometry::cs::geographic<boost::geometry::degree>
|
||||||
> point_type;
|
>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
typedef boost::geometry::model::multi_point<point_type> multi_point_type;
|
using multi_point_type = boost::geometry::model::multi_point<point_type>;
|
||||||
|
|
||||||
point_type p(4.3,1.9);
|
point_type p(4.3,1.9);
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,11 +16,10 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
|
|
||||||
#include <boost/numeric/conversion/bounds.hpp>
|
#include <boost/numeric/conversion/bounds.hpp>
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
point_type p(1.4, 2.6);
|
point_type p(1.4, 2.6);
|
||||||
|
|
||||||
@ -35,7 +34,7 @@ int main()
|
|||||||
|
|
||||||
point_type min_p;
|
point_type min_p;
|
||||||
double min_d = boost::numeric::bounds<double>::highest();
|
double min_d = boost::numeric::bounds<double>::highest();
|
||||||
BOOST_FOREACH(point_type const& pv, v)
|
for (point_type const& pv : v)
|
||||||
{
|
{
|
||||||
double d = boost::geometry::comparable_distance(p, pv);
|
double d = boost::geometry::comparable_distance(p, pv);
|
||||||
if (d < min_d)
|
if (d < min_d)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -22,9 +22,9 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::box<point> box;
|
using box = boost::geometry::model::box<point>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
point p1(1, 1);
|
point p1(1, 1);
|
||||||
box bx = boost::geometry::make<box>(1, 1, 2, 2);
|
box bx = boost::geometry::make<box>(1, 1, 2, 2);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -21,8 +21,8 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
|||||||
/*<-*/ #include "create_svg_two.hpp" /*->*/
|
/*<-*/ #include "create_svg_two.hpp" /*->*/
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::tuple<double, double> point;
|
using point = boost::tuple<double, double>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
polygon poly;
|
polygon poly;
|
||||||
boost::geometry::read_wkt("polygon((2.0 1.3, 2.4 1.7, 2.8 1.8, 3.4 1.2, 3.7 1.6,3.4 2.0, 4.1 3.0"
|
boost::geometry::read_wkt("polygon((2.0 1.3, 2.4 1.7, 2.8 1.8, 3.4 1.2, 3.7 1.6,3.4 2.0, 4.1 3.0"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,38 +18,37 @@
|
|||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::assign::tuple_list_of;
|
using clockwise_closed_polygon = boost::geometry::model::polygon
|
||||||
|
|
||||||
typedef boost::geometry::model::polygon
|
|
||||||
<
|
<
|
||||||
boost::tuple<int, int>
|
boost::tuple<int, int>
|
||||||
> clockwise_closed_polygon;
|
>;
|
||||||
|
|
||||||
clockwise_closed_polygon cwcp;
|
clockwise_closed_polygon cwcp;
|
||||||
|
|
||||||
// Fill it counterclockwise (so wrongly), forgetting the closing point
|
// Fill it counterclockwise (so wrongly), forgetting the closing point
|
||||||
boost::geometry::exterior_ring(cwcp) = tuple_list_of(0, 0)(10, 10)(0, 9);
|
boost::geometry::exterior_ring(cwcp) = {{0, 0}, {10, 10}, {0, 9}};
|
||||||
|
|
||||||
// Add a counterclockwise closed inner ring (this is correct)
|
// Add a counterclockwise closed inner ring (this is correct)
|
||||||
boost::geometry::interior_rings(cwcp).push_back(tuple_list_of(1, 2)(4, 6)(2, 8)(1, 2));
|
boost::geometry::interior_rings(cwcp).push_back({{1, 2}, {4, 6}, {2, 8}, {1, 2}});
|
||||||
|
|
||||||
// Its area should be negative (because of wrong orientation)
|
// Its area should be negative (because of wrong orientation)
|
||||||
// and wrong (because of omitted closing point)
|
// and wrong (because of omitted closing point)
|
||||||
double area_before = boost::geometry::area(cwcp);
|
const auto area_before = boost::geometry::area(cwcp);
|
||||||
|
const auto count_before = boost::geometry::num_points(cwcp);
|
||||||
|
|
||||||
// Correct it!
|
// Correct it!
|
||||||
boost::geometry::correct(cwcp);
|
boost::geometry::correct(cwcp);
|
||||||
|
|
||||||
// Check its new area
|
// Check its new area
|
||||||
double area_after = boost::geometry::area(cwcp);
|
const auto area_after = boost::geometry::area(cwcp);
|
||||||
|
const auto count_after = boost::geometry::num_points(cwcp);
|
||||||
|
|
||||||
// And output it
|
// And output it
|
||||||
std::cout << boost::geometry::dsv(cwcp) << std::endl;
|
std::cout << boost::geometry::dsv(cwcp) << std::endl;
|
||||||
std::cout << area_before << " -> " << area_after << std::endl;
|
std::cout << area_before << " -> " << area_after << std::endl;
|
||||||
|
std::cout << count_before << " -> " << count_after << std::endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -63,6 +62,7 @@ Output:
|
|||||||
[pre
|
[pre
|
||||||
(((0, 0), (0, 9), (10, 10), (0, 0)), ((1, 2), (4, 6), (2, 8), (1, 2)))
|
(((0, 0), (0, 9), (10, 10), (0, 0)), ((1, 2), (4, 6), (2, 8), (1, 2)))
|
||||||
-7 -> 38
|
-7 -> 38
|
||||||
|
7 -> 8
|
||||||
]
|
]
|
||||||
*/
|
*/
|
||||||
//]
|
//]
|
||||||
|
@ -21,22 +21,22 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Checks if the first geometry is inside or on border the second geometry.
|
// Checks if the first geometry is inside or on border the second geometry.
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly1;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly1;
|
||||||
bg::read_wkt("POLYGON((0 2,0 3,2 4,1 2,0 2))", poly1);
|
bg::read_wkt("POLYGON((0 2,0 3,2 4,1 2,0 2))", poly1);
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly2;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly2;
|
||||||
bg::read_wkt("POLYGON((0 4,3 4,2 2,0 1,0 4))", poly2);
|
bg::read_wkt("POLYGON((0 4,3 4,2 2,0 1,0 4))", poly2);
|
||||||
bool check_covered = bg::covered_by(poly1, poly2);
|
bool check_covered = bg::covered_by(poly1, poly2);
|
||||||
if (check_covered) {
|
if (check_covered) {
|
||||||
std::cout << "Covered: Yes" << std::endl;
|
std::cout << "Covered: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Covered: No" << std::endl;
|
std::cout << "Covered: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly3;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly3;
|
||||||
bg::read_wkt("POLYGON((-1 -1,-3 -4,-7 -7,-4 -3,-1 -1))", poly3);
|
bg::read_wkt("POLYGON((-1 -1,-3 -4,-7 -7,-4 -3,-1 -1))", poly3);
|
||||||
check_covered = bg::covered_by(poly1, poly3);
|
check_covered = bg::covered_by(poly1, poly3);
|
||||||
if (check_covered) {
|
if (check_covered) {
|
||||||
std::cout << "Covered: Yes" << std::endl;
|
std::cout << "Covered: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Covered: No" << std::endl;
|
std::cout << "Covered: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
|
|
||||||
// Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// This file was modified by Oracle on 2014.
|
// This file was modified by Oracle on 2014.
|
||||||
// Modifications copyright (c) 2014, Oracle and/or its affiliates.
|
// Modifications copyright (c) 2014, Oracle and/or its affiliates.
|
||||||
@ -29,7 +29,7 @@ void create_svg(std::string const& filename, Geometry const& g)
|
|||||||
#if defined(HAVE_SVG)
|
#if defined(HAVE_SVG)
|
||||||
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
||||||
|
|
||||||
typedef typename boost::geometry::point_type<Geometry>::type point_type;
|
using point_type = typename boost::geometry::point_type<Geometry>::type;
|
||||||
std::ofstream svg(filename.c_str());
|
std::ofstream svg(filename.c_str());
|
||||||
|
|
||||||
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -13,7 +13,6 @@
|
|||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
#include <boost/core/ignore_unused.hpp>
|
#include <boost/core/ignore_unused.hpp>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
@ -27,7 +26,7 @@ void create_svg(std::string const& filename, Geometry const& a, Geometry const&
|
|||||||
#if defined(HAVE_SVG)
|
#if defined(HAVE_SVG)
|
||||||
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
||||||
|
|
||||||
typedef typename boost::geometry::point_type<Geometry>::type point_type;
|
using point_type = typename boost::geometry::point_type<Geometry>::type;
|
||||||
std::ofstream svg(filename.c_str());
|
std::ofstream svg(filename.c_str());
|
||||||
|
|
||||||
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
||||||
@ -37,7 +36,7 @@ void create_svg(std::string const& filename, Geometry const& a, Geometry const&
|
|||||||
mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2");
|
mapper.map(a, "fill-opacity:0.5;fill:rgb(153,204,0);stroke:rgb(153,204,0);stroke-width:2");
|
||||||
mapper.map(b, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
|
mapper.map(b, "fill-opacity:0.3;fill:rgb(51,51,153);stroke:rgb(51,51,153);stroke-width:2");
|
||||||
int i = 0;
|
int i = 0;
|
||||||
BOOST_FOREACH(typename boost::range_value<Range>::type const& g, range)
|
for (typename boost::range_value<Range>::type const& g : range)
|
||||||
{
|
{
|
||||||
mapper.map(g, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round");
|
mapper.map(g, "opacity:0.8;fill:none;stroke:rgb(255,128,0);stroke-width:4;stroke-dasharray:1,7;stroke-linecap:round");
|
||||||
std::ostringstream out;
|
std::ostringstream out;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -24,7 +24,7 @@ void create_svg(std::string const& filename, Geometry1 const& a, Geometry2 const
|
|||||||
#if defined(HAVE_SVG)
|
#if defined(HAVE_SVG)
|
||||||
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
std::cout << std::endl << "[$img/algorithms/" << boost::replace_all_copy(filename, ".svg", ".png") << "]" << std::endl << std::endl;
|
||||||
|
|
||||||
typedef typename boost::geometry::point_type<Geometry1>::type point_type;
|
using point_type = typename boost::geometry::point_type<Geometry1>::type;
|
||||||
std::ofstream svg(filename.c_str());
|
std::ofstream svg(filename.c_str());
|
||||||
|
|
||||||
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
||||||
|
@ -21,23 +21,23 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Checks if the two geometries (here, a polygon and a linestring) crosses or not.
|
// Checks if the two geometries (here, a polygon and a linestring) crosses or not.
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly;
|
||||||
bg::read_wkt("POLYGON((0 0,0 3,3 3,3 0,0 0))", poly);
|
bg::read_wkt("POLYGON((0 0,0 3,3 3,3 0,0 0))", poly);
|
||||||
bg::model::linestring<bg::model::d2::point_xy<double> > line1;
|
bg::model::linestring<bg::model::d2::point_xy<double>> line1;
|
||||||
bg::read_wkt("LINESTRING(1 1,2 2,4 4)", line1);
|
bg::read_wkt("LINESTRING(1 1,2 2,4 4)", line1);
|
||||||
bool check_crosses = bg::crosses(poly, line1);
|
bool check_crosses = bg::crosses(poly, line1);
|
||||||
if (check_crosses) {
|
if (check_crosses) {
|
||||||
std::cout << "Crosses: Yes" << std::endl;
|
std::cout << "Crosses: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Crosses: No" << std::endl;
|
std::cout << "Crosses: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Edge case: linestring just touches the polygon but doesn't crosses it.
|
// Edge case: linestring just touches the polygon but doesn't crosses it.
|
||||||
bg::model::linestring<bg::model::d2::point_xy<double> > line2;
|
bg::model::linestring<bg::model::d2::point_xy<double>> line2;
|
||||||
bg::read_wkt("LINESTRING(1 1,1 2,1 3)", line2);
|
bg::read_wkt("LINESTRING(1 1,1 2,1 3)", line2);
|
||||||
check_crosses = bg::crosses(poly, line2);
|
check_crosses = bg::crosses(poly, line2);
|
||||||
if (check_crosses) {
|
if (check_crosses) {
|
||||||
std::cout << "Crosses: Yes" << std::endl;
|
std::cout << "Crosses: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Crosses: No" << std::endl;
|
std::cout << "Crosses: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt(
|
boost::geometry::read_wkt(
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
namespace bg = boost::geometry;
|
namespace bg = boost::geometry;
|
||||||
typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > point_type;
|
using point_type = bg::model::point<double, 2, bg::cs::geographic<bg::degree>>;
|
||||||
typedef bg::model::linestring<point_type> linestring_type;
|
using linestring_type = bg::model::linestring<point_type>;
|
||||||
|
|
||||||
linestring_type ls;
|
linestring_type ls;
|
||||||
bg::read_wkt("LINESTRING(0 0,1 1)", ls);
|
bg::read_wkt("LINESTRING(0 0,1 1)", ls);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,13 +16,11 @@
|
|||||||
#include <boost/geometry.hpp>
|
#include <boost/geometry.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
|
using polygon = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>>;
|
||||||
|
|
||||||
polygon green, blue;
|
polygon green, blue;
|
||||||
|
|
||||||
@ -38,7 +36,7 @@ int main()
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
std::cout << "green - blue:" << std::endl;
|
std::cout << "green - blue:" << std::endl;
|
||||||
BOOST_FOREACH(polygon const& p, output)
|
for (polygon const& p : output)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
@ -49,7 +47,7 @@ int main()
|
|||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
std::cout << "blue - green:" << std::endl;
|
std::cout << "blue - green:" << std::endl;
|
||||||
BOOST_FOREACH(polygon const& p, output)
|
for (polygon const& p : output)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,12 +17,11 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
|
using polygon = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>>;
|
||||||
|
|
||||||
polygon green, blue;
|
polygon green, blue;
|
||||||
|
|
||||||
@ -51,7 +50,7 @@ int main()
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
std::cout << "(blue \ green) u (green \ blue):" << std::endl;
|
std::cout << "(blue \ green) u (green \ blue):" << std::endl;
|
||||||
BOOST_FOREACH(polygon const& p, output)
|
for (polygon const& p : output)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
|
|
||||||
linestring_type ls1, ls2;
|
linestring_type ls1, ls2;
|
||||||
boost::geometry::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
boost::geometry::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
namespace bg = boost::geometry;
|
namespace bg = boost::geometry;
|
||||||
typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > point_type;
|
using point_type = bg::model::point<double, 2, bg::cs::geographic<bg::degree>>;
|
||||||
typedef bg::model::linestring<point_type> linestring_type;
|
using linestring_type = bg::model::linestring<point_type>;
|
||||||
|
|
||||||
linestring_type ls1, ls2;
|
linestring_type ls1, ls2;
|
||||||
bg::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
bg::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
||||||
|
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
|
|
||||||
linestring_type ls1, ls2;
|
linestring_type ls1, ls2;
|
||||||
boost::geometry::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
boost::geometry::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
||||||
|
@ -18,8 +18,8 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
namespace bg = boost::geometry;
|
namespace bg = boost::geometry;
|
||||||
typedef bg::model::point<double, 2, bg::cs::geographic<bg::degree> > point_type;
|
using point_type = bg::model::point<double, 2, bg::cs::geographic<bg::degree>>;
|
||||||
typedef bg::model::linestring<point_type> linestring_type;
|
using linestring_type = bg::model::linestring<point_type>;
|
||||||
|
|
||||||
linestring_type ls1, ls2;
|
linestring_type ls1, ls2;
|
||||||
bg::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
bg::read_wkt("LINESTRING(0 0,1 1,1 2,2 1,2 2)", ls1);
|
||||||
|
@ -21,22 +21,22 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Checks if two geometries are disjoint, which means that two geometries have zero intersection.
|
// Checks if two geometries are disjoint, which means that two geometries have zero intersection.
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly1;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly1;
|
||||||
bg::read_wkt("POLYGON((0 2,-2 0,-4 2,-2 4,0 2))", poly1);
|
bg::read_wkt("POLYGON((0 2,-2 0,-4 2,-2 4,0 2))", poly1);
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly2;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly2;
|
||||||
bg::read_wkt("POLYGON((2 2,4 4,6 2,4 0,2 2))", poly2);
|
bg::read_wkt("POLYGON((2 2,4 4,6 2,4 0,2 2))", poly2);
|
||||||
bool check_disjoint = bg::disjoint(poly1, poly2);
|
bool check_disjoint = bg::disjoint(poly1, poly2);
|
||||||
if (check_disjoint) {
|
if (check_disjoint) {
|
||||||
std::cout << "Disjoint: Yes" << std::endl;
|
std::cout << "Disjoint: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Disjoint: No" << std::endl;
|
std::cout << "Disjoint: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly3;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly3;
|
||||||
bg::read_wkt("POLYGON((0 2,2 4,4 2,2 0,0 2))", poly3);
|
bg::read_wkt("POLYGON((0 2,2 4,4 2,2 0,0 2))", poly3);
|
||||||
check_disjoint = bg::disjoint(poly1, poly3);
|
check_disjoint = bg::disjoint(poly1, poly3);
|
||||||
if (check_disjoint) {
|
if (check_disjoint) {
|
||||||
std::cout << "Disjoint: Yes" << std::endl;
|
std::cout << "Disjoint: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Disjoint: No" << std::endl;
|
std::cout << "Disjoint: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,14 +20,12 @@
|
|||||||
#include <boost/geometry/geometries/multi_point.hpp>
|
#include <boost/geometry/geometries/multi_point.hpp>
|
||||||
#include <boost/geometry/geometries/multi_polygon.hpp>
|
#include <boost/geometry/geometries/multi_polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
typedef boost::geometry::model::multi_point<point_type> multi_point_type;
|
using multi_point_type = boost::geometry::model::multi_point<point_type>;
|
||||||
|
|
||||||
point_type p(1,2);
|
point_type p(1,2);
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
boost::geometry::model::polygon<point> polygon;
|
boost::geometry::model::polygon<point> polygon;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,17 +18,13 @@
|
|||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::assign::tuple_list_of;
|
using point = boost::tuple<int, int>;
|
||||||
|
|
||||||
typedef boost::tuple<int, int> point;
|
|
||||||
|
|
||||||
boost::geometry::model::polygon<point> poly1, poly2;
|
boost::geometry::model::polygon<point> poly1, poly2;
|
||||||
boost::geometry::exterior_ring(poly1) = tuple_list_of(0, 0)(0, 5)(5, 5)(5, 0)(0, 0);
|
boost::geometry::exterior_ring(poly1) = {{0, 0}, {0, 5}, {5, 5}, {5, 0}, {0, 0}};
|
||||||
boost::geometry::exterior_ring(poly2) = tuple_list_of(5, 0)(0, 0)(0, 5)(5, 5)(5, 0);
|
boost::geometry::exterior_ring(poly2) = {{5, 0}, {0, 0}, {0, 5}, {5, 5}, {5, 0}};
|
||||||
|
|
||||||
std::cout
|
std::cout
|
||||||
<< "polygons are spatially "
|
<< "polygons are spatially "
|
||||||
@ -43,7 +39,6 @@ int main()
|
|||||||
<< (boost::geometry::equals(box, poly2) ? "equal" : "not equal")
|
<< (boost::geometry::equals(box, poly2) ? "equal" : "not equal")
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,8 +19,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<short int> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<short int>;
|
||||||
typedef boost::geometry::model::box<point_type> box_type;
|
using box_type = boost::geometry::model::box<point_type>;
|
||||||
|
|
||||||
using boost::geometry::expand;
|
using boost::geometry::expand;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,41 +16,27 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template <typename Point>
|
|
||||||
class round_coordinates
|
|
||||||
{
|
|
||||||
private :
|
|
||||||
typedef typename boost::geometry::coordinate_type<Point>::type coordinate_type;
|
|
||||||
coordinate_type factor;
|
|
||||||
|
|
||||||
inline coordinate_type round(coordinate_type value)
|
|
||||||
{
|
|
||||||
return floor(0.5 + (value / factor)) * factor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public :
|
|
||||||
round_coordinates(coordinate_type f)
|
|
||||||
: factor(f)
|
|
||||||
{}
|
|
||||||
|
|
||||||
inline void operator()(Point& p)
|
|
||||||
{
|
|
||||||
using boost::geometry::get;
|
|
||||||
using boost::geometry::set;
|
|
||||||
set<0>(p, round(get<0>(p)));
|
|
||||||
set<1>(p, round(get<1>(p)));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
|
constexpr auto factor = 0.1;
|
||||||
|
auto round = [&](auto value)
|
||||||
|
{
|
||||||
|
return floor(0.5 + (value / factor)) * factor;
|
||||||
|
};
|
||||||
|
|
||||||
boost::geometry::model::polygon<point> poly;
|
boost::geometry::model::polygon<point> poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,1.123 9.987,8.876 2.234,0 0),(3.345 4.456,7.654 8.765,9.123 5.432,3.345 4.456))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,1.123 9.987,8.876 2.234,0 0),(3.345 4.456,7.654 8.765,9.123 5.432,3.345 4.456))", poly);
|
||||||
boost::geometry::for_each_point(poly, round_coordinates<point>(0.1));
|
boost::geometry::for_each_point(poly,
|
||||||
|
[&round](auto& p)
|
||||||
|
{
|
||||||
|
using boost::geometry::get;
|
||||||
|
using boost::geometry::set;
|
||||||
|
set<0>(p, round(get<0>(p)));
|
||||||
|
set<1>(p, round(get<1>(p)));
|
||||||
|
}
|
||||||
|
);
|
||||||
std::cout << "Rounded: " << boost::geometry::wkt(poly) << std::endl;
|
std::cout << "Rounded: " << boost::geometry::wkt(poly) << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -26,7 +26,7 @@ void list_coordinates(Point const& p)
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
boost::geometry::model::polygon<point> poly;
|
boost::geometry::model::polygon<point> poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,0 4,4 0,0 0))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,0 4,4 0,0 0))", poly);
|
||||||
boost::geometry::for_each_point(poly, list_coordinates<point>);
|
boost::geometry::for_each_point(poly, list_coordinates<point>);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -11,72 +11,37 @@
|
|||||||
//` Sample using for_each_segment, using a functor to get the minimum and maximum length of a segment in a linestring
|
//` Sample using for_each_segment, using a functor to get the minimum and maximum length of a segment in a linestring
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
#include <boost/geometry.hpp>
|
#include <boost/geometry.hpp>
|
||||||
#include <boost/geometry/geometries/linestring.hpp>
|
#include <boost/geometry/geometries/linestring.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
template <typename Segment>
|
|
||||||
struct gather_segment_statistics
|
|
||||||
{
|
|
||||||
// Remember that if coordinates are integer, the length might be floating point
|
|
||||||
// So use "double" for integers. In other cases, use coordinate type
|
|
||||||
typedef typename boost::geometry::select_most_precise
|
|
||||||
<
|
|
||||||
typename boost::geometry::coordinate_type<Segment>::type,
|
|
||||||
double
|
|
||||||
>::type type;
|
|
||||||
|
|
||||||
type min_length, max_length;
|
|
||||||
|
|
||||||
// Initialize min and max
|
|
||||||
gather_segment_statistics()
|
|
||||||
: min_length(1e38)
|
|
||||||
, max_length(-1)
|
|
||||||
{}
|
|
||||||
|
|
||||||
// This operator is called for each segment
|
|
||||||
inline void operator()(Segment const& s)
|
|
||||||
{
|
|
||||||
type length = boost::geometry::length(s);
|
|
||||||
if (length < min_length) min_length = length;
|
|
||||||
if (length > max_length) max_length = length;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Bring "+=" for a vector into scope
|
|
||||||
using namespace boost::assign;
|
|
||||||
|
|
||||||
// Define a type
|
// Define a type
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
// Declare a linestring
|
// Create a linestring
|
||||||
boost::geometry::model::linestring<point> polyline;
|
const boost::geometry::model::linestring<point> polyline =
|
||||||
|
{{0, 0}, {3, 3}, {5, 1}, {6, 2}, {8, 0}, {4, -4}, {1, -1}, {3, 2}};
|
||||||
|
|
||||||
// Use Boost.Assign to initialize a linestring
|
// Iterate over its segments to find the minimum and maximum length
|
||||||
polyline += point(0, 0), point(3, 3), point(5, 1), point(6, 2),
|
double min_length = std::numeric_limits<double>::max();
|
||||||
point(8, 0), point(4, -4), point(1, -1), point(3, 2);
|
double max_length = -std::numeric_limits<double>::max();
|
||||||
|
|
||||||
|
boost::geometry::for_each_segment(polyline,
|
||||||
// Declare the gathering class...
|
[&](auto const& s)
|
||||||
gather_segment_statistics
|
{
|
||||||
<
|
const auto length = boost::geometry::length(s);
|
||||||
boost::geometry::model::referring_segment<point>
|
min_length = std::min(min_length, length);
|
||||||
> functor;
|
max_length = std::max(max_length, length);
|
||||||
|
});
|
||||||
// ... and use it, the essention.
|
|
||||||
// As also in std::for_each it is a const value, so retrieve it as a return value.
|
|
||||||
functor = boost::geometry::for_each_segment(polyline, functor);
|
|
||||||
|
|
||||||
// Output the results
|
// Output the results
|
||||||
std::cout
|
std::cout
|
||||||
<< "Min segment length: " << functor.min_length << std::endl
|
<< "Min segment length: " << min_length << std::endl
|
||||||
<< "Max segment length: " << functor.max_length << std::endl;
|
<< "Max segment length: " << max_length << std::endl;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,14 +17,12 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/register/linestring.hpp>
|
#include <boost/geometry/geometries/register/linestring.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::vector)
|
BOOST_GEOMETRY_REGISTER_LINESTRING_TEMPLATED(std::vector)
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
std::vector<P> line1, line2;
|
std::vector<P> line1, line2;
|
||||||
boost::geometry::read_wkt("linestring(1 1,2 2,3 1)", line1);
|
boost::geometry::read_wkt("linestring(1 1,2 2,3 1)", line1);
|
||||||
boost::geometry::read_wkt("linestring(1 2,2 1,3 2)", line2);
|
boost::geometry::read_wkt("linestring(1 2,2 1,3 2)", line2);
|
||||||
@ -32,7 +30,7 @@ int main()
|
|||||||
std::deque<P> intersection_points;
|
std::deque<P> intersection_points;
|
||||||
boost::geometry::intersection(line1, line2, intersection_points);
|
boost::geometry::intersection(line1, line2, intersection_points);
|
||||||
|
|
||||||
BOOST_FOREACH(P const& p, intersection_points)
|
for (P const& p : intersection_points)
|
||||||
{
|
{
|
||||||
std::cout << " " << boost::geometry::wkt(p);
|
std::cout << " " << boost::geometry::wkt(p);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,12 +17,11 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
|
using polygon = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>> ;
|
||||||
|
|
||||||
polygon green, blue;
|
polygon green, blue;
|
||||||
|
|
||||||
@ -38,7 +37,7 @@ int main()
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
std::cout << "green && blue:" << std::endl;
|
std::cout << "green && blue:" << std::endl;
|
||||||
BOOST_FOREACH(polygon const& p, output)
|
for (polygon const& p : output)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -15,12 +15,9 @@
|
|||||||
#include <boost/geometry.hpp>
|
#include <boost/geometry.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
boost::geometry::model::segment<P> segment1, segment2;
|
boost::geometry::model::segment<P> segment1, segment2;
|
||||||
boost::geometry::read_wkt("linestring(1 1,2 2)", segment1);
|
boost::geometry::read_wkt("linestring(1 1,2 2)", segment1);
|
||||||
boost::geometry::read_wkt("linestring(2 1,1 2)", segment2);
|
boost::geometry::read_wkt("linestring(2 1,1 2)", segment2);
|
||||||
@ -28,7 +25,7 @@ int main()
|
|||||||
std::vector<P> intersections;
|
std::vector<P> intersections;
|
||||||
boost::geometry::intersection(segment1, segment2, intersections);
|
boost::geometry::intersection(segment1, segment2, intersections);
|
||||||
|
|
||||||
BOOST_FOREACH(P const& p, intersections)
|
for (P const& p : intersections)
|
||||||
{
|
{
|
||||||
std::cout << " " << boost::geometry::wkt(p);
|
std::cout << " " << boost::geometry::wkt(p);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,7 +19,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Calculate the intersects of a cartesian polygon
|
// Calculate the intersects of a cartesian polygon
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
boost::geometry::model::linestring<P> line1, line2;
|
boost::geometry::model::linestring<P> line1, line2;
|
||||||
|
|
||||||
boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
|
boost::geometry::read_wkt("linestring(1 1,2 2,3 3)", line1);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,7 +19,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Calculate the intersects of a cartesian polygon
|
// Calculate the intersects of a cartesian polygon
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
bg::model::linestring<P> line1, line2;
|
bg::model::linestring<P> line1, line2;
|
||||||
|
|
||||||
boost::geometry::read_wkt("linestring(1 1,2 2)", line1);
|
boost::geometry::read_wkt("linestring(1 1,2 2)", line1);
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<point_type> linestring_type;
|
using linestring_type = boost::geometry::model::linestring<point_type>;
|
||||||
typedef boost::geometry::model::multi_linestring<linestring_type> multi_linestring_type;
|
using multi_linestring_type = boost::geometry::model::multi_linestring<linestring_type>;
|
||||||
|
|
||||||
multi_linestring_type multi_linestring;
|
multi_linestring_type multi_linestring;
|
||||||
boost::geometry::read_wkt("MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(10 10,20 20))", multi_linestring);
|
boost::geometry::read_wkt("MULTILINESTRING((0 0,0 10,10 10,10 0,0 0),(10 10,20 20))", multi_linestring);
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))", poly);
|
||||||
|
@ -20,8 +20,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0),(0 0,9 2,9 1,0 0),(0 0,2 9,1 9,0 0))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0),(0 0,9 2,9 1,0 0),(0 0,2 9,1 9,0 0))", poly);
|
||||||
|
@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,9 1,9 2,0 0),(0 0,2 9,1 9,0 0),(2 9,9 2,9 9,2 9))", poly);
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using namespace boost::geometry;
|
using namespace boost::geometry;
|
||||||
model::linestring<model::d2::point_xy<double> > line;
|
model::linestring<model::d2::point_xy<double>> line;
|
||||||
read_wkt("linestring(0 0,1 1,4 8,3 2)", line);
|
read_wkt("linestring(0 0,1 1,4 8,3 2)", line);
|
||||||
std::cout << "linestring length is "
|
std::cout << "linestring length is "
|
||||||
<< length(line)
|
<< length(line)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,7 +17,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using namespace boost::geometry;
|
using namespace boost::geometry;
|
||||||
typedef model::point<float, 2, cs::spherical_equatorial<degree> > P;
|
using P = model::point<float, 2, cs::spherical_equatorial<degree>>;
|
||||||
model::linestring<P> line;
|
model::linestring<P> line;
|
||||||
line.push_back(P(2, 41));
|
line.push_back(P(2, 41));
|
||||||
line.push_back(P(2, 48));
|
line.push_back(P(2, 48));
|
||||||
|
@ -20,7 +20,7 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
using segment_type = model::segment<point_type>;
|
using segment_type = model::segment<point_type>;
|
||||||
using linestring_type = model::linestring<point_type>;
|
using linestring_type = model::linestring<point_type>;
|
||||||
using multipoint_type = model::multi_point<point_type>;
|
using multipoint_type = model::multi_point<point_type>;
|
||||||
|
@ -20,7 +20,7 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::d2::point_xy<double,cs::geographic<degree> > point_type;
|
using point_type = model::d2::point_xy<double,cs::geographic<degree>>;
|
||||||
using segment_type = model::segment<point_type>;
|
using segment_type = model::segment<point_type>;
|
||||||
using linestring_type = model::linestring<point_type>;
|
using linestring_type = model::linestring<point_type>;
|
||||||
using multipoint_type = model::multi_point<point_type>;
|
using multipoint_type = model::multi_point<point_type>;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,7 +16,6 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/register/point.hpp>
|
#include <boost/geometry/geometries/register/point.hpp>
|
||||||
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
||||||
#include <boost/geometry/geometries/adapted/boost_polygon/point.hpp>
|
|
||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
@ -39,10 +38,9 @@ void construct_and_display()
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
construct_and_display<boost::geometry::model::d2::point_xy<double> >();
|
construct_and_display<boost::geometry::model::d2::point_xy<double>>();
|
||||||
construct_and_display<boost::geometry::model::d2::point_xy<int> >();
|
construct_and_display<boost::geometry::model::d2::point_xy<int>>();
|
||||||
construct_and_display<boost::tuple<double, double> >();
|
construct_and_display<boost::tuple<double, double>>();
|
||||||
construct_and_display<boost::polygon::point_data<int> >();
|
|
||||||
construct_and_display<mypoint>();
|
construct_and_display<mypoint>();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::point<double, 3, boost::geometry::cs::cartesian> point_type;
|
using point_type = boost::geometry::model::point<double, 3, boost::geometry::cs::cartesian>;
|
||||||
point_type p = boost::geometry::make<point_type>(1, 2, 3);
|
const auto p = boost::geometry::make<point_type>(1, 2, 3);
|
||||||
std::cout << boost::geometry::dsv(p) << std::endl;
|
std::cout << boost::geometry::dsv(p) << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -21,8 +21,8 @@ using namespace boost::geometry;
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
|
||||||
typedef model::d2::point_xy<double> point;
|
using point = model::d2::point_xy<double>;
|
||||||
typedef model::box<point> box;
|
using box = model::box<point>;
|
||||||
|
|
||||||
box all = make_inverse<box>();
|
box all = make_inverse<box>();
|
||||||
std::cout << dsv(all) << std::endl;
|
std::cout << dsv(all) << std::endl;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -24,8 +24,8 @@ int main()
|
|||||||
using boost::geometry::make;
|
using boost::geometry::make;
|
||||||
using boost::geometry::detail::make::make_points;
|
using boost::geometry::detail::make::make_points;
|
||||||
|
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<point> linestring;
|
using linestring = boost::geometry::model::linestring<point>;
|
||||||
|
|
||||||
double coordinates[][2] = {{1,2}, {3,4}, {5, 6}}; /*< Initialize with C array points >*/
|
double coordinates[][2] = {{1,2}, {3,4}, {5, 6}}; /*< Initialize with C array points >*/
|
||||||
linestring ls = make_points<linestring>(coordinates);
|
linestring ls = make_points<linestring>(coordinates);
|
||||||
|
@ -21,22 +21,22 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Checks if the two geometries overlaps or not.
|
// Checks if the two geometries overlaps or not.
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly1;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly1;
|
||||||
bg::read_wkt("POLYGON((0 0,0 4,4 4,4 0,0 0))", poly1);
|
bg::read_wkt("POLYGON((0 0,0 4,4 4,4 0,0 0))", poly1);
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly2;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly2;
|
||||||
bg::read_wkt("POLYGON((2 2,2 6,6 7,6 1,2 2))", poly2);
|
bg::read_wkt("POLYGON((2 2,2 6,6 7,6 1,2 2))", poly2);
|
||||||
bool check_overlap = bg::overlaps(poly1, poly2);
|
bool check_overlap = bg::overlaps(poly1, poly2);
|
||||||
if (check_overlap) {
|
if (check_overlap) {
|
||||||
std::cout << "Overlaps: Yes" << std::endl;
|
std::cout << "Overlaps: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Overlaps: No" << std::endl;
|
std::cout << "Overlaps: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly3;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly3;
|
||||||
bg::read_wkt("POLYGON((-1 -1,-3 -4,-7 -7,-4 -3,-1 -1))", poly3);
|
bg::read_wkt("POLYGON((-1 -1,-3 -4,-7 -7,-4 -3,-1 -1))", poly3);
|
||||||
check_overlap = bg::overlaps(poly1, poly3);
|
check_overlap = bg::overlaps(poly1, poly3);
|
||||||
if (check_overlap) {
|
if (check_overlap) {
|
||||||
std::cout << "Overlaps: Yes" << std::endl;
|
std::cout << "Overlaps: Yes" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
std::cout << "Overlaps: No" << std::endl;
|
std::cout << "Overlaps: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Calculate the perimeter of a cartesian polygon
|
// Calculate the perimeter of a cartesian polygon
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly;
|
||||||
bg::read_wkt("POLYGON((0 0,3 4,5 -5,-2 -4, 0 0))", poly);
|
bg::read_wkt("POLYGON((0 0,3 4,5 -5,-2 -4, 0 0))", poly);
|
||||||
double perimeter = bg::perimeter(poly);
|
double perimeter = bg::perimeter(poly);
|
||||||
std::cout << "Perimeter: " << perimeter << std::endl;
|
std::cout << "Perimeter: " << perimeter << std::endl;
|
||||||
|
@ -24,8 +24,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt(
|
boost::geometry::read_wkt(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// This file was modified by Oracle on 2015.
|
// This file was modified by Oracle on 2015.
|
||||||
// Modifications copyright (c) 2015 Oracle and/or its affiliates.
|
// Modifications copyright (c) 2015 Oracle and/or its affiliates.
|
||||||
@ -25,8 +25,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt(
|
boost::geometry::read_wkt(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -12,31 +12,23 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
||||||
#include <boost/geometry.hpp>
|
#include <boost/geometry.hpp>
|
||||||
#include <boost/geometry/geometries/box.hpp>
|
#include <boost/geometry/geometries/box.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/ring.hpp>
|
#include <boost/geometry/geometries/ring.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
/*<-*/ #include "create_svg_two.hpp" /*->*/
|
/*<-*/ #include "create_svg_two.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using namespace boost::assign;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
using box = boost::geometry::model::box<point>;
|
||||||
|
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
const boost::geometry::model::ring<point> ring {
|
||||||
|
{4.0, -0.5}, {3.5, 1.0}, {2.0, 1.5}, {3.5, 2.0},
|
||||||
boost::geometry::model::ring<point> ring;
|
{4.0, 3.5}, {4.5, 2.0}, {6.0, 1.5}, {4.5, 1.0},
|
||||||
ring +=
|
{4.0, -0.5}
|
||||||
point(4.0, -0.5), point(3.5, 1.0),
|
};
|
||||||
point(2.0, 1.5), point(3.5, 2.0),
|
|
||||||
point(4.0, 3.5), point(4.5, 2.0),
|
|
||||||
point(6.0, 1.5), point(4.5, 1.0),
|
|
||||||
point(4.0, -0.5);
|
|
||||||
|
|
||||||
typedef boost::geometry::model::box<point> box;
|
|
||||||
|
|
||||||
std::cout
|
std::cout
|
||||||
<< "return_envelope:"
|
<< "return_envelope:"
|
||||||
@ -49,7 +41,6 @@ int main()
|
|||||||
|
|
||||||
//]
|
//]
|
||||||
|
|
||||||
|
|
||||||
//[return_envelope_output
|
//[return_envelope_output
|
||||||
/*`
|
/*`
|
||||||
Output:
|
Output:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,20 +19,15 @@
|
|||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
using boost::assign::tuple_list_of;
|
using point = boost::tuple<int, int>;
|
||||||
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
typedef boost::tuple<int, int> point;
|
using ring = boost::geometry::model::ring<point>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
|
||||||
typedef boost::geometry::model::ring<point> ring;
|
|
||||||
|
|
||||||
|
|
||||||
polygon poly;
|
polygon poly;
|
||||||
boost::geometry::exterior_ring(poly) = tuple_list_of(0, 0)(0, 9)(10, 10)(0, 0);
|
boost::geometry::exterior_ring(poly) = {{0, 0}, {0, 9}, {10, 10}, {0, 0}};
|
||||||
boost::geometry::interior_rings(poly).push_back(tuple_list_of(1, 2)(4, 6)(2, 8)(1, 2));
|
boost::geometry::interior_rings(poly).push_back({{1, 2}, {4, 6}, {2, 8}, {1, 2}});
|
||||||
|
|
||||||
double area_before = boost::geometry::area(poly);
|
double area_before = boost::geometry::area(poly);
|
||||||
boost::geometry::reverse(poly);
|
boost::geometry::reverse(poly);
|
||||||
@ -40,7 +35,7 @@ int main()
|
|||||||
std::cout << boost::geometry::dsv(poly) << std::endl;
|
std::cout << boost::geometry::dsv(poly) << std::endl;
|
||||||
std::cout << area_before << " -> " << area_after << std::endl;
|
std::cout << area_before << " -> " << area_after << std::endl;
|
||||||
|
|
||||||
ring r = tuple_list_of(0, 0)(0, 9)(8, 8)(0, 0);
|
ring r = {{0, 0}, {0, 9}, {8, 8}, {0, 0}};
|
||||||
|
|
||||||
area_before = boost::geometry::area(r);
|
area_before = boost::geometry::area(r);
|
||||||
boost::geometry::reverse(r);
|
boost::geometry::reverse(r);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -16,18 +16,12 @@
|
|||||||
#include <boost/geometry/geometries/linestring.hpp>
|
#include <boost/geometry/geometries/linestring.hpp>
|
||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
|
|
||||||
/*< For this example we use Boost.Assign to add points >*/
|
|
||||||
#include <boost/assign.hpp>
|
|
||||||
|
|
||||||
using namespace boost::assign;
|
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> xy;
|
using xy = boost::geometry::model::d2::point_xy<double>;
|
||||||
|
|
||||||
boost::geometry::model::linestring<xy> line;
|
const boost::geometry::model::linestring<xy> line
|
||||||
line += xy(1.1, 1.1), xy(2.5, 2.1), xy(3.1, 3.1), xy(4.9, 1.1), xy(3.1, 1.9); /*< With Boost.Assign >*/
|
{{1.1, 1.1}, {2.5, 2.1}, {3.1, 3.1}, {4.9, 1.1}, {3.1, 1.9}};
|
||||||
|
|
||||||
// Simplify it, using distance of 0.5 units
|
// Simplify it, using distance of 0.5 units
|
||||||
boost::geometry::model::linestring<xy> simplified;
|
boost::geometry::model::linestring<xy> simplified;
|
||||||
@ -36,7 +30,6 @@ int main()
|
|||||||
<< " original: " << boost::geometry::dsv(line) << std::endl
|
<< " original: " << boost::geometry::dsv(line) << std::endl
|
||||||
<< "simplified: " << boost::geometry::dsv(simplified) << std::endl;
|
<< "simplified: " << boost::geometry::dsv(simplified) << std::endl;
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<P> L;
|
using L = boost::geometry::model::linestring<P>;
|
||||||
|
|
||||||
L line;
|
L line;
|
||||||
line.push_back(P(1.1, 1.1));
|
line.push_back(P(1.1, 1.1));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,14 +18,14 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> P;
|
using P = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::linestring<P> L;
|
using L = boost::geometry::model::linestring<P>;
|
||||||
|
|
||||||
L line;
|
L line;
|
||||||
boost::geometry::read_wkt("linestring(1.1 1.1, 2.5 2.1, 3.1 3.1, 4.9 1.1, 3.1 1.9)", line);
|
boost::geometry::read_wkt("linestring(1.1 1.1, 2.5 2.1, 3.1 3.1, 4.9 1.1, 3.1 1.9)", line);
|
||||||
|
|
||||||
typedef boost::geometry::strategy::distance::projected_point<P, P> DS;
|
using DS = boost::geometry::strategy::distance::projected_point<P, P>;
|
||||||
typedef boost::geometry::strategy::simplify::douglas_peucker<P, DS> simplification;
|
using simplification = boost::geometry::strategy::simplify::douglas_peucker<P, DS>;
|
||||||
|
|
||||||
L simplified;
|
L simplified;
|
||||||
boost::geometry::simplify_inserter(line, std::back_inserter(simplified), 0.5, simplification()); //std::ostream_iterator<P>(std::cout, "\n"), 0.5);//);
|
boost::geometry::simplify_inserter(line, std::back_inserter(simplified), 0.5, simplification()); //std::ostream_iterator<P>(std::cout, "\n"), 0.5);//);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,12 +17,11 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/multi_polygon.hpp>
|
#include <boost/geometry/geometries/multi_polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
|
using polygon = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>>;
|
||||||
|
|
||||||
polygon green, blue;
|
polygon green, blue;
|
||||||
|
|
||||||
@ -41,7 +40,7 @@ int main()
|
|||||||
<< "green XOR blue:" << std::endl
|
<< "green XOR blue:" << std::endl
|
||||||
<< "total: " << boost::geometry::area(multi) << std::endl;
|
<< "total: " << boost::geometry::area(multi) << std::endl;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
BOOST_FOREACH(polygon const& p, multi)
|
for (polygon const& p : multi)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,9 @@ namespace bg = boost::geometry; /*< Convenient namespace alias >*/
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Checks if the two geometries touch
|
// Checks if the two geometries touch
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly1;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly1;
|
||||||
bg::read_wkt("POLYGON((0 0,0 4,4 4,4 0,0 0))", poly1);
|
bg::read_wkt("POLYGON((0 0,0 4,4 4,4 0,0 0))", poly1);
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly2;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly2;
|
||||||
bg::read_wkt("POLYGON((0 0,0 -4,-4 -4,-4 0,0 0))", poly2);
|
bg::read_wkt("POLYGON((0 0,0 -4,-4 -4,-4 0,0 0))", poly2);
|
||||||
bool check_touches = bg::touches(poly1, poly2);
|
bool check_touches = bg::touches(poly1, poly2);
|
||||||
if (check_touches) {
|
if (check_touches) {
|
||||||
@ -32,7 +32,7 @@ int main()
|
|||||||
std::cout << "Touches: No" << std::endl;
|
std::cout << "Touches: No" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
bg::model::polygon<bg::model::d2::point_xy<double> > poly3;
|
bg::model::polygon<bg::model::d2::point_xy<double>> poly3;
|
||||||
bg::read_wkt("POLYGON((1 1,0 -4,-4 -4,-4 0,1 1))", poly3);
|
bg::read_wkt("POLYGON((1 1,0 -4,-4 -4,-4 0,1 1))", poly3);
|
||||||
check_touches = bg::touches(poly1, poly3);
|
check_touches = bg::touches(poly1, poly3);
|
||||||
if (check_touches) {
|
if (check_touches) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,11 +19,11 @@ int main()
|
|||||||
namespace bg = boost::geometry;
|
namespace bg = boost::geometry;
|
||||||
|
|
||||||
// Select a point near the pole (theta=5.0, phi=15.0)
|
// Select a point near the pole (theta=5.0, phi=15.0)
|
||||||
bg::model::point<long double, 2, bg::cs::spherical<bg::degree> > p1(15.0, 5.0);
|
bg::model::point<long double, 2, bg::cs::spherical<bg::degree>> p1(15.0, 5.0);
|
||||||
|
|
||||||
// Transform from degree to radian. Default strategy is automatically selected,
|
// Transform from degree to radian. Default strategy is automatically selected,
|
||||||
// it will convert from degree to radian
|
// it will convert from degree to radian
|
||||||
bg::model::point<long double, 2, bg::cs::spherical<bg::radian> > p2;
|
bg::model::point<long double, 2, bg::cs::spherical<bg::radian>> p2;
|
||||||
bg::transform(p1, p2);
|
bg::transform(p1, p2);
|
||||||
|
|
||||||
// Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,
|
// Transform from degree (lon-lat) to 3D (x,y,z). Default strategy is automatically selected,
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -13,13 +13,12 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <boost/geometry.hpp>
|
#include <boost/geometry.hpp>
|
||||||
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
namespace trans = boost::geometry::strategy::transform;
|
namespace trans = boost::geometry::strategy::transform;
|
||||||
using boost::geometry::dsv;
|
using boost::geometry::dsv;
|
||||||
|
|
||||||
typedef boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian> point_type;
|
using point_type = boost::geometry::model::point<double, 2, boost::geometry::cs::cartesian>;
|
||||||
|
|
||||||
point_type p1(1.0, 1.0);
|
point_type p1(1.0, 1.0);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,12 +17,11 @@
|
|||||||
#include <boost/geometry/geometries/point_xy.hpp>
|
#include <boost/geometry/geometries/point_xy.hpp>
|
||||||
#include <boost/geometry/geometries/polygon.hpp>
|
#include <boost/geometry/geometries/polygon.hpp>
|
||||||
|
|
||||||
#include <boost/foreach.hpp>
|
|
||||||
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
/*<-*/ #include "create_svg_overlay.hpp" /*->*/
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
|
using polygon = boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double>>;
|
||||||
|
|
||||||
polygon green, blue;
|
polygon green, blue;
|
||||||
|
|
||||||
@ -38,7 +37,7 @@ int main()
|
|||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
std::cout << "green || blue:" << std::endl;
|
std::cout << "green || blue:" << std::endl;
|
||||||
BOOST_FOREACH(polygon const& p, output)
|
for(polygon const& p : output)
|
||||||
{
|
{
|
||||||
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,7 +20,7 @@ BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
boost::geometry::model::polygon<boost::tuple<double, double> > poly;
|
boost::geometry::model::polygon<boost::tuple<double, double>> poly;
|
||||||
boost::geometry::read_wkt("POLYGON((0 0,0 0,0 5,5 5,5 5,5 5,5 0,5 0,0 0,0 0,0 0,0 0))", poly);
|
boost::geometry::read_wkt("POLYGON((0 0,0 0,0 5,5 5,5 5,5 5,5 0,5 0,0 0,0 0,0 0,0 0))", poly);
|
||||||
boost::geometry::unique(poly);
|
boost::geometry::unique(poly);
|
||||||
std::cout << boost::geometry::wkt(poly) << std::endl;
|
std::cout << boost::geometry::wkt(poly) << std::endl;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,8 +20,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::read_wkt(
|
boost::geometry::read_wkt(
|
||||||
|
29
doc/src/examples/core/CMakeLists.txt
Normal file
29
doc/src/examples/core/CMakeLists.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# Boost.Geometry
|
||||||
|
# Copyright (c) 2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
# Use, modification and distribution is subject to the Boost Software License,
|
||||||
|
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
foreach(item IN ITEMS
|
||||||
|
get_point
|
||||||
|
get_box
|
||||||
|
set_point
|
||||||
|
set_box
|
||||||
|
degree_radian
|
||||||
|
coordinate_type
|
||||||
|
coordinate_system
|
||||||
|
coordinate_dimension
|
||||||
|
point_order
|
||||||
|
closure
|
||||||
|
interior_type
|
||||||
|
point_type
|
||||||
|
ring_type
|
||||||
|
rings
|
||||||
|
tag
|
||||||
|
tag_cast
|
||||||
|
)
|
||||||
|
|
||||||
|
boost_geometry_add_example("core" ${item})
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
# Boost.Geometry (aka GGL, Generic Geometry Library)
|
# Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
# Copyright (c) 2007-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
# Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
|
# Copyright (c) 2008-2012 Bruno Lalande, Paris, France.
|
||||||
# Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
|
# Copyright (c) 2009-2012 Mateusz Loskot, London, UK.
|
||||||
|
|
||||||
@ -29,5 +29,5 @@ exe interior_type : interior_type.cpp ;
|
|||||||
exe point_type : point_type.cpp ;
|
exe point_type : point_type.cpp ;
|
||||||
exe ring_type : ring_type.cpp ;
|
exe ring_type : ring_type.cpp ;
|
||||||
exe rings : rings.cpp ;
|
exe rings : rings.cpp ;
|
||||||
exe tag : tag.cpp : <library>/boost/assign//boost_assign ;
|
exe tag : tag.cpp ;
|
||||||
exe tag_cast : tag_cast.cpp ;
|
exe tag_cast : tag_cast.cpp ;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
boost::geometry::closure_selector clos = boost::geometry::closure<polygon_type>::value;
|
boost::geometry::closure_selector clos = boost::geometry::closure<polygon_type>::value;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
typedef boost::geometry::coordinate_system<polygon_type>::type system;
|
using system = boost::geometry::coordinate_system<polygon_type>::type;
|
||||||
|
|
||||||
std::cout << "system: " << typeid(system).name() << std::endl;
|
std::cout << "system: " << typeid(system).name() << std::endl;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,10 +19,10 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
|
|
||||||
typedef boost::geometry::coordinate_type<polygon_type>::type ctype;
|
using ctype = boost::geometry::coordinate_type<polygon_type>::type;
|
||||||
|
|
||||||
std::cout << "type: " << typeid(ctype).name() << std::endl;
|
std::cout << "type: " << typeid(ctype).name() << std::endl;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,8 +17,8 @@ using namespace boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef model::point<double, 2, cs::spherical_equatorial<degree> > degree_point;
|
using degree_point = model::point<double, 2, cs::spherical_equatorial<degree>>;
|
||||||
typedef model::point<double, 2, cs::spherical_equatorial<radian> > radian_point;
|
using radian_point = model::point<double, 2, cs::spherical_equatorial<radian>>;
|
||||||
|
|
||||||
degree_point d(4.893, 52.373);
|
degree_point d(4.893, 52.373);
|
||||||
radian_point r(0.041, 0.8527);
|
radian_point r(0.041, 0.8527);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,7 +19,7 @@ namespace bg = boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
bg::model::box<bg::model::d2::point_xy<double> > box;
|
bg::model::box<bg::model::d2::point_xy<double>> box;
|
||||||
|
|
||||||
bg::assign_values(box, 1, 3, 5, 6);
|
bg::assign_values(box, 1, 3, 5, 6);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
// Copyright (c) 2023 Adam Wulkiewicz, Lodz, Poland.
|
// Copyright (c) 2023 Adam Wulkiewicz, Lodz, Poland.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
@ -28,12 +28,12 @@ int main()
|
|||||||
// Define a polygon storing points in a deque and storing interior rings
|
// Define a polygon storing points in a deque and storing interior rings
|
||||||
// in a list (note that std::list is not supported by most algorithms
|
// in a list (note that std::list is not supported by most algorithms
|
||||||
// because not supporting a random access iterator)
|
// because not supporting a random access iterator)
|
||||||
typedef boost::geometry::model::polygon
|
using polygon = boost::geometry::model::polygon
|
||||||
<
|
<
|
||||||
boost::array<short, 3>,
|
boost::array<short, 3>,
|
||||||
true, true,
|
true, true,
|
||||||
std::deque, std::list
|
std::deque, std::list
|
||||||
> polygon;
|
>;
|
||||||
|
|
||||||
std::cout << typeid(boost::geometry::interior_type<polygon>::type).name() << std::endl;
|
std::cout << typeid(boost::geometry::interior_type<polygon>::type).name() << std::endl;
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ int main()
|
|||||||
/*`
|
/*`
|
||||||
Output (using MSVC) is a long story (part manually replaced with ellipsis):
|
Output (using MSVC) is a long story (part manually replaced with ellipsis):
|
||||||
[pre
|
[pre
|
||||||
class std::list<class boost::geometry::model::ring<class boost::array<short,3>,1,1,class std::deque,class std::allocator>,class std::allocator<...> > >
|
class std::list<class boost::geometry::model::ring<class boost::array<short,3>,1,1,class std::deque,class std::allocator>,class std::allocator<...>>>
|
||||||
]
|
]
|
||||||
*/
|
*/
|
||||||
//]
|
//]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type, false> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type, false>;
|
||||||
|
|
||||||
boost::geometry::order_selector order = boost::geometry::point_order<polygon_type>::value;
|
boost::geometry::order_selector order = boost::geometry::point_order<polygon_type>::value;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,11 +20,10 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point_type;
|
using point_type = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point_type> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point_type>;
|
||||||
typedef boost::geometry::model::multi_polygon<polygon_type> mp_type;
|
using mp_type = boost::geometry::model::multi_polygon<polygon_type>;
|
||||||
|
using ptype = boost::geometry::point_type<mp_type>::type;
|
||||||
typedef boost::geometry::point_type<mp_type>::type ptype;
|
|
||||||
|
|
||||||
std::cout << "point type: " << typeid(ptype).name() << std::endl;
|
std::cout << "point type: " << typeid(ptype).name() << std::endl;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,11 +19,11 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon;
|
using polygon = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
typedef boost::geometry::ring_type<polygon>::type ring_type;
|
using ring_type = boost::geometry::ring_type<polygon>::type;
|
||||||
typedef boost::geometry::interior_type<polygon>::type int_type;
|
using int_type = boost::geometry::interior_type<polygon>::type;
|
||||||
|
|
||||||
std::cout << typeid(ring_type).name() << std::endl;
|
std::cout << typeid(ring_type).name() << std::endl;
|
||||||
std::cout << typeid(int_type).name() << std::endl;
|
std::cout << typeid(int_type).name() << std::endl;
|
||||||
@ -32,7 +32,7 @@ int main()
|
|||||||
// which is a Boost.Range compatible range
|
// which is a Boost.Range compatible range
|
||||||
// The type of an element of the collection is the very same ring type again.
|
// The type of an element of the collection is the very same ring type again.
|
||||||
// We show that.
|
// We show that.
|
||||||
typedef boost::range_value<int_type>::type int_ring_type;
|
using int_ring_type = boost::range_value<int_type>::type;
|
||||||
|
|
||||||
std::cout
|
std::cout
|
||||||
<< std::boolalpha
|
<< std::boolalpha
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -23,12 +23,12 @@ Also shows the related ring_type and interior_type.
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::geometry::model::d2::point_xy<double> point;
|
using point = boost::geometry::model::d2::point_xy<double>;
|
||||||
typedef boost::geometry::model::polygon<point> polygon_type;
|
using polygon_type = boost::geometry::model::polygon<point>;
|
||||||
|
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
|
|
||||||
typedef boost::geometry::ring_type<polygon_type>::type ring_type;
|
using ring_type = boost::geometry::ring_type<polygon_type>::type;
|
||||||
ring_type& ring = boost::geometry::exterior_ring(poly);
|
ring_type& ring = boost::geometry::exterior_ring(poly);
|
||||||
|
|
||||||
// For a ring of model::polygon, you can call "push_back".
|
// For a ring of model::polygon, you can call "push_back".
|
||||||
@ -44,17 +44,18 @@ int main()
|
|||||||
inner.push_back(point(2, 2));
|
inner.push_back(point(2, 2));
|
||||||
inner.push_back(point(1, 1));
|
inner.push_back(point(1, 1));
|
||||||
|
|
||||||
typedef boost::geometry::interior_type<polygon_type>::type int_type;
|
auto& interiors = boost::geometry::interior_rings(poly);
|
||||||
int_type& interiors = boost::geometry::interior_rings(poly);
|
|
||||||
interiors.push_back(inner);
|
interiors.push_back(inner);
|
||||||
|
|
||||||
std::cout << boost::geometry::dsv(poly) << std::endl;
|
std::cout << boost::geometry::dsv(poly) << std::endl;
|
||||||
|
|
||||||
// So int_type defines a collection of rings,
|
// Let int_type define a collection of rings,
|
||||||
// which is a Boost.Range compatible range
|
// which is a Boost.Range compatible range
|
||||||
|
using int_type = boost::geometry::interior_type<polygon_type>::type;
|
||||||
|
|
||||||
// The type of an element of the collection is the very same ring type again.
|
// The type of an element of the collection is the very same ring type again.
|
||||||
// We show that.
|
// We show that.
|
||||||
typedef boost::range_value<int_type>::type int_ring_type;
|
using int_ring_type = boost::range_value<int_type>::type;
|
||||||
|
|
||||||
std::cout
|
std::cout
|
||||||
<< std::boolalpha
|
<< std::boolalpha
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -19,7 +19,7 @@ namespace bg = boost::geometry;
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
bg::model::box<bg::model::d2::point_xy<double> > box;
|
bg::model::box<bg::model::d2::point_xy<double>> box;
|
||||||
|
|
||||||
bg::set<bg::min_corner, 0>(box, 0);
|
bg::set<bg::min_corner, 0>(box, 0);
|
||||||
bg::set<bg::min_corner, 1>(box, 2);
|
bg::set<bg::min_corner, 1>(box, 2);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -17,8 +17,6 @@
|
|||||||
#include <boost/geometry/geometries/multi_polygon.hpp>
|
#include <boost/geometry/geometries/multi_polygon.hpp>
|
||||||
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
|
||||||
|
|
||||||
#include <boost/assign.hpp> /*< At the end to avoid conflicts with Boost.QVM >*/
|
|
||||||
|
|
||||||
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian)
|
||||||
|
|
||||||
template <typename Tag> struct dispatch {};
|
template <typename Tag> struct dispatch {};
|
||||||
@ -79,11 +77,11 @@ inline void hello(Geometry const& geometry)
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
// Define polygon type (here: based on a Boost.Tuple)
|
// Define polygon type (here: based on a Boost.Tuple)
|
||||||
typedef boost::geometry::model::polygon<boost::tuple<int, int> > polygon_type;
|
using polygon_type = boost::geometry::model::polygon<boost::tuple<int, int>>;
|
||||||
|
|
||||||
// Declare and fill a polygon and a multipolygon
|
// Declare and fill a polygon and a multipolygon
|
||||||
polygon_type poly;
|
polygon_type poly;
|
||||||
boost::geometry::exterior_ring(poly) = boost::assign::tuple_list_of(0, 0)(0, 10)(10, 5)(0, 0);
|
boost::geometry::exterior_ring(poly) = {{0, 0}, {0, 10}, {10, 5}, {0, 0}};
|
||||||
|
|
||||||
boost::geometry::model::multi_polygon<polygon_type> multi;
|
boost::geometry::model::multi_polygon<polygon_type> multi;
|
||||||
multi.push_back(poly);
|
multi.push_back(poly);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -20,11 +20,11 @@
|
|||||||
namespace geo = boost::geometry;
|
namespace geo = boost::geometry;
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef geo::model::d2::point_xy<double> point_type;
|
using point_type = geo::model::d2::point_xy<double>;
|
||||||
typedef geo::model::polygon<point_type> polygon_type;
|
using polygon_type = geo::model::polygon<point_type>;
|
||||||
|
|
||||||
typedef geo::tag<polygon_type>::type tag;
|
using tag = geo::tag<polygon_type>::type;
|
||||||
typedef geo::tag_cast<tag, geo::linear_tag, geo::areal_tag>::type base_tag;
|
using base_tag = geo::tag_cast<tag, geo::linear_tag, geo::areal_tag>::type;
|
||||||
|
|
||||||
std::cout << "tag: " << typeid(tag).name() << std::endl
|
std::cout << "tag: " << typeid(tag).name() << std::endl
|
||||||
<< "base tag: " << typeid(base_tag).name() << std::endl;
|
<< "base tag: " << typeid(base_tag).name() << std::endl;
|
||||||
|
@ -21,7 +21,7 @@ template <typename Geometry1, typename Geometry2>
|
|||||||
void create_svg_buffer(std::string const& filename, Geometry1 const& original, Geometry2 const& buffer)
|
void create_svg_buffer(std::string const& filename, Geometry1 const& original, Geometry2 const& buffer)
|
||||||
{
|
{
|
||||||
#if defined(HAVE_SVG)
|
#if defined(HAVE_SVG)
|
||||||
typedef typename boost::geometry::point_type<Geometry1>::type point_type;
|
using point_type = typename boost::geometry::point_type<Geometry1>::type;
|
||||||
std::ofstream svg(filename.c_str());
|
std::ofstream svg(filename.c_str());
|
||||||
|
|
||||||
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
boost::geometry::svg_mapper<point_type> mapper(svg, 400, 400);
|
||||||
|
24
doc/src/examples/geometries/CMakeLists.txt
Normal file
24
doc/src/examples/geometries/CMakeLists.txt
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# Boost.Geometry
|
||||||
|
# Copyright (c) 2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
|
# Use, modification and distribution is subject to the Boost Software License,
|
||||||
|
# Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
# http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
foreach(item IN ITEMS
|
||||||
|
box
|
||||||
|
linestring
|
||||||
|
point
|
||||||
|
point_xy
|
||||||
|
point_xyz
|
||||||
|
polygon
|
||||||
|
multi_linestring
|
||||||
|
multi_point
|
||||||
|
multi_polygon
|
||||||
|
ring
|
||||||
|
segment
|
||||||
|
)
|
||||||
|
|
||||||
|
boost_geometry_add_example("geometries" ${item})
|
||||||
|
|
||||||
|
endforeach()
|
||||||
|
|
@ -31,7 +31,7 @@ int main()
|
|||||||
boost::geometry::assign_values(b, 2.2, 3.3);
|
boost::geometry::assign_values(b, 2.2, 3.3);
|
||||||
std::cout << boost::geometry::distance(a, b) << std::endl;
|
std::cout << boost::geometry::distance(a, b) << std::endl;
|
||||||
|
|
||||||
boost::geometry::model::linestring<boost::array<double, 2> > line;
|
boost::geometry::model::linestring<boost::array<double, 2>> line;
|
||||||
line.push_back(b);
|
line.push_back(b);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::polygon::rectangle_data<int> rect;
|
using rect = boost::polygon::rectangle_data<int>;
|
||||||
|
|
||||||
rect b = boost::polygon::construct<rect>(1, 2, 3, 4);
|
rect b = boost::polygon::construct<rect>(1, 2, 3, 4);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
@ -17,9 +17,9 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::polygon::polygon_with_holes_data<int> polygon;
|
using polygon = boost::polygon::polygon_with_holes_data<int>;
|
||||||
typedef boost::polygon::polygon_traits<polygon>::point_type point;
|
using point = boost::polygon::polygon_traits<polygon>::point_type;
|
||||||
typedef boost::polygon::polygon_with_holes_traits<polygon>::hole_type hole;
|
using hole = boost::polygon::polygon_with_holes_traits<polygon>::hole_type;
|
||||||
|
|
||||||
point pts[5] = {
|
point pts[5] = {
|
||||||
boost::polygon::construct<point>(0, 0),
|
boost::polygon::construct<point>(0, 0),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
// Boost.Geometry (aka GGL, Generic Geometry Library)
|
||||||
// QuickBook Example
|
// QuickBook Example
|
||||||
|
|
||||||
// Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands.
|
// Copyright (c) 2011-2024 Barend Gehrels, Amsterdam, the Netherlands.
|
||||||
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
// Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland.
|
||||||
|
|
||||||
// Use, modification and distribution is subject to the Boost Software License,
|
// Use, modification and distribution is subject to the Boost Software License,
|
||||||
@ -17,8 +17,8 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
typedef boost::polygon::polygon_data<int> polygon;
|
using polygon = boost::polygon::polygon_data<int>;
|
||||||
typedef boost::polygon::polygon_traits<polygon>::point_type point;
|
using point = boost::polygon::polygon_traits<polygon>::point_type;
|
||||||
|
|
||||||
point pts[5] = {
|
point pts[5] = {
|
||||||
boost::polygon::construct<point>(0, 0),
|
boost::polygon::construct<point>(0, 0),
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user