2013-07-16 11 views
5

私が必要とするより大きいドローネ三角測量から距離を削除するには?RでのDelaunay三角測量の三角形の最大長の設定方法は?

例のデータマップをプロット

x<-rep(1:12, c(2,2,7,9,10,5,4,6,10,10,9,4)) 
y<-c(1,2,1,2,1:3,5:8,1:9,1:10,2,7:10,8:11,7:12,3:12,3:12,4:12,5,8:10) 
x_plus<-seq(0.2:0.8, by=0.1) 
x<-x+sample(x_plus, 78, replace=TRUE) 
y<-y+sample(x_plus, 78, replace=TRUE) 

plot(x,y) 

tri.meshとドローネ三角形分割() - パッケージ(tripack)

my.triangles<-tri.mesh(x,y) 
plot(my.triangles, do.points=FALSE, lwd=0.2) 
points(x,y, col = "blue", pch=20) 

どのように短い距離だけを抽出できますか?私はあなたが確かに私が意味するどの距離を知っているそれらの大きなものを必要としません。 tri.mesh()関数でこれを行う引数がありますか? それはそれの後で行うことができますか?

距離はこのオブジェクトにも格納されていますか?あなたには、いくつかのしきい値を超えたものを削除することができます

my.triangles 

triangulation nodes with neigbours: 
node: (x,y): neighbours 
1: (1.4,1.7) [5]: 2 3 4 11 12 
2: (2,3) [6]: 1 4 7 8 9 11 
3: (3,1.8) [4]: 1 4 5 12 
. 
. 
. 
76: (12.4,8.8) [5]: 68 69 70 75 77 
77: (12.9,9.9) [6]: 70 71 72 75 76 78 
78: (13,11) [4]: 72 73 74 77 
number of nodes: 78 
number of arcs: 221 
number of boundary nodes: 10 
boundary nodes: 1 11 12 45 56 66 74 75 77 78 
number of triangles: 144 
number of constraints: 0 
+0

あなたはあなたの例が再現してくださいもらえますか?パッケージ 'tripolt'はCRANから利用できないようです。 – QuantIbex

+0

申し訳ありませんが、パッケージ:tripack –

+0

三角形/エッジを削除する具体的な基準は何ですか? – QuantIbex

答えて

6

ドキュメント(?tri)はセグメントがフォームr$tlist[k] -- r$tlist[r$tlptr[k]]であることを示唆しています。

r <- tri.mesh(x,y) 
k <- seq_len(r$tlnew - 1) 
i <- r$tlist[k]   
j <- r$tlist[r$tlptr[k]] 
keep <- i > 0 
i <- abs(i[ keep ]) 
j <- abs(j[ keep ]) 
plot(x, y) 
segments(r$x[i], r$y[i], r$x[j], r$y[j], col="grey") 
distances <- sqrt((r$x[i] - r$x[j])^2 + (r$y[i] - r$y[j])^2) 
threshold <- 2.5 # Choose the threshold manually 
i <- i[ distances < threshold ] 
j <- j[ distances < threshold ] 
segments(r$x[i], r$y[i], r$x[j], r$y[j], lwd = 2) 

smaller triangulation