设置在 R 中生成 Delaunay 图的最大长度
Set maximum length for generating Delaunay graph in R
我试图在 R 中使用 spatstat 函数生成 Delaunay 三角剖分 'delaunay'。但是,我检查了文档,似乎没有设置最大长度的参数。
我注意到这个 post:
How to set maximum length of triangle side in Delaunay triangulation in R?
这似乎和我想要的一样,但由于我的点模式很大,所以我更喜欢简单快速的解决方案。谢谢!
这是我的代码:
pts <- data.frame(readMat(paste('./TMA - Coordinates/HE_Rescaled_Coords/', core,
'/HE.mat', sep = '')))
colnames(pts) <- c('x', 'y')
pts_ppp <- ppp(pts$x, pts$y, owin(poly = Region_HE))
delaunay_ppp <- delaunay(pts_ppp)
我也愿意接受使用其他软件包中的其他功能的解决方案。只要快就好。
Delaunay三角剖分是一种数学定义的三角剖分,不涉及最大线段长度的概念。如果要限制三角剖分中线段的最大长度,那就不是Delaunay三角剖分了,计算Delaunay三角剖分的算法不适用。
您必须指定在对段长度施加限制时希望发生的情况。该算法是否应该只删除太长的边?删除边太长的三角形?如果删除内容,则结果不再是原始点的三角剖分。您想生成不同的三角剖分吗?
如果X
是你的点阵型,那么
Dtess <- delaunay(X)
Dnet <- delaunayNetwork(X)
将 Delaunay 三角剖分作为镶嵌 Dtess
和网络 Dnet
。
从 Dnet
中删除比 lmax
长的边:
len <- lengths_psp(as.psp(Dnet))
Net <- thinNetwork(Dnet, retainedges = (len <= lmax))
从 Dtess
中删除至少有一条边长于 lmax
的三角形:
hypotenuse <- function(p) { max(lengths_psp(edges(p))) }
h <- sapply(tiles(Dtess), hypotenuse)
Tess <- Dtess[h <= lmax]
我试图在 R 中使用 spatstat 函数生成 Delaunay 三角剖分 'delaunay'。但是,我检查了文档,似乎没有设置最大长度的参数。 我注意到这个 post: How to set maximum length of triangle side in Delaunay triangulation in R? 这似乎和我想要的一样,但由于我的点模式很大,所以我更喜欢简单快速的解决方案。谢谢!
这是我的代码:
pts <- data.frame(readMat(paste('./TMA - Coordinates/HE_Rescaled_Coords/', core,
'/HE.mat', sep = '')))
colnames(pts) <- c('x', 'y')
pts_ppp <- ppp(pts$x, pts$y, owin(poly = Region_HE))
delaunay_ppp <- delaunay(pts_ppp)
我也愿意接受使用其他软件包中的其他功能的解决方案。只要快就好。
Delaunay三角剖分是一种数学定义的三角剖分,不涉及最大线段长度的概念。如果要限制三角剖分中线段的最大长度,那就不是Delaunay三角剖分了,计算Delaunay三角剖分的算法不适用。
您必须指定在对段长度施加限制时希望发生的情况。该算法是否应该只删除太长的边?删除边太长的三角形?如果删除内容,则结果不再是原始点的三角剖分。您想生成不同的三角剖分吗?
如果X
是你的点阵型,那么
Dtess <- delaunay(X)
Dnet <- delaunayNetwork(X)
将 Delaunay 三角剖分作为镶嵌 Dtess
和网络 Dnet
。
从 Dnet
中删除比 lmax
长的边:
len <- lengths_psp(as.psp(Dnet))
Net <- thinNetwork(Dnet, retainedges = (len <= lmax))
从 Dtess
中删除至少有一条边长于 lmax
的三角形:
hypotenuse <- function(p) { max(lengths_psp(edges(p))) }
h <- sapply(tiles(Dtess), hypotenuse)
Tess <- Dtess[h <= lmax]