0

私は R で三角メッシュを扱っています。慣れていない方のために説明すると、PLY 形式には 2 つの主要コンポーネントがあります。頂点 x、y、z 座標の 3 x n 行列 (n は頂点の数) と 3 x m 行列です。各番号が頂点行列からの 1 つの線を参照し、三角形の面の 3 つのコーナーを定義する面の数。顔マトリックスで一度だけ参照される三角形の「側面」であるメッシュ境界エッジを見つけようとしています。

したがって、私の質問は、3 つの列がある行全体で一意の数値のペアを見つけるにはどうすればよいですか?

face 1 4 6 7
face 2 7 6 8
face 3 9 11 12 
face 4 10 9 12

ここで、線 (面) 1 にはエッジ 4-7 が 1 回だけ表示されますが、6-7 は 9-12 と同様に 2 回表示されます。unique() は行全体で機能しますが、一意の行を探し、番号が同じ順序であると想定します。助言がありますか?

4

1 に答える 1

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
于 2013-10-25T19:17:57.287 に答える