【发布时间】:2015-04-14 23:06:57
【问题描述】:
我需要确定两个几何图形的内部是否相交。 InteriorsIntersect 谓词不是由 OGC 或 Boost Geometry 指定,而是由 DE-9IM 矩阵 (see also) 定义:
T * *
* * *
* * *
我使用 Boost Geometry 中的 relate 函数创建了自己的谓词。
namespace bgr = boost::geometry::detail::relate;
using InteriorsIntersectMask = bgr::static_mask<'T','*','*','*','*','*','*','*','*'>;
template<typename Geom1, typename Geom2>
inline bool interiorsIntersect(const Geom1& geom1, const Geom2& geom2)
{
return bgr::relate<InteriorsIntersectMask>(geom1, geom2);
}
这很好用。我唯一担心的是 relate 函数和 static_mask 类型没有记录为 Boost Geometry API 的一部分,并且据我所知是实现细节。以这种方式使用relate 是否安全?有没有使用 Boost Geometry 实现相同目标的替代方法?理想情况下,我希望看到relate 成为boost/geometry/algorithms 中的一个算法。
【问题讨论】:
标签: c++ boost boost-geometry