boost::geometry に多数のポリゴンがあり、最初のポリゴンとの最も長い共通の境界線を持つ 1 つのポリゴンから特定の隣人を見つけたいと考えています。ポリゴンは互いに正確に接触しているためboost::geometry::disjoint
false を返しますが、次のコードは常に周囲 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;
両方のポリゴンの接触長である共通の「境界線」を見つけるにはどうすればよいですか?