回答
我不確定您使用的是哪種語言。我有一個爲我的目的而編寫的庫,可以通過給定的行集合和返回多邊形來獲得完整的分區。這是寫在PHP,並呼籲dimension,並使用它,你可以解決你的問題像這樣:
- 由一組線LineSet_2D或Polygon_2D
- 定義分割線也通過Line_2D 的定義你的多邊形
- 使用LineSet_2D方法getPolygons找到所有多邊形
我寫了一個例子:
//define or polygon. Note that Polygon_2D can also be used
$rPolygon = new LineSet_2D(
new Line_2D(0, 3, 1, 1),
new Line_2D(1, 1, 3, 0),
new Line_2D(3, 0, 1,-1),
new Line_2D(1,-1, 0,-3),
new Line_2D(0,-3,-1,-1),
new Line_2D(-1,-1,-3,0),
new Line_2D(-3, 0,-1, 1),
new Line_2D(-1, 1, 0, 3)
);
//define partition line set
$rPartition = new LineSet_2D(
new Line_2D(-1, 1, 1,-1),
new Line_2D(-1,-1, 1, 1)
);
//result line set:
$rResultSet = LineSet_2D::createFromArray(array_merge(
$rPolygon->getLines(),
$rPartition->getLines()
));
//for example, dump plain result:
var_dump($rResultSet->getPolygons());
你也可以找到這個例子here但我認爲這不是你的問題的確切解決方案,因爲我的LineSet_2D類將返回所有成環的多邊形(即不僅'件')。
您正在尋找「多邊形斬波」布爾操作。你可以谷歌它的資源可用。
對自己做這部分隊列.. 對於每個切片作業線..
- 找到與多邊形的邊的切片線的交叉點。
- 對於它相交的每條邊,將邊分成兩部分。
- 將對應於分割邊的多邊形拆分爲兩個多邊形。
對所有多邊形都做同樣的事情。 你將不得不照顧的特殊情況,如分裂線通過頂點等...
你的意思是像差異等操作..?真的在這種方式,這是可能的,但我認爲我有很多圖書館這與2多邊形,所以它應該有幾個與多邊形和線? – Hunk
我不確定圖書館是否爲你做這件事。因爲我工作一個,所以我不使用其他人。另外,它更像是一個數據結構問題,除了交叉例程之外。所以,如果你沒有找到一個,我認爲最有可能的情況就是這樣。你可以繼續寫下你自己的。它並不那麼困難,而且可能很有趣。另外,您可以在將來修復任何錯誤。 –
- 1. 多邊形多邊形相交的特殊情況
- 2. Qt將多邊形分解爲較小的多邊形
- 3. 將多邊形分解爲較小的多邊形
- 4. 將凹多邊形分解爲凸多邊形
- 5. 向SVG多邊形上的特定邊添加描邊
- 6. 特殊形成的盒子邊框
- 7. 分解複雜多邊形的算法
- 8. 用於多邊形分解的算法
- 9. 二維數組中的特殊多邊形for循環
- 10. 在sympy中分解多邊形
- 11. 將三角形多邊形劃分爲更小的多邊形
- 12. 小程序,用多邊形代替字符串特殊字符
- 13. 指向多邊形轉換
- 14. Geopandas Dataframe指向多邊形
- 15. 在較小的多邊形中細分多邊形的算法
- 16. 從分解的直線多邊形引用矩形
- 17. 保證多邊形法線的向外方向
- 18. 向邊緣縮放多邊形?
- 19. 編輯多邊形多邊形的多邊形路徑事件
- 20. 以特殊塊形式分割列表
- 21. 將一個多邊形分解成小塊或三角形
- 22. 從分表用多邊形
- 23. 如何在一組簡單多邊形中分割多邊形
- 24. 在一些小凸多邊形中細分一般多邊形
- 25. 多邊形組中的STConvexHull()多邊形
- 26. 處理多邊形的多邊形算法,處理跨邊界的多邊形
- 27. 將Sympy結果繪製爲微分方程的特殊解法
- 28. MapBox點擊特徵的多邊形
- 29. 谷歌地圖API多邊形的多邊形,而不是指向多邊形碰撞
- 30. 「通過頂點射線」特殊情況下檢測多邊形中的點
從圖片中不明顯 - 什麼是添加線到生成的分區(行,是邊緣存在,但也有一些線穿過多邊形的邊) –
線應具有邊緣的方向並從每個邊緣點開始。但我的目標是定義隨機方向並在這個方向上進行分解。 – Hunk
那麼,它只是一組線?我的意思是,輸入是:將被分解的polugon和一些行(讓它們與多邊形的邊平行)。你期望的結果是什麼?一組新的多邊形? –