я использую QGLWidget
Чтобы нарисовать трехмерные объекты, входные данные для моей программы — это грани фигур.
Это означает, что когда я хочу нарисовать куб, я получил список из 6 элементов, каждый из которых представляет грань, и каждая грань содержит 4 точки (x, y, z) для каждой точки.
Рисование выполнено, но я пытаюсь реализовать функцию поперечного сечения, пока форма результата после поперечного сечения является полыми объектами. Как я могу получить результаты поперечного сечения, как если бы фигуры не были полыми?
OpenGL не знает «объекты». Он не знает, «твердый» или «полый». Все, что знает OpenGL — это точки, линии и треугольники. Если вы хотите, чтобы ваш объект казался сплошным, вам придется рассчитать геометрию обрезанного объекта, в результате чего получится новая сетка, которую вы будете использовать в качестве входных данных для рисования.
Процесс обрезки является частью набора операций, известных как «логические геометрические операции», также называемых «конструктивной геометрией твердого тела». Если вы Google для этого, вы найдете много информации.
Я верю, что вы пытаетесь достичь булева операция на 2 геометрических объекта. Для этого в Boost есть идеальная библиотека геометрии, и вам нужен один из следующих алгоритмов: разница или же пересечение.
Учитывая примеры, легко изменить их для вашей конкретной структуры объекта.