我正在使用R中的三角形网格。对于那些不熟悉的人,PLY格式有两个主要组成部分,一个是顶点x,y,z坐标的3乘n矩阵,其中n是顶点数,3通过m个面矩阵,其中每个数字引用顶点矩阵中的一条线,从而定义三角形面的三个角。我试图找到网格边界边,这是三角形的“边”,只在面矩阵中引用一次。
因此我的问题是,如何在有三列的行中找到唯一的数字对?
face 1 4 6 7
face 2 7 6 8
face 3 9 11 12
face 4 10 9 12
此处线(面)1的边缘4-7仅出现一次,而6-7出现两次,9-12也是如此。 unique()跨行工作,但查找唯一的行,并期望数字的顺序相同。有什么建议吗?
答案 0 :(得分:1)
你想要做的是散列每一对,然后制作一个哈希表。你也想要(x,y) 与(y,x)相同的哈希值。
R>data
V1 V2 V3 V4 V5
1 face 1 4 6 7
2 face 2 7 6 8
3 face 3 9 11 12
4 face 4 10 9 12
R>e1 <- pmin(data[3], data[4]) + pmax(data[3], data[4])/100
R>e2 <- pmin(data[3], data[5]) + pmax(data[3], data[5])/100
R>e3 <- pmin(data[4], data[5]) + pmax(data[4], data[5])/100
R>table(c(e1,e2,e3, recursive=TRUE))
4.06 4.07 6.07 6.08 7.08 9.1 9.11 9.12 10.12 11.12
1 1 2 1 1 1 1 2 1 1