2011-09-28 90 views
3

我正在做目標C,C或C++中實現的多邊形/幾何算法庫調查(按照優先順序)。我有非常特殊的需求,所以我想我會問社區是否有人知道滿足一些或全部需求,因爲我更願意使用一個庫/ API來滿足我的所有需求。這就是我需要能夠做到:尋找具有特定功能的多邊形幾何庫

  1. 交叉口2個多邊形
  2. 確定兩個多邊形是一致的(即相同的形狀和尺寸,儘管它們可以旋轉或鏡像)
  3. 2D斌包裝凸多邊形(又稱片材切割或開放式裝箱包裝,以便最大限度地使用固定寬度的材料)
  4. 與#3相同,但對於凹多邊形
  5. 能夠採取一組線段,其中一些共享端點並且其中一些相互交叉並轉向它變成一組多邊形
  6. 與#5相同,但增加了檢測帶孔洞的多邊形並將其分成2個多邊形的能力(至少其中一個是凹形的)
  7. 獎勵:以上任何或全部與由線和曲線組成的封閉形狀

這些按照優先級順序排列,我可以解決它們中任何一個的缺失(我的應用程序變得不那麼有用)。例如,如果我有一個只有1和2的圖書館,我會發現比3-7的圖書館更有用。

回答

2

在C++中,它存在一些使用多邊形幾何體的庫,但我不知道一個庫完全符合您的需求。

我在C++中知道的非常有用的庫是CGAL。它涵蓋了你的一些需求,但不是全部。

+0

此庫最接近滿足我的需求,我喜歡有開源和商業許可證。謝謝! – Jon

1

您需要的一些東西包含在GEOS之內。

GEOS可以很好地實現幾何之間的空間關係(相交,觸摸,重疊,位於,包含等等)。

我不知道3-7是否內置(你可以做線合併(5))。

至於7,GEOS不建模曲線(只有形成線條或多邊形的點)。您可以在GEOS中定義的唯一封閉形狀是多邊形。