我使用boost :: geometry庫編寫了一個函數,該函數給出了先前定義的多邊形的直徑。Boost :: Geometry如何獲取多邊形內點的座標?
該直徑被定義爲其兩個點之間的最大距離。因此,我編寫了一個雙循環計算每對點的每個距離,但我不知道如何訪問多邊形內的點座標,甚至點對象,然後使用兩點之間的距離函數由圖書館(順便說一下,哪一個應該更快?)。
看着Boost docs on polygon後,我試圖my_polygon.PointList沒有成功...
我在最後的解決辦法是使用副把提案的修改版本:
for(auto it1 = boost::begin(boost::geometry::exterior_ring(poly));
it1 != boost::end(boost::geometry::exterior_ring(poly));
++it1)
{
for(auto it2 = it1+1;
it2 != boost::end(boost::geometry::exterior_ring(poly));
++it2)
{
double distance = boost::geometry::distance(*it1, *it2);
if(my_diameter < distance){my_diameter = distance;}
}
}
我只是抑制的冗餘兩次計算相同的距離;
謝謝你的例子,我只是試了一下,它絕對有效,雖然我不明白這個環的概念,但更重要的是,我仍然在尋找一些更優化的東西:對於N點多邊形,你的循環我只需要N(N-1)/ 2來計算距離(case it1 = it2無關和雙重計數),我可以通過使用outer()函數來訪問這些點嗎? – Liam