2014-02-12 84 views
0

我有一個由點列表表示的閉合輪廓,我需要將它分成相等部分,瞭解部分的面積。表面細分成相等部分

我認爲我可以使用一些細分算法,如Delanuy細分。但用這種方法,我必須給出細分部分的質心。

任何人都有一些提示?

+1

您是否正在尋找該地區的特定細分,或者是否符合您的部分地區標準的地區的任何細分?輸入輪廓是否凸起?每件產品都必須連接嗎? –

+0

任何一種都很好。是的,輸入是凸起的,是的,結果部分應該連接 – nkint

回答

2

如果我理解正確:給定說一個矩形說區域10,目標區域爲1,則需要將矩形分割爲10個部分,每個部分的面積爲1.因此,將矩形切成10個細長矩形像吉他苦惱,或麪包片)會做。

如果是這樣,那麼我會做以下幾點: 創建一個函數來計算凸多邊形的面積。這是相當平凡的(因爲poly是凸的)。

觀察,由於輸入多邊形是凸的,任何將多邊形分成兩部分的線段恰好會在兩個地方與多邊形相交。具體而言,您可以通過選取多邊形的頂點並將其連接到多邊形的每個其他頂點(如風扇)來對多邊形進行三角化。

以這種方式進行三角剖分會創建一個接近您需要的分區。假設輸入多邊形由頂點列表poly = {v1,v2,v3,...,vn}給出,其中vert是唯一的,並且沒有三個是共線的(凸多邊形)。我們可以計算它的面積A1,得到一個由(v2,v3,v4)形成的多邊形的三角形。現在,如果我們通過向下一個添加一個額外的垂直(例如v5)來將三角形生長爲多邊形,以形成(v2,v3,v4,v5),則該區域增加到A2(兩個三角形之和(v2,v3,v4)和(v2,v4,v5)。由於線性關係,如果你想增長原來的三角形來表示A2',那麼你可以在線段(v4,v5)上進行插值來找到v4'因爲您可以計算初始輸入poly的總面積,並且您知道每個細分的目標區域,所以可以將輸入poly切割成所需區域的片段,直到您如果你想要一個更好的分區,你可以從多邊形的中心開始,也就是說第一個(種子三角形)將會是(center,v1,v2)。然後縮小/擴大它到所需的區域,移動到下一個三角形,重複。

希望有道理:D