我使用顯示在3D WPF庫簡單線條的幾何形狀。它的一個例子可以看出,在未來的畫面:
在這裏面你可以看到一組三角形和四邊形的。我繪製這個的方式是我提供了一個List<Point3D>
,其中我放置了代表每個片段的點對。
的問題是,有很多重複的邊緣,我想避免這種情況,因爲這類型的表示似乎是非常資源需求。產生
點列表遍歷包含N個頂點每個Element
。它不知道特定的邊是否被共享。
<p0, p1, p1, p2, p2, p333, p333, p89, p89, p2, p2, p1 ...>
的想法是,除去重複對(注意順序可能是不一樣的)。在上面的例子中,刪除的對應該是最後一個(p2,p1),因爲它表示與第二對點(p1,p2)相同的邊緣。可能有一個,兩個或更多個重複的點對。
我需要儘可能快地做到這一點的操作,表現爲頂部PRIO這裏。
理念
雖然在列表中添加點我可以暫時保存了其中兩個,檢查列表已經包含了他們,但是這意味着我每增加一個點,並且沒有時間尋找到一個列表對我來說似乎是一個好主意(名單將包含數千個點5000-50000)。
我生成點列表的元素有幾個具有唯一ID的節點,所以我認爲可以通過創建Dictionary
訂購Tuple<Point3D, Point3D>
然後刪除重複項來以某種方式使用它。
我沒有嘗試過的最後一個想法,我不知道如何實現它,我想聽到的話,有可以做一些其他的事情。
你的例子只給出了一個沒有連接點的列表。如果以對/元組的形式表示,將會很容易。只需編寫一個比較器,告訴您是否使用了相同的座標,這意味着它們是相同的並且可以刪除。 –
該列表以每對被轉換爲段的方式解釋。我認爲比較節點ID會比查看座標快得多。 – Sturm