我有幾千個爲建模而生成的四面體網格。我有頂點和表面信息被索引到兩個矩陣中,這些矩陣有些是相關的。曲面的節點鏈接到頂點的矩陣。我想找出哪些頂點相互連接形成一個四面體。有沒有一種算法來檢測形成四面體邊的頂點的連通性?找到四面體網格的邊的算法
0
A
回答
0
如果您的節點矩陣是鄰接矩陣,即最近的鄰居,然後選擇任何頂點,一些四面體它形成其他剩餘頂點必須滿足:
(我)他們是近鄰(ii)它們是彼此的直接鄰居。如果這不是真的,那麼你將最終與四面體相交。
如果我誤解你的說法,也就是說,它的不是鄰接矩陣,那麼你就必須做Delaunay三角,即計算您的點雲中的3D Voronoi單元圖的3D版本。 https://en.wikipedia.org/wiki/Voronoi_diagram
0
此鏈接可能會幫助您找到算法。 http://mathworld.wolfram.com/Tetrahedron.html
0
從可能重複的邊緣名單開始:
假設你得到了與可能複製邊緣的ASCII文件。在Unix系統中,這裏是從中提取獨特的邊列表的一個簡單的方法:
cat edges.txt | awk '{printf "%d %d\n", ($1 < $2 ? $1 : $2), ($1 > $2 ? $1 : $2)}' | sort | uniq > unique_edges.txt
作用:
- 的「的awk」命令確保在每邊,頂點較低的ID爲 (因此,將有一種表示文件中相同邊緣的單一方式)
- 'sort'命令對所有行進行排序。這將確保 所有重複的邊緣在一起
- 的「uniq的」命令禁止 重複的行
如果你是在Windows下,你可以安裝cygwin(有AWK,sort和uniq)。在其他腳本語言(如perl)中做類似的事情也很容易。
從四面體的列表開始:
現在,如果你開始用的四面體一個文件,可以產生邊的(重複)名單如下(那麼你可以運行上面的命令刪除重複項):
cat tetrahedra.txt | awk '{printf "%d %d\n%d %d\n%d %d\n%d %d\n%d %d\n%d %d\n", $1, $2, $1, $3, $1, $4, $2, $3, $2, $4, $3, $4}' > edges.txt
它做什麼:它爲每個四面體產生6個邊,每條邊一個邊。
很明顯,您可以將兩個命令組合起來,直接從四面體文件中提取唯一的邊緣列表。
相關問題
- 1. 從多邊形網格中找到唯一邊的算法
- 2. 計算具有邊長的正四面體的體積
- 3. 從封閉的三角形網格創建四面體網格
- 4. 從Mathematica曲面網格生成四邊形網格
- 5. 給定四面體上的三個點,找到第四個
- 6. 繪製多邊形網格的算法
- 7. 使用四邊形繪製球體的算法
- 8. 任意四邊形網格生成最簡單的算法是什麼?
- 9. 將網格四面化
- 10. 表面網格到體積網格
- 11. OpenGL計算法線(四邊形)
- 12. 使用點測試找到兩個四面體的交點
- 13. 在四邊形中找到等價點
- 14. 如何計算四面體的橫截面
- 15. 如何通過matplotlib繪製四面體網格?
- 16. Dijkstra算法多邊找到最小值
- 17. 使用Ford Fulkerson算法找到邊緣?
- 18. 網格算法
- 19. 查找網格島的外邊緣
- 20. 從給定的四邊形中找出符合矩形的最小四邊形
- 21. 網格算法的益智
- 22. 找到一個點屬於哪個四面體元素
- 23. 找到算法來計算特定輸入的具體輸出
- 24. 如何跨多個網格計算邊界框/球面(C#)
- 25. 如何基於4個曲面邊緣計算網格?
- 26. matlab:找到一個平行四邊形的第4個頂點
- 27. 算法找到無阻塞面積/線
- 28. 計算三維網格的表面積
- 29. 返回CATransform3D將四邊形映射到四邊形
- 30. 四面體高度頂點
從你的問題中很難弄清楚,你能否提供更多的信息:(1)你究竟有什麼作爲輸入?你有四面體以及問題摘要的標題嗎? (2)你想計算頂點的連通性,但是以哪種形式?所有邊緣的列表?頂點的連通性作爲矩陣? – BrunoLevy
我用eidors和netgen來生成我的模型。我擁有的所有信息都包含我從netgen生成的.vol文件中獲得的simplices和vertices。然而,邊緣信息也是形成四面體單元邊緣的頂點之間的連通性不準確。它有很多重複的值,它應該是有序的。 – Gaze