3-D笛卡尔指向2-D半球形并计算2-D Voronoi单元的面积

时间:2015-12-13 20:00:10

标签: 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(极角)的R plotrix的函数:

Hemispherical projection of 3-D Cartesian points

对于球面变换,在以0,0,0为中心后,而不是使用Bourke (1996)的计算,我使用Wikipedia上列出的ISO规范(不是物理惯例)。

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

我想知道在这个半球投影中包含给定类点的Voronoi单元区域,保留透视失真。虽然计算二维笛卡尔X,Y点的二维Voronoi图很简单,但将这个Voronoi图转换为二维球形可能无法产生预期的结果,是吗?也许最好直接从半球投影点计算Voronoi图,然后返回每个单元的区域。

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

1 个答案:

答案 0 :(得分:2)

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