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 the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext
envelope (with strategy)

Calculates the envelope (with strategy) of a geometry.

Description

The free function envelope calculates the envelope (also known as axis aligned bounding box, aabb, or minimum bounding rectangle, mbr) of a geometry.

Synopsis

template<typename Geometry, typename Box, typename Strategy>
void envelope(Geometry const & geometry, Box & mbr, Strategy const & strategy)

Parameters

Type

Concept

Name

Description

Geometry const &

Any type fulfilling a Geometry Concept

geometry

A model of the specified concept

Box &

Any type fulfilling a Box Concept

mbr

A model of the specified Box Concept which is set to the envelope

Strategy const &

Any type fulfilling a Envelope Strategy Concept

strategy

The strategy which will be used for envelope calculations

Header

Either

#include <boost/geometry.hpp>

Or

#include <boost/geometry/algorithms/envelope.hpp>

Conformance

The function envelope implements function Envelope from the OGC Simple Feature Specification.

Example

Shows how to calculate the bounding box of a polygon

#include <iostream>

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>


int main()
{
    typedef boost::geometry::model::d2::point_xy<double> point;

    boost::geometry::model::polygon<point> polygon;

    boost::geometry::read_wkt(
        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
            "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", polygon);

    boost::geometry::model::box<point> box;
    boost::geometry::envelope(polygon, box);

    std::cout << "envelope:" << boost::geometry::dsv(box) << std::endl;


    return 0;
}

Output:

envelope:((2, 0.7), (5.4, 3))

envelope

PrevUpHomeNext