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

PrevUpHomeNext
disjoint

Checks if two geometries are disjoint.

Synopsis

template<typename Geometry1, typename Geometry2>
bool disjoint(Geometry1 const & geometry1, Geometry2 const & geometry2)

Parameters

Type

Concept

Name

Description

Geometry1 const &

Any type fulfilling a Geometry Concept

geometry1

A model of the specified concept

Geometry2 const &

Any type fulfilling a Geometry Concept

geometry2

A model of the specified concept

Returns

Returns true if two geometries are disjoint

Header

Either

#include <boost/geometry.hpp>

Or

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

Conformance

The function disjoint implements function Disjoint from the OGC Simple Feature Specification.

Supported geometries

Point

Segment

Box

Linestring

Ring

Polygon

MultiPoint

MultiLinestring

MultiPolygon

Variant

Point

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Segment

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Box

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Linestring

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

Ring

ok

ok

ok

ok

ok

ok

nyi

ok

ok

ok

Polygon

ok

ok

ok

ok

ok

ok

nyi

ok

ok

ok

MultiPoint

ok

ok

ok

ok

nyi

nyi

ok

ok

nyi

nyi

MultiLinestring

ok

ok

ok

ok

ok

ok

ok

ok

ok

ok

MultiPolygon

ok

ok

ok

ok

ok

ok

nyi

ok

ok

ok

Variant

ok

ok

ok

ok

ok

ok

nyi

ok

ok

ok

Examples

Checks if two geometries are disjoint

#include <iostream>

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

namespace bg = boost::geometry; 1

int main()
{
    // 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::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::read_wkt("POLYGON((2 2,4 4,6 2,4 0,2 2))", poly2);
    bool check_disjoint = bg::disjoint(poly1, poly2);
    if (check_disjoint) {
         std::cout << "Disjoint: Yes" << std::endl;
    } else {
        std::cout << "Disjoint: No" << std::endl;
    }

    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);
    check_disjoint = bg::disjoint(poly1, poly3);
    if (check_disjoint) {
         std::cout << "Disjoint: Yes" << std::endl;
    } else {
        std::cout << "Disjoint: No" << std::endl;
    }

    return 0;
}

1

Convenient namespace alias

Output:

Disjoint: Yes
Disjoint: No

disjoint


PrevUpHomeNext