Scipy ConvexHull和QHull:rank/dimension不是最大值

Jes*_*cia 6 python numpy convex-hull convex-polygon qhull

我正在尝试使用Scipy和ConvexHull库创建一个Convex Hull.据我所知,它叫QHull.

当我想要添加的点没有"全尺寸"时,会出现问题.例:

from scipy.spatial import ConvexHull
import numpy as np
points = np.append([[0,2]],[[2,0]],axis=0)
hull = ConvexHull(points)
Run Code Online (Sandbox Code Playgroud)

有输出:

Traceback (most recent call last):
  File "C:/folder/vertices_scipy2.py", line 5, in <module>
hull = ConvexHull(points)
  File "scipy\spatial\qhull.pyx", line 2230, in scipy.spatial.qhull.ConvexHull.__init__ (scipy\spatial\qhull.c:20317)
  File "scipy\spatial\qhull.pyx", line 328, in scipy.spatial.qhull._Qhull.__init__ (scipy\spatial\qhull.c:3639)
QhullError: Qhull error
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加一个额外的点,那么凸包具有完整的尺寸:

from scipy.spatial import ConvexHull
import numpy as np
points = np.append([[0,0],[0,2]],[[2,0]],axis=0)
hull = ConvexHull(points)
Run Code Online (Sandbox Code Playgroud)

一切正常.一个例子和另一个例子之间的区别(我做了很多其他的例子,所以我确定)是第一种情况下的凸包在二维空间中是1维的,而在第二种情况下是2二维空间中的维度(即全维度).

有任何想法吗?自从文档指出以来,我认为传递了一些qhull_options,因为在答案中已经提到:

QHullError当Qhull遇到错误条件时引发,例如当未启用要解析的选项时的几何退化.

但是,我已经阅读了QHull中的许多选项,但它们似乎都没有解决这个问题.我随机尝试了其中一些,收效甚微.

任何帮助都会有所帮助.我正在开发一个程序,可以创建数百个这样的船体,其中一些不是全维的.

gg3*_*349 4

看来 ConvexHull 不支持退化凸包。

点的数量必须至少是维数加一才能具有非退化凸包。

例如,在平面中,您需要 3 个点才能拥有非退化外壳:3 个点的凸外壳将是一个三角形,而退化外壳将是 2 个点之间的线段。

事实上,文档提到:

引发: QhullError 当 Qhull 遇到错误情况时引发,例如未启用解析选项时出现几何简并。