Что вернуть boost :: geometry :: intersection? - PullRequest
1 голос
/ 20 февраля 2020

Не могу найти описание возвращаемого значения boost::geometry::intersection в форсированной документации. Поэтому я не понимаю, что это значит. Вот минимальный пример:

// main.cpp

#include <boost/geometry/algorithms/intersection.hpp>
#include <boost/geometry/geometries/box.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/ring.hpp>
#include <boost/geometry/views/box_view.hpp>
#include <cstdlib>
#include <iostream>
#include <list>

int main() {
  namespace geometry = boost::geometry;
  using Point        = geometry::model::d2::point_xy<int>;
  using Box          = geometry::model::box<Point>;
  using Ring         = geometry::model::ring<Point>;

  Box box1{Point{0, 0}, Point{10, 10}};
  Box box2{Point{20, 20}, Point{30, 30}};

  std::list<Ring> intersections;
  bool            s = geometry::intersection(
      geometry::box_view{box1}, geometry::box_view{box2}, intersections);
  bool s1 =
      geometry::intersects(geometry::box_view{box1}, geometry::box_view{box2});

  std::cout << std::boolalpha << s << std::endl;
  std::cout << std::boolalpha << s1 << std::endl;
  std::cout << intersections.size() << std::endl;

  return EXIT_SUCCESS;
}

Произошел следующий вывод:

true
false
0

Почему intersection возвращает true, даже если две геометрии не пересекаются? Почему ретваль intersection и intersects отличается? Что это значит?

Спасибо

...