r - 3-D笛卡尔指向二维半球并计算二维Voronoi细胞的面积

标签 r geometry computational-geometry voronoi

我一直在基于Qhull(R中的geometry包)在R和MatLab中进行某些功能的研究,以将圆形图中的局部笛卡尔X,Y,Z点投影到以(为中心)的球面(theta,phi,R) 0,0,0。由于所有Z值在原始坐标中均为正(X和Y都以0为中心),这给了我所需的半球投影(点颜色由Z值缩放),并用radial.plot( )的函数,使用phi(方位角)和theta(极角):

plotrix

对于球面变换,在以0,0,0为中心之后,而不是使用Hemispherical projection of 3-D Cartesian points的计算,而是使用Bourke (1996)上列出的ISO规范(不是物理约定)。

r     <- sqrt(x^2 + y^2 + z^2)
theta <- acos(z/r)
phi   <- atan2(y,x)


我想知道在这个半球形投影中包含给定类的点的Voronoi细胞的区域,从而保留了透视变形。虽然为2D笛卡尔X,Y点计算2D Voronoi图很简单,但将此Voronoi图转换为2D球面可能不会产生预期的结果,是吗?也许最好直接从半球投影点计算Voronoi图,然后返回每个像元的面积。

更新:我已经解决了。我的解决方案将在新的R包中共享,我将在此处发布该包。

最佳答案

OP,亚当·埃里克森(Adam Erickson)发布了gapfraction软件包,该软件包实现了埃里克森的半球-Voronoi间隙分数算法。


R的gapfraction软件包是为地下故事建模而设计的
借助光探测与测距(LiDAR)数据在森林中发出光。在
除了冠层间隙分数(Po)的度量,角冠层
封包(ACC)和垂直机盖盖(VCC)
一种新的树冠高度模型(CHM)算法,流行的个体树
冠(ITC)检测算法,以及许多其他算法
为统计建模提供有用的功能,包括
树木距样地中心的距离。


有关更多详细信息,请咨询:gapfraction: R functions for LiDAR canopy light transmission

请查看以下代码的一些简单演示:

# devtools::install_github("adam-erickson/gapfraction", dependencies=TRUE)
library(raster)
library(gapfraction)
data(las)

# This function implements Erickson's hemispherical-Voronoi gap fraction algorithm 
# with four common lens geometries: equi-distant, equi-angular, stereographic, and orthographic

P.hv(
  las = las, 
  model = "equidist", 
  thresh.val = 1.25, 
  thresh.var = "height", 
  reprojection = NA,
  pol.deg = 5,
  azi.deg = 45,
  col = "height", 
  plots = TRUE, 
  plots.each = FALSE, 
  plots.save= FALSE
)


输出:
graph

关于r - 3-D笛卡尔指向二维半球并计算二维Voronoi细胞的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34255668/

相关文章:

计算 3D 网格表面两点之间最短路径的算法

computational-geometry - 给定一个 Voronoi 图,找到它的位置

在 2D 中拟合抽象距离的算法

r - R中的cor和cor.test有什么区别

R 在 geom_point 中的填充百分比

r - 在 ggrepel 标签中使用plotmath

algorithm - 寻找径向线段的最近邻居

c++ - 看不懂HDU 2823的解决办法

R if语句具有多个条件和多个结果

r - 过滤矩阵列时保留列名