问题标签 [qhull]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10667 浏览

python-2.7 - Voronoi 细胞的体积(python)

我在 Python 2.7 中使用 Scipy 0.13.0 来计算 3d 中的一组 Voronoi 单元。我需要获取每个单元格的体积,以便(去)加权专有模拟的输出。是否有任何简单的方法可以做到这一点 - 当然这是一个常见问题或 Voronoi 细胞的常见用途,但我找不到任何东西。以下代码运行,并转储scipy.spatial.Voronoi 手册所知道的所有内容。

0 投票
1 回答
599 浏览

matlab - QuickHull 最坏情况

QHull(也许还有其他很好的QuickHull实现)在许多情况下运行得非常好而且很快。然而,理论上我们知道它的最坏情况可能是 O(n^2)。在实践中,我没有看到任何具有多维(即 20 或 100)的数值示例,其中 QHull 效果不佳。

您是否知道 QHull 工作不佳或给出错误结果的数值示例,或者任何表明它不能在这里应用的例子。

0 投票
2 回答
2848 浏览

c++ - 点云库中的凸包计算在 2 维和 3 维中失败

我正在按照 PCL 文档的教程计算 2D Convex Hull ,请参见此处

我有一个云和一些索引,将它们投影在具有给定系数的平面上,然后计算凸包。这是代码:

我得到的总面积和体积的结果是:

对于tmpInliers的值范围

如果我将“setDimensions”更改为“2”,我会收到以下错误

