规则间隔正交网格Delaunay三角剖分(计算抛物面系数)

时间:2014-02-19 17:57:12

标签: algorithm scipy triangulation delaunay qhull

我正在尝试为输入x和y坐标正交且相对等距的特定情况构建Delaunay三角剖分。

鉴于数据大小相对较大(1000x1200三角测量点)并且Qhull算法不知道我的额外正交条件,三角测量相对较慢(我的机器上25秒)。

因此,我想手动构建一个Delaunay三角剖分,每个已知的四边形细分为两个三角形。我理解这并不总是会导致有效的Delaunay三角剖分(例如,当x和y步长明显不同时),但在我的情况下,我相信细分方法会产生良好的三角剖分。

在下图中,我用索引标记了每个三角形,即初始顶点和顶点定义方向:

Subdivision plot

在这种情况下,我分别有[-1, 1.33, 3.67, 6][2, 4.5, 7, 9.5, 12]的x和y坐标。

我目前正在使用SciPy包装器来处理Qhull,并且能够构建顶点和适当的邻居信息,但是很难定义equations属性(如http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.spatial.ConvexHull.html中简要提到的那样)。

基本上,我相信这些值是每个三角形与paraboloid_scaleparaboloid_shift属性定义的抛物面法线的法线参数,但不能提出适合Qhull解释的幻数。每个顶点应该有n_dimensions + 1个值,SciPy中有代码计算每个顶点与给定点的距离:

dist = d.equations[isimplex*(d.ndim+2) + d.ndim+1]
for k in xrange(d.ndim+1):
    dist += d.equations[isimplex*(d.ndim+2) + k] * point[k]

所以我的问题是:

  • 我是否正确解释了equation属性?
  • 那里有没有一个工具可以帮我吗?
  • 我是否可以在不通过Qhull的情况下计算出我的正交和大部分等距情况下的equation参数值?

1 个答案:

答案 0 :(得分:3)

为了计算2D Delaunay三角剖分,qhull将3D中的2D点提升到抛物面上,然后计算这些3D点的下凸包,2D Delaunay三角剖分是3D下凸的2D平面中的投影。船体。

查看从here获取的图片:

Lifting map

对于2D Delaunay三角剖分的每个面,相应的3D超平面是穿过三个抬起的3D点的3D平面。如果三角测量是Delaunay,则该超平面对应于2D中的空圆。查看从here获取的图片:

empty circle and hyperplane