问题标签 [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.
python - How to remove skinny triangles in scipy.spatial.Delaunay()
I have a scipy.spatial.Delaunay()
triangulation, and I would like to remove 'skinny' triangles from it. How would I do this?
I have seen that some other software (like here: Houdini triangulate2d) have a 'minimum angle' option precisely to prevent skinny triangles. Is there some equivalent option for scipy.spatial.Delaunay()
, or can someone provide a simple algorithm?
point-cloud-library - pcl::凹壳重建返回一个所有 RGB 值都为黑色的点云
当我使用 PointXYZRGB 和先前从场景颜色值定义的 RGB 值运行 pcl::concaveHull 重建时,返回的云的 RGB 值为零或黑色。
image-segmentation - 使用 ConvexHull 在 3D 图像中查找对象边界时出错
我试图在图像堆栈中找到一些对象的外壳。它们是细胞的显微镜图像。我正在使用 scipy 的 ConvexHull 来执行此操作。图像堆栈的尺寸为 46 x 512 x 512。我已将其转换为二进制数组。
我试过了
但收到此错误消息:
因此,我决定遍历堆栈中的 46 个图像中的每一个,然后查看是否可以合并输出。
但是,这给出了错误消息:
我应该如何解决这个问题?
我也在寻找一些关于这种方法是否合适的建议(即组合单个图像是否会给出正确的 3d 外壳?)或者如果不是,我可以找到图像中对象边界的一些替代方法?
谢谢你。
computational-geometry - 使用 Qhull 计算 3d 中的上凸包
我正在尝试使用 Qhull 计算 3D 点云的上凸包。我不知道是否有一个简单的方法来做到这一点。
我研究了模块 ConvexHull 和 Delaunay 的几个选项,“Qu”最远的站点,但我不认为它做我想要的,因为它似乎是一种使用下/上凸包计算 Delaunay 三角剖分的方法。
设计解决方案的另一种方法是针对凸包的每个单纯形计算曲面的法线和中心点,以便在法线平移后在中心附近引入一个新点。
添加这个点后,我可以计算原始集合的凸包加上这个点,看看这个点是否在包的内部。
然后我可以推断出单纯形是否属于上船体和/或下船体。
python - 如何在 Python 中为 LinearNDInterpolator 使用 Qhull 选项?
我正在尝试计算插值:
它给了我以下错误:
我的问题是:如何将选项更改为 QbB?
python - Scipy:Qhull 选项以确保每个点在不同的 Voronoi 区域中被隔离
我正在研究一个需要对飞机进行 Voronoi 镶嵌的问题。我认为在 Voronoi 细分中,每个点都将包含在 Voronoi 地图的唯一单元格中,例如
图中的点是黑点,每个点都包含在一个彩色单元格中。但是,在我的数据集上使用 scikit 实现,我得到的区域/单元的数量小于输入点的数量:
Voronoi 类的scikit 文档让我发现v.point_region
每个输入点都包含一个条目。的第i个成员表示a中第i个值所属v.point_region
的索引。v.regions
例如v.point_region[17]
= 34 表示a[17]
属于v.regions[34]
. 我没有意识到多个点可能属于同一个 Voronoi 地区!
这让我想到了我的问题:是否可以指定 Qhull 选项以确保每个点都隔离在 Voronoi 地图的不同单元格中?也就是说,我希望每个单元格都有一个独特的区域。其他人可以就这个问题提供的任何指示将不胜感激!
c++ - 如何通过qhull c++接口访问极值点
我继承了一段代码,它使用 qhull 创建一组点的 delaunay 三角剖分。对于代码的扩展,我想使用三角剖分的极值点(“外部”上的点),但我找不到如何通过 c++ 接口获取这些点。我确实发现“Fx”标志可以打印极值点,但我想通过变量访问它们。
代码本身太大,无法在此处发布,因此我将添加代码中已经存在的相关行:
在此之后,通过例如qh_facetarea
和访问三角剖分的属性qh_pointid
。
给定这段代码,访问极值点的最简单方法是什么?
c++ - 如何在 CMake 中使用 Qhull 作为外部项目?
我曾尝试在 CMake 中使用 QHull 和 libqhullcpp 作为外部项目,但没有成功。
到目前为止,我已经使用了这些命令,它们是这个的修改版本:
我的项目找不到任何 Qhull 代码文件,如果我添加
到我的项目它会抛出这个编译错误:
python - 构造具有已知三角形面的凸包对象
TLDR:我需要构建一个用于快速内点测试的 python 对象,类似于 SciPyConvexHull
或DelaunayTriangulation
. 问题是我提前知道必须构造点的三角剖分的顺序:(6 个点,8 个三角形面,每个面都有特定的顺序)。实际上,我已经知道凸包应该是什么,但我需要一种可以与现有(和优化!)库(例如 Scipy spatial)一起使用的形式。我怎样才能做到这一点?
背景: 我需要构建一个三角棱镜(想象一个 Toblerone 条 - 2 个端面,6 个侧面,全部为三角形)以进行一些内点测试。由于我将有许多这样的棱镜彼此相邻放置(在它们的侧面相邻,想象许多 Toblerone 条竖立在它们的末端并且彼此相邻),我需要小心确保空间中没有区域被两个包含相邻的棱镜。棱镜的横截面通常不均匀,因此相邻棱镜之间可能重叠,如下图所示两个相邻棱镜之间的近似平面:
注意沿着面部构造的两条不同的对角线——这就是问题所在。一个棱镜可能会使用 \ 对角线将面分成两个三角形,而相邻的棱镜可能会使用 /。为了确保相邻棱镜之间没有重叠,我需要明确控制三角形的形成顺序,以便它们始终使用相同的对角线。我可以做到这一点:对于我需要构建的每个棱镜,我提前知道应该以什么顺序构建三角形面。这是两个相邻棱镜的图示,它们之间有正确的共享对角线:相邻棱镜,共享对角线
我的问题是使用这些棱镜进行快速内点测试。以前,我使用的是这个答案中链接的方法:Delaunay(prism_points).find_simplex(test_points) >= 0
。它很快,因为它使用了高度优化的库代码,但我无法控制三角剖分的构造,所以可能会有重叠。
如果我将外壳构造为显式np.array
对象(顶点、面),那么我可以使用自己的代码进行测试(有许多可能的方法,我正在投射光线并测试与每个三角形面的交点)。find_simplex()
问题是这比前面提到的方法慢了大约 100 倍。虽然我确信我可以更快地获得代码,但值得指出的是,这段代码已经从 Cython 的另一个用例中得到了相当优化 - 我不确定我是否能在这里找到我需要的所有额外速度。至于不可避免的“你真的需要速度问题”,请相信我的话。这将 5 分钟的工作变成了数小时。
我需要的是构建一个可以与外部优化库一起使用的对象,同时保留对三角形面的控制。在我的代码中添加额外的 Cython 当然是一种选择,但是已经存在这样高度优化的代码,使用它会非常可取。
感谢任何可以提供帮助的人。
python - Scipy.spatial 不包含“qhull”
这是我在这个网站上的第一个问题。让我们切入正题:
我正在尝试scipy
在 Kubuntu 20.04 上的 Python 3.8 中创建 Voronoi 图,但是问题似乎是我无法访问Voronoi
该类,scipy.spatial
因为它不包含对qhull
. 同样依赖的其他类(如 ConvexHull)也qhull
无法访问。尝试在 PyCharm 中打开qhull
产品Cannot find reference to qhull in __init__.py
,但我无法导航到它。查看 SciPy 文档,似乎qhull
预计将与 一起交付scipy
,因为没有关于如何安装它的更多信息。
到目前为止,我已经尝试过:
- 升级
scipy
到最新版本 1.5.3 - 全新安装
scipy
- 我运行pip install
冗长,但没有出现错误或警告(应该是颜色编码的 afaik) qhull-bin
通过控制台安装qhull
手动构建
这些方法似乎都没有改变任何东西,除了我现在可以qhull
在控制台中运行,但这并不是我真正想要的。
我会很感激你对我的任何建议。