Кажется, есть некоторые библиотеки, включая CGAL, для создания сеток из 2D или 3D модели.
Вопрос: В среде C ++, каков наилучший способ получить набор регулярных узлов для представления объекта, заданного в формате 3D-файла, таком как STL?
Чтобы объяснить вопрос, позвольте мне привести пример. В 2D-случае квадрат может быть представлен набором «1», а пустое пространство может быть набором «0».
Есть ли библиотека C ++, которая может справиться с этой задачей?
00000000000000
00000111000000
00000111000000
00000111000000
00000000000000
Заранее спасибо.
CGAL Само по себе это уже очень хороший вариант, если вы можете соответствовать лицензии (многие модули являются GPL или должны платить за использование в личных целях). Этот ответ показывает пример использования.
Еще одна полная библиотека Библиотека точечных облаков (PCL) (лицензия совместима с коммерческой). Если ваши входные данные упорядочены (как показано в вопросе), вы можете использовать pcl::OrganizedFastMesh
учебный класс.
Если ваши данные не упорядочены,
затем pcl::GreedyProjectionTriangulation
может быть лучше.
Наконец, если вы используете PCL, вы можете сохранить вашу треугольную сетку в STL, используя [pcl::io::savePolygonFileSTL
] (http://docs.pointclouds.org/1.7.0/group__io.html#ga3223bdca3003262efbd8c475d4ab7cc6].
В заключение, лучше, чем пытаться найти библиотеку, которая точно соответствует вашему формату ввода, найти библиотеку, которая может генерировать желаемый результат, а затем приспособить ваш ввод и вывод к нему через конвертеры. Конечно, если ваши данные не содержат требуемых данных, таких как нормали, вы должны либо вычислить их ранее, либо искать другой метод;).
Других решений пока нет …