[英]Finding a point inside a Boost::Geometry::Polygon
我有一個Polygon
對象,我正在尋找一種有效的方法來嚴格地在其內部(而不是在其邊界上)找到任何點。 最好的方法是什么?
我有以下想法,但我不太喜歡:
給定多邊形,您可以找到多邊形與平行於x軸的直線相交並位於多邊形的yMin和yMax之間的前兩個點(下圖中的0和1)。
這些點之間的任何點都將在多邊形內。 基本思想來自於掃描轉換多邊形-即這些是您要填充的點。 第二點之后的線段的繞線為0或2,具體取決於您的多邊形。
必須先進行兩個交叉(或最后一個交叉),因為交叉點是沿x軸排序的。
一些極端情況:
為避免出現第一個問題,請確保將第一個點作為確定的交叉點,而下一個點可以是交叉點或多邊形僅接觸線的點。
無需使用大多數語言的任何特殊功能,即可輕松實現這一目標。 由於我不熟悉Boost方法,因此我在javascript中發布了基本概念的草圖。
該繪圖是使用paper.js完成的-盡管此處概述的算法代碼本身是包含在內的 。
您可以將其轉換為C ++,只要您可以枚舉Boost :: polygon中的所有點即可
這是演示 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.