QGLWidget - Поперечное сечение трехмерных полых объектов

Я использую QGLWidget для рисования трехмерных объектов, входными данными для моей программы являются грани фигур.

Это означает, что когда я хочу нарисовать куб, я получаю список из 6 элементов, каждый из которых представляет собой грань, и каждая грань содержит 4 точки (x, y, z) для каждой точки.

Рисунок выполнен, но я пытаюсь реализовать функцию поперечного сечения, пока фигура результата после поперечного сечения представляет собой полые объекты. Как я могу получить результаты поперечного сечения, как если бы формы не были полыми?


person Mahmoud Hassan    schedule 23.10.2013    source источник
comment
поэтому вы хотите обрезать часть объекта и заполнить внутреннюю пустоту лицом   -  person ratchet freak    schedule 23.10.2013


Ответы (2)


OpenGL не знает "объектов". Он не знает «твердый» или «полый». Все, что знает OpenGL, это точки, линии и треугольники. Если вы хотите, чтобы ваш объект выглядел сплошным, вам придется рассчитать геометрию объекта в разрезе, в результате чего получится новая сетка, которую вы используете в качестве входных данных для рисования.

Процесс вырезания является частью набора операций, известных как «логические геометрические операции», также называемых «конструктивной твердотельной геометрией». Если вы Google для этого, вы найдете много информации.

person datenwolf    schedule 23.10.2013

Я считаю, что вы пытаетесь достичь некоторого логическая операция для 2 объектов геометрии. Для этого в Boost есть отличная библиотека геометрии, и вам понадобится один из этих алгоритмов: diff или пересечение. Учитывая примеры, их легко изменить для вашей конкретной структуры объекта.

person yuyoyuppe    schedule 08.11.2013