0

我正在使用 R 中的三角形网格。对于那些不熟悉的人,PLY 格式有两个主要组成部分,一个 3 x n 顶点 x、y、z 坐标矩阵,其中 n 是顶点数,以及一个 3 x 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() 跨行工作,但查找唯一行,并期望数字的顺序相同。有什么建议么?

4

1 回答 1

1

What you want to do is hash each pair, then make a table of the hashes. You also want (x,y) to hash the same as (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
于 2013-10-25T19:17:57.287 回答