2011-05-07 101 views
0

您可以在Java中共享一些代碼以用線或路徑切割多邊形嗎?在Java中用線切割多邊形

+0

其實我沒有找到任何東西,你能給我一個小費在哪裏看? – michael 2011-05-07 17:03:01

+0

dup http://stackoverflow.com/questions/3623703/how-can-i-split-a-polygon-by-a-line? – xan 2011-05-10 02:06:43

+0

我也發現這個http://stackoverflow.com/questions/1775457/generate-new-polygons-from-a-cut-polygon-2d,但沒有源代碼:) – michael 2011-05-10 14:39:11

回答

1

我在爲Android開發某種'頁面捲曲'實現的同時,正在處理這類問題。雖然代碼不一定(稍後我會添加鏈接)儘可能可讀,下面簡要介紹一下我開始的想法。這可能延伸到路徑,但我只處理一條線。

  1. 您有一組呈現多邊形的頂點。
  2. 給出一條切線,你有一個斜坡。
  3. 選擇該切割線上的任意點。
  4. 根據信息2.和3.翻譯原始頂點,以便您從該線中選擇的點成爲原點。然後旋轉頂點,使切割線變爲垂直。或者,如果你喜歡在y軸上進行測試,那麼就是水平的。
  5. 之前的轉換之後,您有一個設置,其中原始切割線是x = 0處的y軸。
  6. 在這一點上,計算交點比較容易,因爲您只需檢查兩個創建線的頂點是否位於y軸的相反兩側。也就是說,另一個有正面的x,另一個負面的。計算這條直線穿過x = 0的確切點並不是很困難。它有x = 0,你只能找到y。
  7. 對此交點進行確切的變換,您之前做過,倒退,並且原始多邊形上有一個切點。

對於計算多邊形的交叉點,確實有更復雜的計算方法,但考慮到我正在使用的項目的性質 - 我真的很享受有更簡化的環境。我也沒有在這個地方找到這個東西,所以我也帶着一點鹽,但這更像是一個我自己想出來的想法。

And the code as promised