Предполагая, что все полупространства определены плоскостью, где все "за" плоскостью (т.е. относительно направленного вектора нормали) находится за пределами полупространства, а все внутри или перед плоскостью находится внутри, наиболее очевидным решением является :
- для каждой пары плоскостей получить и сохранить пересечение линии;
Это даст вам коллекцию строк. Тогда для каждой пары линии и плоскости:
- если линия лежит точно на плоскости, ничего не делать;
- если линия пересекает плоскость и еще не является отрезком линии, превратите ее в отрезок, который проходит до точки пересечения;
- если это уже отрезок и пересекает план, отрежьте часть за плоскостью;
- если линия уже была отрезком и полностью лежит на одной стороне плоскости, то ничего не делать.
Затем собрать набор всех конечных точек сегмента линии.