我正在尝试使用库 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)
有输出:
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
但是,如果我添加一个额外的点,使凸包具有完整的维度:
from scipy.spatial import ConvexHull
import numpy as np
points = np.append([[0,0],[0,2]],[[2,0]],axis=0)
hull = ConvexHull(points)
然后一切正常。一个例子和另一个例子之间的区别(我已经做了很多其他例子,所以我确定)是第一种情况下的凸包在二维空间中是一维的,而在第二种情况下,是 2-二维空间中的维度(即全维度)。
有任何想法吗?我想传递一些 qhull_options 自从文档指出以来,正如答案中提到的那样:
QHullError 当 Qhull 遇到错误条件时引发,例如在未启用解决选项时出现几何退化。
但是,我已经阅读了QHull 中的许多选项,但似乎都没有解决这个问题。我随机尝试了其中一些,但收效甚微。
任何帮助都会有所帮助。我正在开发一个创建数百个这样的船体的程序,其中一些不是全维度的。