...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Class box: defines a box made of two describing points.
Box is always described by a min_corner() and a max_corner() point. If another rectangle is used, use linear_ring or polygon.
template<typename Point> class model::box { // ... };
Parameter |
Description |
---|---|
typename Point |
point type. The box takes a point type as template parameter. The point type can be any point type. It can be 2D but can also be 3D or more dimensional. The box can also take a latlong point type as template parameter. |
Function |
Description |
Parameters |
---|---|---|
box()
|
Default constructor, no initialization. |
|
template<typename P, std::enable_if_t< ! std::is_copy_constructible< P >::value, int >> box(Point const & min_corner, Point const & max_corner)
|
Constructor taking the minimum corner point and the maximum corner point. |
Point const &: min_corner: Point const &: max_corner: |
template<typename P, std::enable_if_t< std::is_copy_constructible< P >::value, int >> box(Point const & min_corner, Point const & max_corner)
|
Constructor taking the minimum corner point and the maximum corner point. |
Point const &: min_corner: Point const &: max_corner: |
Function |
Description |
Parameters |
Returns |
---|---|---|---|
constexpr Point const & min_corner()
|
|||
constexpr Point const & max_corner()
|
|||
Point & min_corner()
|
|||
Point & max_corner()
|
Either
#include <boost/geometry/geometries/geometries.hpp>
Or
#include <boost/geometry/geometries/box.hpp>
Declaration and use of the Boost.Geometry model::box, modelling the Box Concept
#include <iostream> #include <boost/geometry.hpp> namespace bg = boost::geometry; int main() { typedef bg::model::point<double, 2, bg::cs::cartesian> point_t; typedef bg::model::box<point_t> box_t; box_t box1; box_t box2(point_t(0.0, 0.0), point_t(5.0, 5.0)); box_t box3{{0.0, 0.0}, {5.0, 5.0}}; bg::set<bg::min_corner, 0>(box1, 1.0); bg::set<bg::min_corner, 1>(box1, 2.0); box1.max_corner().set<0>(3.0); box1.max_corner().set<1>(4.0); double min_x = bg::get<bg::min_corner, 0>(box1); double min_y = bg::get<bg::min_corner, 1>(box1); double max_x = box1.max_corner().get<0>(); double max_y = box1.max_corner().get<1>(); std::cout << min_x << ", " << min_y << ", " << max_x << ", " << max_y << std::endl; return 0; }
Default-construct a box. |
|
Construct, assigning min and max corner point. |
|
Construct, using C++11 unified initialization syntax. |
|
Set a coordinate, generic. |
|
Set a coordinate, class-specific (Note:
prefer |
|
Get a coordinate, generic. |
|
Get a coordinate, class-specific (Note:
prefer |
Output:
1, 2, 3, 4