Предположим, у вас есть трехмерный объект, представленный в виде трехмерной сетки в некотором распространенном формате файла. Как бы вы разработали алгоритм для разложения сетки на одну или несколько 2D-сетей, то есть 2-мерное представление, которое можно вырезать и сложить для создания исходного 3D-объекта.
Среди прочего, алгоритм должен учитывать:
- Несколько возможных декомпозиций для любого заданного объекта
- Обработка установки сетки на холсты фиксированного размера (листы бумаги).
- Распознавание, когда две панели в сети перекрываются (и, следовательно, являются недействительными).
- Разбиение сетки на несколько цепей, если они не могут быть представлены как одна из-за перекрытия или ограничений размера страницы.
- Генерация вкладок в соответствующих местах, для присоединения смежных граней.
Очевидный вырожденный случай — просто создать по одной сети на грань с выступами на половине ребер. Очевидно, что это не идеально: идеальный случай — это одна непрерывная сеть. Реальность для сложных форм, вероятно, будет где-то посередине.
Я понимаю, что поиск оптимальной сети (наименьшее количество сетей / наименьшее количество страниц), вероятно, требует больших вычислительных ресурсов, но хорошей эвристики для поиска «достаточно хороших» сетей будет достаточно.