在下面的示例中,我正在构建一个示例,并且在每种情况下都失败(setDimension 设置为 2 或 3),其中一个失败是之前的失败(“qhull 无法...”或根据来自 ConvexHull 的值的奇怪结果。

我有点卡在这里。如果我将其设置为二维,为什么它会失败?如果我将其设置为 3 维,我偶尔会发出以下警告:

我知道如果我有平面投影就是这种情况,但是如何避免这种情况呢?

0 投票
1 回答
348 浏览

python - Problems with 2D qhull voronoi patch data

I am trying to write code for Voronoi patches. This works fine with Matlab as seen below:

which is actually what I want!

However, since Matlab calls qhull, I wanted to use it directly, so that I can create a free version for my friends. So I used qhull directly from the commandline, and used its output to do the plotting. This is the result:

Now this is obviously wrong. So the relevant code for obtaining this is as follows:

The command that I use on the command line (for the same set of data points) is the following:

As can be seen, some the the vertices are not correct, although the majority of the vertices are ok ...

The relaxant part of the code used for this plot is the following:

Here, pData are the "patch" information that looks like this:

While vData are the vertices which look like that:

This information is obviously not correct. I am guessing that the problem is with the way in which I am calling qhull. Maybe I am not using the right flags? Can someone throw some light on the subject please??

Some specifications about the system I am working on: Windows 7 Matlab version R2010A Python 2.7

I actually use Python's subprocess module to run a DOS shell command to get the values directly from Qhull. That part is as follows:

However, this part is working properly. I have already verified this.

Note: I cannot post images. Apparently this is a "reputation" thing. If you want to see the images, please feel free to ask ...

0 投票
4 回答
11545 浏览

python - 为两个不规则网格之间的多个插值加速 scipy griddata

我有几个值定义在同一个不规则网格(x, y, z)上,我想插入到一个新的网格上(x1, y1, z1)。即,我有f(x, y, z), g(x, y, z), h(x, y, z)并且我想计算f(x1, y1, z1), g(x1, y1, z1), h(x1, y1, z1)

目前我正在使用scipy.interpolate.griddata它并且效果很好。然而,因为我必须单独执行每个插值并且有很多点,所以它很慢,计算中有大量重复(即找到最接近的点,设置网格等......)。

有没有办法加快计算并减少重复计算?即沿着定义两个网格线的东西,然后改变插值的值?

0 投票
1 回答
2071 浏览

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

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

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

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

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

细分图

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

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

从本质上讲,我相信这些值是每个三角形与paraboloid_scaleparaboloid_shift属性定义的抛物面法线的参数,但无法得出适合 Qhull 解释的神奇数字。每个顶点应该有n_dimensions + 1值,并且 SciPy 中有代码计算每个顶点到给定点的距离:

所以我的问题是:

  • equation是否正确解释了该属性?
  • 是否已经有一个工具可以为我做到这一点?
  • 我可以在equation不经过 Qhull 的情况下计算给定正交和大部分等距情况的参数值吗?
0 投票
1 回答
155 浏览

convex-hull - Qhull(Qhalf) 内点

我正在使用 qhull 库来计算半空间的交集。虽然这个问题是一个对偶的凸包问题,但是作为它的输入,它需要一个交点的内部点。正如他们的网页上所说,在这里,使用线性规划我们可以找到这样一个点。然而,即使对于简单的 2D 情况,这个 LP 问题也没有有界解决方案。qhull 网站上的给定说明有问题吗?

0 投票
4 回答
5985 浏览

r - 带有 xyz 坐标的 3d 曲面图

我希望有经验的人可以帮助如何从 xyz 数据准备形状文件。在这里可以看到一个为 Churyumov–Gerasimenko 彗星准备好的数据集的一个很好的例子,尽管没有提供前面创建形状文件的步骤。

我试图更好地理解如何将表面应用于给定的一组 XYZ 坐标。使用 R 包“rgl”直接使用笛卡尔坐标,但是环绕的形状似乎更困难。我找到了 R 包geometry,它提供了QHULL函数的接口。我尝试使用它来计算 Delaunay 三角面,然后我可以在rgl. 我无法弄清楚与该函数相关的一些选项,delaunayn以可能控制计算这些方面的最大距离。我希望这里的某个人可能对从 xyz 数据改进表面构造有一些想法。

使用“Stanford bunnny”数据集的示例:

在此处输入图像描述

这个答案让我相信 Qhull 的 R 实现可能存在问题。另外,我现在尝试了各种设置(例如delaunayn(bunny, options="Qt")),但效果不大。此处概述了 Qhull 选项

编辑:

这是球体的另一个(更简单)示例。即使在这里,面的计算也并不总是找到最近的相邻顶点(如果你旋转球,你会看到一些面穿过内部)。

在此处输入图像描述

0 投票
0 回答
130 浏览

performance - 您可以在 QHull / Matlab 中选择所需数量的 Voronoi 中心吗

我想从“高维数据中的最近邻?”中实现 Voronoi k-最近邻解决方案?我目前正在使用MATLABvoronoin来计算 Voronoi 顶点和 bin。此函数使用Qhull

问题是,在 6 个维度上超过 500 万个状态,函数只是挂起。有没有办法将 Qhull 限制n为顶点数?如果没有,我可以采取其他途径吗?

0 投票
1 回答
820 浏览

fortran - 如何将(r,球形谐波)空间中表示的数据内插到常规笛卡尔网格(F90)?

我正在尝试将球谐函数内插到立方笛卡尔网格。

我的球面伪光谱模拟的输出数据具有介于和之间的Nr径向水平,每个水平都包含一组用于经度和纬度的有限阶球谐函数。球谐函数通过三角截断映射到包含纬度和经度的物理球面网格。rMinrMaxNiNj

域如下:

  • 径向水平:rMin <= r(k) <= rMax,带索引1 <= k <= Nr
  • 球面谐波(三角截断,无变换混叠):
    • Nm = (Nj-1)/3
    • 0 <= m <= Nm
    • m <= l <= Nm
    • nlm == (nm+1)*(nm+2)/2(的总数lm组合)

数据数组:

  • 光谱形式:complex*16, dimension( 1:nlm, 1:Nr ) :: foo_spectral
  • 笛卡尔形式:real*8, dimension( 1:Nx, 1:Ny, 1:Nz ) :: foo_cartesian

我正在寻找一种准确有效的方法来将数据从其光谱表示插入到具有 edge-length 的三次笛卡尔网格中2*rMax,以使球域完全适合内部。我只想在 sphere内插值,但是:对于对应于r<rMinor的点rMax<r,三次网格应该有OUTSIDE_DOMAIN值。

目前,我必须将数据从其光谱表示(球形谐波:)foo(Nr,nlm)转换为物理表示(球形网格:) foo(Nr,Ni,Nj),然后使用 IDL 中的QHULL例程从物理球面网格插值到物理立方网格(foo(Nx,Ny,Nz))(请注意,Nx==Ny==Nz对于立方网格)。

我的数据大小比我现有的代码(用 IDL 编写)可以处理的要大,并且出于我的目的,转换为球形空间是不必要的。我想要一个更直接的独立方法——例如,不依赖于 IDL。

关于如何做到这一点的任何想法?我愿意使用开源库,但不必这样做会很好。

提前致谢!