半平面的交集、多邊形的核、多邊形的交集基本概念

基礎概念

簡單多邊形 P 的核(kernel),K(p)定義如下:K(p)由多邊形內部的點構成,這些點與多邊形的任何頂點相連所構成的線段完全包含在 P 中。
一個重要的性質是現,K(p)作爲半平面的交集,它或者爲空或者爲完全包含在P 內的有界凸集。
在這裏插入圖片描述
紅色部分。

半平面,在數學定義下就是
ax + by + c >= 0
所控制的一個的半空間。半空間在不同維度下意義不同,如果是2維的話,其實此時ax + by + c >= 0 就是二維中一條直線的一側。

此時如果你再看核,其實可以理解爲線性規劃時得到的一個可行域。

我們上面說到 如果是2維的話,其實此時ax + by + c >= 0 就是二維中一條直線的一側。所以直線(也就是決定半平面的直線)切割多邊形 ,讓直線不斷的去切割當前多邊形,然後得到新的多邊形。

不難想象,其實結果可能是一個多邊形(一定是凸的)、一個線段、空、一個點等等。我們記錄頂點的數據來進行描述。

綜上,如果計算半平面的交集,可以使用一個

  • 將直線們極角排序,角度相同的保留下需要的一個
  • 用一個雙端隊列存儲當前半平面交,每次通過判斷隊首與隊尾第一個交點是否滿足當前直線來更新
  • 先用隊尾判定隊首交點是否合法,再用隊首判斷隊尾交點是否合法
  • 最後求出來的半平面交是一個凸多邊形

同理如果計算多邊形交,可以將每一個邊對應到一個半平面,從而運行半平面交集進行計算。

Ref

https://blog.csdn.net/weixin_30345577/article/details/97505934
https://blog.csdn.net/accry/article/details/6070621

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章