我需要在多邊形中找到自交點。 我知道助力有這個能力。 但我不知道如何使用turn_info獲取有關交叉點的信息。像什麼段相交等 任何人都可以幫忙嗎? 謝謝如何使用boost /?在多邊形中找到自交點?
0
A
回答
1
因爲由Boost Geometry定義的概念不允許自交叉,所以你不能。
然而,間接然後可以使用驗證功能(新的,因爲我認爲1.59),以獲得對自我相交的一些信息:
std::string reason;
poly p;
bg::read_wkt("POLYGON((0 0, 0 4, 2 4, 2 2, 6 2, 6 6, 2 6, 2 4, 0 4, 0 8, 8 8, 8 0, 0 0))", expected);
bool ok = bg::is_valid(p, reason);
std::cout << "Expected: " << bg::dsv(p) << (ok?" valid":" invalid: '" + reason + "'") << "\n";
打印:
預期:(((0 ,(0,4),(2,4),(2,2),(6,2),(6,6),(2,6),(2,4),(0,4 ),(0,8),(8,8),(8,0),(0,0)))無效:'幾何有無效的自交。在(0,4)找到自交點;方法:t;操作:x/u; {0,-1,-1,0}/{0,-1,-1,7}'
1
所以這是獲取自我交叉。
namespace bg = boost::geometry;
using namespace std;
typedef bg::model::d2::point_xy<double> point_2d;
typedef bg::model::polygon<boost::geometry::model::d2::point_xy<double> > Polygon;
Polygon poly { { { 10, 10 }, { 20, 10 }, { 20, 5 }, { 25, 5 }, { 25, 7 }, { 30, 7 }, { 30, 3 }, { 25, 3 }, { 25, 5 }, { 20, 5 }, { 20, 0 }, { 10, 0 }, { 10, 10 } }};
typedef bg::point_type<Polygon>::type point_type;
typedef boost::geometry::detail::overlay::turn_info<point_type, boost::geometry::segment_ratio<double> > TurnInfoType;
bg::detail::no_rescale_policy robust_policy;
bg::detail::self_get_turn_points::no_interrupt_policy interrupt_policy;
std::vector<TurnInfoType> turns;
boost::geometry::self_turns<boost::geometry::detail::overlay::assign_null_policy>(poly.outer(), robust_policy, turns, interrupt_policy);
用於獲取信息只是使用類似:
turns[i].operations[0].seg_id.segment_index
相關問題
- 1. 如何在多邊形內找到點?
- 2. 優化多邊形交點查找
- 3. 找到所有由線交點形成的多邊形
- 4. 如何在邊緣找到交點
- 5. 與多邊形交點在OpenCV中
- 6. 圈多邊形交點
- 7. Boost :: Geometry:如何連接multi_polygon中的相交多邊形?
- 8. Libgdx交叉點多邊形
- 9. 如何找到多邊形的中心?
- 10. 如何找到,如果點在內部多邊形d3.js
- 11. 如何在boost :: geometry中找到2個多邊形的觸摸長度?
- 12. 在BOOST圖中找到給定2個頂點的多條邊
- 13. 檢測n邊多邊形的自交?
- 14. 如何從一組線中找到包圍點的多邊形?
- 15. 如何在不規則多邊形內找到一個點
- 16. 如何找到交點矩形(點)的交錯矩形
- 17. R中的多邊形交點
- 18. 在四邊形中找到等價點
- 19. 如何找出多邊形中邊,面,頂點的數量
- 20. 如何找到一個點是否在使用球拍的多邊形內
- 21. 在PostGIS中,如何查找多邊形中的所有點?
- 22. 找到地圖中的點在哪個多邊形中
- 23. 點在多邊形
- 24. Boost :: geometry如何將多邊形添加到multi_polygon中
- 25. 我如何找到從一個點到該多邊形的多邊形上的最短點(不是距離)
- 26. Boost :: Geometry如何獲取多邊形內點的座標?
- 27. 在幾何圖形中使用boost rtree查找結果點
- 28. 如何在geoJson中找到保存在MongoDB中的多邊形
- 29. 如何將自相交多邊形劃分爲簡單的多邊形?
- 30. 給定非凸多邊形中的一大組頂點,我如何找到邊?
我突然意識到我認爲[標籤:升壓幾何。我不熟悉[tag:boost-polygon],所以如果這是上下文,我的答案可能不準確。 – sehe
嘿,謝謝你的回覆。我確信你可以在polygon中找到自我交集。我已經看到了一個代碼。我只是不記得如何。我認爲有一個使用turn_info。但我在那裏迷路了。如果你知道如何使用get turn_info,那可能會有所幫助。 –
我已經在Boost Geometry郵件列表中發現了一篇文章,其中...諷刺的是,Adam Wulkiewicz說:「我在其他電子郵件中看到你已經知道了它。」我認爲現在是時候讓你在這裏提供一些鏈接,甚至是自我回答 - 這真是一個有用的問答。事實上,在你已經認識到事情發生之後,你有意識地冒着讓輪子浪費時間的風險。 – sehe