代码之家  ›  专栏  ›  技术社区  ›  pelson

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

  •  3
  • pelson  · 技术社区  · 10 年前

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

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

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

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

    Subdivision plot

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

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

    本质上,我认为这些值是每个三角形与由 paraboloid_scale paraboloid_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的情况下,给定正交和基本等距的情况下的参数值?
    1 回复  |  直到 10 年前
        1
  •  3
  •   lrineau afsal    10 年前

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

    查看拍摄自 here :

    Lifting map

    对于2D Delaunay三角剖分的每个面,对应的3D超平面是通过三个提升的3D点的3D平面。如果三角剖分是Delaunay,则该超平面对应于2D中的空圆。查看拍摄自 here :

    empty circle and hyperplane