我想积累三角形模型/网格的边缘。例如,一个三角形立方体有 18 条边。
它看起来如此简单和容易,但实际上它太复杂了。我有一个三角形的所有相邻信息。例如,我有相邻的顶点和三角形,我知道哪些三角形有共同边,但问题是如何提取两个三角形之间的共同边。
需要考虑的一件事是边的点/顶点不应该有任何重复的索引。
首先是如何计算边的总数。记住一个立方体有 18 条边。
我尝试了很多,但现在放弃了。:) 任何想法?.
更新1:
好的,我有一个三角形 T[i](索引 v1,索引 v2,索引 v3),它具有三个边 v1v2、v2v3、v3v1。
我有一个所有边缘的邻居三角形。
T[i].index_of_sharedTri1_with_edge_v1v2,
T[i].index_of_sharedTri2_with_edge_v2v3,
T[i].index_of_sharedTri3_with_edge_v3v1;
现在我需要制作哪个循环才能提取独特的边缘?我需要比较哪些信息?我需要比较边顶点、共享三索引还是什么?我尝试了很多方法,但它太复杂了。
更新 2:
GLTris *e = new GLTris[nb_Tris*3];
int n = getTotalEdges_Sorted(indices, nb_Tris, e);
cout<<n<<endl;
int ne = RemoveDublicatesFromAnSortedEdgeArray(e, n);
for(int i=0; i<ne; i++)
e[i].Cout();
我已经尝试过了,效果很好,但我需要弄清楚它是否适用于所有类型的网格,这是一种有效的方法吗?