Qhull Выпуклая оболочка хочет, чтобы я набрал не менее 3 баллов - PullRequest
0 голосов
/ 05 мая 2018

Обновление: я решил попробовать использовать пакет линейного программирования, чтобы определить, являются ли вершины двух многогранников линейно разделимыми. (Вершины - это мои данные, а не многогранники.) Думаю, это будет работать лучше, поэтому мне больше не нужен ответ на этот вопрос.

Я пишу некоторый код, который включает проверку, не пересекаются ли определенные многогранники. Эти многогранники определяются выпуклыми оболочками их вершин, и я создаю выпуклые оболочки, используя Qhull. В частности, я использую метод:

from scipy.spatial import ConvexHull

Это прекрасно работает, за исключением того, что иногда мои сеты имеют только 2 или 1 очко. Qhull это не нравится, и оно выдает эту ошибку:

QhullError: QH6214 Ошибка ввода qhull: недостаточно точек (1) для построения исходного симплекса (нужно 3)

При выполнении: | Qhull я Qt Параметры, выбранные для Qhull 2015.2.r 2016/01/18: run-id 109084531 инцидентность Qtriangulate _pre-merge _zero-centrum

Хотя я могу справиться с этим, написав некоторые подпрограммы, которые улавливают ситуацию, в которой меньше 3 баллов, досадно, что Qhull не справляется с этим делом. Поэтому я ищу:

1) Простой способ заставить Qhull справиться с этим правильно

или

2) Альтернативный пакет для использования

Спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

QHull на самом деле не должен обрабатывать многогранники одной или двух вершин (или вершин d-1 в измерении d), поскольку они выполняют свои собственные выпуклые оболочки (и они являются симплексами).

Проверьте младшее число и передайте вход на выход.

...