我需要一種演算法來確定多邊形的層次結構。例如,

我只有閉合的頂點回圈,其中多邊形具有 CCW 頂點順序,而孔具有 CW 頂點順序。我想創建一個結構來包含這種多邊形和孔的層次結構。
using Loop = std::vector<Point>;
class PolygonHierarchy
{
public:
PolygonHierarchy(const std::vector<Loop>& loops);
~PolygonHierarchy();
private:
class Polygon
{
public:
std::vector<Point> vertices;
std::vector<Polygon*> childPolygons;
bool isCCWOrder;
}
std::vector<Polygon*> polygonHierarchies;
}
有人可以解釋如何找到子多邊形并形成這樣的樹嗎?(無需提供代碼)。
uj5u.com熱心網友回復:
根據@YvesDaoust 在評論中所說的,對于每個多邊形/孔,您可以找到all包含它的多邊形/孔。
這會給你一個有向圖。在此圖中,對于每個節點,您可能有多個傳入邊。例如,像這樣:
1 (a)
|\
| \
| 2 (b)
3 /
在這里,1 和 2 都知道 3,但理想情況下只有 2 應該知道。在這里,1 是 2 的父級。如果你概括這一點,因為不會有任何相交的多邊形,如果你有兩個沖突的節點a和b,并且如果 a 是 的祖先b,你可以丟棄a(否則丟棄b),你可以繼續以這種方式,直到每個節點只剩下一個輸入邊,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427014.html
