如何用R的deldir生成含Delaunay三角形顶点坐标的数据框?
在R中使用deldir生成含Delaunay三角形顶点坐标的数据框
deldir包默认仅返回顶点索引,但可以通过索引匹配原始点数据的方式快速生成目标数据框,具体步骤如下:
1. 安装并加载包
如果尚未安装deldir,先执行安装命令:
install.packages("deldir") library(deldir)
2. 准备点数据
这里用随机生成的点集作为示例,你可以替换成自己的数据集:
# 生成10个随机点的坐标数据框 pts <- data.frame( x = runif(10, min = 0, max = 10), y = runif(10, min = 0, max = 10) )
3. 执行Delaunay三角剖分
调用deldir()函数计算剖分结果,返回的对象中包含三角形的顶点索引:
# 计算Delaunay三角剖分 dt_result <- deldir(pts$x, pts$y) # 提取三角形的顶点索引数据框 tri_indices <- dt_result$triangulations
tri_indices中的ind1、ind2、ind3列分别对应每个三角形三个顶点在原始pts数据框中的行号。
4. 匹配索引与坐标
通过索引从原始点数据中提取对应坐标,添加到三角形数据框中:
# 匹配三个顶点的x、y坐标 tri_indices$x1 <- pts$x[tri_indices$ind1] tri_indices$y1 <- pts$y[tri_indices$ind1] tri_indices$x2 <- pts$x[tri_indices$ind2] tri_indices$y2 <- pts$y[tri_indices$ind2] tri_indices$x3 <- pts$x[tri_indices$ind3] tri_indices$y3 <- pts$y[tri_indices$ind3]
5. 整理最终数据框
保留需要的坐标列,移除索引列:
# 生成仅含坐标的目标数据框 final_tri_df <- tri_indices[, c("x1", "y1", "x2", "y2", "x3", "y3")] # 查看结果 head(final_tri_df)
这样得到的final_tri_df每行对应一个Delaunay三角形,包含三个顶点的完整坐标信息。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

