Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2017. The current version is 1.89.0.
Boost.Tuple tuples with arithmetic elements can be used as points within Boost.Geometry
Boost.Tuple fixed sized collections, such as boost::tuple<double, double>, are (optionally) adapted to the Boost.Geometry point concept.
Boost.Tuple pairs or triples might have mutually different types, such as a boost::tuple<float, double>. Boost.Geometry reports the first type as its coordinate_type.
Boost.Geometry supports Boost.Tuple pairs, triples, quadruples, etc up to tuples with 10 elements (though most algorithms do not support so many dimensions).
A tuple can be the point type used by the models linestring, polygon, segment, box, and ring
#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
The standard header boost/geometry.hpp
does not include this header.
Shows how to use Boost.Tuple points in Boost.Geometry
Working with Boost.Tuples in Boost.Geometry is straightforward and shown in various other examples as well.
#include <iostream> #include <boost/geometry.hpp> #include <boost/geometry/geometries/polygon.hpp> #include <boost/geometry/geometries/adapted/boost_tuple.hpp> BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(cs::cartesian) int main() { boost::geometry::model::polygon<boost::tuple<double, double> > poly; poly.outer().push_back(boost::make_tuple(1.0, 2.0)); poly.outer().push_back(boost::make_tuple(6.0, 4.0)); poly.outer().push_back(boost::make_tuple(5.0, 1.0)); poly.outer().push_back(boost::make_tuple(1.0, 2.0)); std::cout << "Area: " << boost::geometry::area(poly) << std::endl; std::cout << "Contains (1.5, 2.5): " << std::boolalpha << boost::geometry::within(boost::make_tuple(1.5, 2.5), poly) << std::endl; return 0; }
Output:
Area: 6.5 Contains (1.5, 2.5): false