0

boost::geometry に多数のポリゴンがあり、最初のポリゴンとの最も長い共通の境界線を持つ 1 つのポリゴンから特定の隣人を見つけたいと考えています。ポリゴンは互いに正確に接触しているためboost::geometry::disjointfalse を返しますが、次のコードは常に周囲 0 を返します。

typedef boost::geometry::model::d2::point_xy<double>      boost_pnt;
typedef boost::geometry::model::polygon<boost_pnt>        boost_poly;

boost_poly otherPol = ...;
boost_poly thisPol  = ...;

if(! boost::geometry::intersection(thisPol, otherPol, out))
    return -1;

float perimeter = 0;
BOOST_FOREACH(boost_poly const& p, out)
{
    perimeter += boost::geometry::perimeter(p);
}
return perimeter;

両方のポリゴンの接触長である共通の「境界線」を見つけるにはどうすればよいですか?

4

2 に答える 2