【发布时间】:2017-09-07 20:31:35
【问题描述】:
我是土木工程专业的博士生,最近开始用 C++ 编写代码,基本上我对获得两个多边形的重叠或相交区域感兴趣,这两个多边形代表两个土壤颗粒的投影。
我进行了很多搜索,发现 boost geometry 对我来说是最好的解决方案。我也对我面临的具体问题进行了大量搜索,但我无法解决我的问题。
问题来了,我用的软件叫PFC3D(粒子流代码)。我必须使用 microsoft visual studio 2010 与该软件交互并编译 DLL 文件以在 PFC 中运行它。
我的代码运行良好,没有重叠区域。这是代码:
// Includes for overlapping
#include <boost/geometry.hpp>
#include <boost/geometry/core/point_type.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/register/point.hpp>enter code here
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;
polygon poly1, poly2;
poly1 {{0.0, 0.0}, {0.0, 1.0}, {1.0, 1.0}, {1.0, 0.0}, {0.05, 0.0}};
poly2 {{0.5, -0.5}, {0.5, 0.5}, {1.5, 0.5}, {1.5, -0.5}, {0.5, -0.5}};
std::deque<polygon> output;
boost::geometry::intersection(poly1, poly2, output);
double area = boost::geometry::area(output);
我得到的错误是在分配 poly1 和 poly2 坐标。 希望你能在这方面有所帮助。谢谢!
【问题讨论】:
-
你使用的是什么版本的 boost?
-
感谢您的回复。我正在使用 boost_1_65_0
标签: c++ boost boost-geometry