2016-02-13 49 views
4

我正在尋找半邊數據結構上的多邊倒角的示例實現或僞代碼。單邊斜面很容易 - 但是多邊一次......我現在試了幾個小時沒有成功。我只是在爲拓撲變化而苦苦掙扎,適當推動頂點看起來並不那麼困難。 基本上,我正在尋找如何從左側網格得到正確的網格上的半邊緣的數據結構的算法: topology change 半邊結構上的多邊倒角

任何人都可以點我的論文,書籍或多棱角斜面的樣例實現?

回答

1

我們可以將操作分成兩個概念步驟。首先,將紅色邊緣加倍。其次,將至少一個紅色邊緣的頂點分解。

第一步可以一次完成一個邊。給定一個紅邊e,創建另一個邊e'。對於e的一半邊緣,按照順時針順序插入e'的一個半邊作爲下一個半邊,同一個頭。對於e的另一半邊緣,按照逆時針順序插入e'的另一半邊緣作爲具有相同頭部的下一個半邊緣。

第二步可以一次完成一個頂點。給定至少一個紅色邊緣的頂點v,按照以下方式將頭部v的半邊組合在一起。在每一對相鄰白色邊緣之間的相同原始邊緣(2)之間出現的每對相鄰的紅色半邊緣之間斷開該圓形列表(1)(相鄰意味着兩個半邊沿順時針/逆時針順序是下一個/前一個) 。對於每次休息,創建一個新的邊緣。將所有東西拼接在一起。 (這涉及到對碎片和新邊緣的操作,我認爲在這個答案中的詳細程度的詳細描述將是無益的。)

+0

你好,謝謝。但是到目前爲止,它對我來說並沒有什麼意義。我同意第一步是插入重複的邊緣。例如,對我來說沒有意義的是「對於e的另一半邊緣,將e'的另一半邊緣作爲逆時針順序的相同頭部的下一半邊緣插入。」對我來說,e和e'的「內部」半指向對方,創造出一個圓形的ahlfedge對 - 但爲什麼是「外部」呢?而且,「拼接所有東西」是我主要掙扎的東西。 – user1282931

+0

也許不是很清楚地解釋這個答案是可靠的。從本質上講:通常當你對一個頂點進行倒角時(David稱之爲爆炸),每個輻射邊緣之間會產生一個新的邊緣。在這種情況下,在添加初始的新紅色邊緣後,您只需要在兩個紅色和兩個白色輻條邊緣之間創建邊緣,而不是在紅色和白色輻條邊緣之間創建邊緣。在實踐中,首先創建刪除頂點函數,一個連接頂點函數(創建2個頂點之間的邊),可用於創建倒角頂點函數。後者應該跳過創建紅色和白色輻條之間的邊緣。 – Xartec