Вершины из коллекции полупространств в 3D - PullRequest
1 голос
/ 02 марта 2012

Может кто-нибудь предложить какие-нибудь хорошие алгоритмы или свой собственный подход для вычисления вершин набора полупространств в 3D?Полупространства гарантированно будут выпуклыми и ограниченными.

Пока что поиск в Интернете был довольно бесплодным, qhull может выполнить эту операцию, но я надеялся получить более математический взгляд на проблему, а не читать массыисходного кода - но это последнее средство.

1 Ответ

1 голос
/ 02 марта 2012

Предполагая, что все полупространства определены плоскостью, где все "за" плоскостью (т.е. относительно направленного вектора нормали) находится за пределами полупространства, а все внутри или перед плоскостью находится внутри, наиболее очевидным решением является :

  • для каждой пары плоскостей получить и сохранить пересечение линии;

Это даст вам коллекцию строк. Тогда для каждой пары линии и плоскости:

  • если линия лежит точно на плоскости, ничего не делать;
  • если линия пересекает плоскость и еще не является отрезком линии, превратите ее в отрезок, который проходит до точки пересечения;
  • если это уже отрезок и пересекает план, отрежьте часть за плоскостью;
  • если линия уже была отрезком и полностью лежит на одной стороне плоскости, то ничего не делать.

Затем собрать набор всех конечных точек сегмента линии.

...