亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

確定多邊形何時被新邊閉合

確定多邊形何時被新邊閉合

C#
Qyouu 2021-07-06 13:18:56
我的程序有一個List<Vector3>獨特的點(A、B、C、...),每次用戶繪制一條獨特的線(1、2、3...)時都會創建這些點。線存儲在 a 中List<int>,其中每兩個整數是每個點的索引,以形成一條線。任何兩條線都不能有相同的兩個點,任何點都不能占據相同的位置,允許有雜散線。Points: {A, B, C, D, E} //Each letter represents a 2d or 3d positionSides: {0,1,1,2,1,3,3,4,4,2} //(Each int is an index in Points, every pair is a side)我試圖找到一種有效的方法來確定新線(綠色,5)何時關閉具有任意數量邊的多邊形。我有一種方法可以做到這一點:遍歷連接到新線(以及所有后續線)每一側的每條線,直到它們共享一個點(D)。我唯一的問題是多邊形的邊越多,我需要做更多的檢查(多邊形上每增加兩個邊都會使我在所有連接的邊上檢查一層更深)。有沒有辦法減少關閉多邊形所需的檢查次數?與無向圖中的 Cycles不完全相同。這知道至少存在一個循環并連接到給定的一側,并且只尋找連接到該側的最小循環。其他方面無關緊要,應該避免它們。
查看完整描述

1 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

這一切都取決于您需要的優化級別。對于簡單的圖片(例如< 10 - 100k 行),您每次都可以運行 BFS。

高級算法:

首先,您需要使用Graph 表示之一來存儲圖形。然后,每當用戶畫一條線時,您就取兩個點中的任何一個并在該點上進行BFS。

如果您可以使用 BFS 到達同一點并且路徑長度 > 2,那么您就有了一個多邊形。

問題是,由于圖形是雙向的,因此您在遍歷它時需要小心。不要重新訪問您已經訪問過的節點。


查看完整回答
反對 回復 2021-07-10
  • 1 回答
  • 0 關注
  • 239 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號