2011-08-18 88 views
1

如何確定一個或多個點是否位於給定邊界的區域內?例如,在下圖中,三個藍色點位於以紅色爲界的區域內,兩個紅色點位於以藍色爲界的區域內,並且有三個點 - 兩個藍色和一個紅色 - 不在任何一個指示區域。確定點是否位於有界區域內的算法

enter image description here

+1

搜索Google for Point in Polygon算法,您會發現一些。 –

+1

[C#Point in polygon]可能的重複(http://stackoverflow.com/questions/4243042/c-point-in-polygon) – Jens

+0

你有多少個多邊形的數學定義?換句話說:是否有任何可以描述它們的公式? – Tigran

回答

2

here
這是C,但代碼/算法可以被轉換爲C#提供方便。

2

從這一點畫一條線。檢查它是否穿過任何區域邊緣以及它的哪一側。
如果它跨越它們在該區域的每一側的奇數次。

+0

凹面不是真的。如果你從一個多邊形中挖出一個點,但是在一個「洞穴」內,繪製的線會穿過多邊形,但仍然不在它的外面 – Tigran

+0

@Tigran,但它又會先穿過洞壁,然後再穿過多邊形牆在出路,這使得它不是一個奇數的兩個十字架。 – Dani

+0

你可以想象那個簡單的線會在多邊形的頂點上一邊和兩邊交叉2次。只要觸摸它... – Tigran

1

我不知道「算法」做到這一點,但在C#(.NET框架)中,你可以使用類RegionRegion.IsVisible方法。您可以使用GraphicPath構造函數創建自定義區域。 GraphicPath本身可以由Point數組構造。

相關問題