a.k.a. Алгоритм обрезки полигона в 3D
a.k.a. Поиск столкновений между двумя сталкивающимися многоугольниками
Большинство алгоритмов обрезки полигонов подробно описаны для 2D и описаны как расширяемые для 3D, но без деталей. Например, алгоритм отсечения sutherland-hodgman
Не имея возможности найти какие-либо 3D-реализации или псевдо-код в Интернете, я сейчас спрашиваю (и пытаюсь ответить на мой собственный вопрос)
Алгоритм будет иметь две формы, такие как приведенные ниже:
И выведет пересечение двух фигур, как показано ниже:
Заметим, что хотя алгоритм Сазерленда-Ходжмана находит пересечение двух полигонов, он (и большинство других) проводит различие между обрезанным многоугольником и полигоном отсечения; обрезанный многоугольник может быть вогнутым или выпуклым, но форма отсечения должна быть выпуклой. Однако моя реализация при расширении до 3D требует, чтобы обе формы были выпуклыми, это говорит о том, что это не настоящий 3D-алгоритм сатхера-ходжмана и другие ответы (с использованием любого алгоритма), которые снимали бы это требование оценили