2013-07-16 42 views
5

Làm thế nào để loại bỏ khoảng cách từ Triangulation Delaunay lớn hơn tôi cần?Làm thế nào để thiết lập chiều dài tối đa của tam giác bên trong tam giác Delaunay trong R?

Ví dụ dữ liệu:

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) 

Vẽ bản đồ:

plot(x,y) 

Delaunay triangulation với tri.mesh() - gói (tripack)

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

Làm cách nào tôi có thể trích xuất các khoảng cách ngắn hơn? Tôi không cần những người lớn, bạn chắc chắn biết khoảng cách mà tôi có ý nghĩa. Có một số đối số để thực hiện điều này trong hàm tri.mesh() không? Hoặc nó có thể được thực hiện sau khi nó?

Khoảng cách có được lưu trữ trong đối tượng này không?

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

Ông có thể làm ví dụ của bạn tái sản xuất? Gói 'tripolt' dường như không có sẵn từ CRAN. – QuantIbex

+0

xin lỗi, đó là gói: tripack –

+0

Tiêu chuẩn cụ thể để xóa hình tam giác/cạnh là gì? – QuantIbex

Trả lời

6

Các tài liệu (?tri) gợi ý rằng các phân đoạn có dạng r$tlist[k] -- r$tlist[r$tlptr[k]]: bạn có thể xóa những ngoài một số ngưỡng.

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

Các vấn đề liên quan