I need to determine whether the interiors of two geometries intersect. An InteriorsIntersect predicate is not specified by OGC or Boost Geometry but is defined by the DE-9IM matrix (see also):
T * *
* * *
* * *
I've created my own predicate using the relate function in Boost Geometry.
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);
}
This works great. My only concern is that the relate function and static_mask type are not documented as part of the Boost Geometry API and are implementation details as far as I can tell. Is it safe to use relate in this way? Is there an alternative to achieving the same goal using Boost Geometry? Ideally I would like to see relate be an algorithm within boost/geometry/algorithms.