2013-07-16 34 views
5

İhtiyacım olandan daha büyük olan Delaunay üçgenleme uzaklığı nasıl kaldırılır?R'de Delaunay üçgenlemede maksimum üçgen taraf uzunluğu nasıl ayarlanır?

Örnek veriler: - paketi (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() ile

plot(x,y) 

Delaunay üçgenleştirmesinin:

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) 

Harita çizimi

Yalnızca daha kısa mesafeleri nasıl alabilirim? Hangi mesafeleri kastettiğimi kesinlikle bildiğiniz büyüklere ihtiyacım yok. tri.mesh() işlevinde bunu yapmak için bazı argüman var mı? Veya bundan sonra yapılabilir mi?

Bu nesnede mesafeler bile saklanıyor mu?

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

size örnek tekrarlanabilir yapabilir misiniz? 'Tripolt' paketi CRAN’dan görünmüyor. – QuantIbex

+0

Üzgünüz, paket paketimiz: tripack –

+0

Üçgen/kenarları kaldırmak için kullanılan beton kriterleri nelerdir? – QuantIbex

cevap

6

belgeleri (?tri) segmentleri formu r$tlist[k] -- r$tlist[r$tlptr[k]] ait olduğunu göstermektedir: Bazı eşiğin ötesinde olanlar kaldırabilirsiniz.

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