6

ライブラリ Scipy と ConvexHull を使用して凸包を作成しようとしています。私の知る限り、それは 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)

その後、すべてが機能します。1 つの例と他の例の違い (他の多くの例を行ったので、確信があります) は、最初のケースの凸包が 2 次元空間で 1 次元であるのに対し、2 番目のケースでは 2- 2 次元空間の次元 (つまり、全次元)。

何か案は?回答で言及されているように、ドキュメントが示しているので、いくつかのqhull_optionsを渡すと思いました:

QHullError 解決するオプションが有効になっていないときの幾何学的縮退など、Qhull がエラー状態に遭遇したときに発生します。

ただし、QHull の多くのオプションを読みましたが、この問題に対処しているようには見えません。私はそれらのいくつかを無作為に試しましたが、ほとんど成功しませんでした.

どんな助けでも役に立ちます。私は何百ものこれらの船体を作成するプログラムに取り組んでおり、そのうちのいくつかは完全な次元ではありません.

4

2 に答える 2